Framework

Async method execution

Quartz Framework provides an annotation-based mechanism for running methods asynchronously using the @Async annotation. It supports thread pool management and is integrated with the Quartz TaskFactory system.


Enabling Async Support

To enable async method execution, annotate any bean (e.g. your @QuartzPlugin class) with @EnableAsyncMethods:

@EnableAsyncMethods
@QuartzPlugin
public class MyPlugin extends SpigotPlugin { ... }

This activates the internal AsyncAspect, allowing Quartz to intercept and offload method executions to background threads.


Using @Async

Mark any method with @Async to execute it in a background thread:

@Async
public void performAsyncWork() {
    log.info("Running async logic");
}

You can also specify the executor name (previously registered in the TaskFactory):

@Async(executorName = "io-bound-tasks")
public void heavyIO() {
    // background work
}

Return Types

Quartz allows the following method signatures for async execution:

Return TypeBehavior
voidRuns in background, returns immediately
Future<T> / CompletableFuture<T>Executed normally, Quartz does not wrap it, allowing chaining

Other return types are not allowed and will trigger an AsyncException.

Future-based Execution

@Async
public CompletableFuture<String> fetchData() {
    return CompletableFuture.supplyAsync(() -> "data");
}

Thread Pool Registration

Quartz provides a default async executor named default-async-pool, but you can register custom ones:

ScheduledTaskExecutorService pool = new DefaultScheduledTaskExecutorService(4);
taskFactory.register("io-bound-tasks", pool);
Previous
Property Configuration Binding