Skip to content

Jakarta EE background jobs

RatchetInject one service. Submit a method reference.

Persistent, retrying background jobs on plain Jakarta EE. No proprietary dependencies, no message broker, and they run unchanged on whichever application server you already use.Persistent, retrying background jobs on plain Jakarta EE. No broker, no proprietary deps.

@Inject
JobSchedulerService scheduler;

scheduler
    .enqueue(() -> ship(orderId))
    .withMaxRetries(3)
    .submit();
@Inject
JobSchedulerService scheduler;

public void placeOrder(UUID orderId) {
    scheduler.enqueue(() -> orders.process(orderId))
        .withMaxRetries(3)
        .withBackoff(
            BackoffPolicy.EXPONENTIAL,
            Duration.ofSeconds(2))
        .withTags("orders", "fulfillment")
        .submit();
}

Standards-based and conformance-tested

WildFlyWildFly EE 11Open LibertyPayaraGlassFishMySQLPostgreSQLOracleSQL ServerMongoDB

  • 25 verified combinations5 runtimes × 5 databases
  • Three TCK tiersStore · API · Jakarta Runtime
  • Apache 2.0no paid tier
  • Java 17+Jakarta EE 10 / 11
  • Quarkus verifiedJVM + native image, 5 databases
See the conformance matrix →