For the complete documentation index, see llms.txt. This page is also available as Markdown.

Schedulers

Register scheduled tasks in your BoxLang module (Java only)

Schedulers provide cron-like scheduled task execution. They integrate with BoxLang's SchedulerService.

Creating a Scheduler

Implement the IScheduler interface and register via ServiceLoader:

File: src/main/java/ortus/boxlang/modules/mymodule/schedulers/CleanupScheduler.java

import ortus.boxlang.runtime.async.tasks.IScheduler;
import ortus.boxlang.runtime.async.tasks.BaseScheduler;
import ortus.boxlang.runtime.async.tasks.ScheduledTask;

public class CleanupScheduler extends BaseScheduler {

    @Override
    public void configure() {
        // Schedule a task every hour
        ScheduledTask task = task( "cleanup-temp-files" )
            .call( () -> {
                System.out.println( "Cleaning up temp files..." );
                // Cleanup logic
            })
            .everyHour()
            .onFailure( ( task, exception ) -> {
                getLogger().error( "Cleanup failed", exception );
            });

        register( task );
    }
}

ServiceLoader Config: src/main/resources/META-INF/services/ortus.boxlang.runtime.async.tasks.IScheduler

Scheduler Naming

Schedulers are automatically registered with the name {schedulerName}@{moduleName}. For example, a CleanupScheduler in a module named myModule is registered as CleanupScheduler@myModule.

Available Patterns

The BaseScheduler provides a fluent API for common scheduling patterns:

Next Steps

  • Services — Global runtime services (Java only)

  • Cache Providers — Custom caching backends (Java only)

  • JDBC Drivers — Database driver registration (Java only)

Last updated

Was this helpful?