Skip to content
Firefly scheduler architecture map

Java 21 scheduler / UTC cursor / Netty executor / JDBC HA

Firefly

A lightweight scheduling service with clear module boundaries. Firefly separates job definitions, runtime cursors, executor connections, shard leases, and operational APIs so scheduled work stays understandable and reliable.

Java 21pure Java scheduler coreIANA ZoneIdjob-level time-zone semanticsJDBC HAlease and fencing tokenAdmin APIexternal console and JSON API

Built for a scheduler center, light enough to embed

Firefly can run inside a business process or as a standalone scheduling center. The core does not bind to Spring, HTTP, databases, or a specific transport; those capabilities evolve in integration, transport, store, and plugin modules.

core

Stable scheduling semantics

Cron, fixed-rate, misfire, concurrency policy, and job-level time zones live in the pure Java core.

transport

Executor-initiated connections

Business services actively register with the gateway through Netty, so they do not need to expose listener ports.

store

JDBC as the cluster source of truth

Job definitions, runtime cursors, shard leases, executions, outbox records, and audits can all be persisted.

One path from local runs to clustered deployment

Start locally with memory or H2, then switch to PostgreSQL or MySQL and split nodes by api, gateway, and scheduler roles.

.\gradlew.bat :server:launcher:run.\gradlew.bat :server:launcher:run --args="--firefly.config.profile=h2"Admin UI: http://127.0.0.1:9720Admin API: http://127.0.0.1:9710Metrics: http://127.0.0.1:9711/metrics

Why Firefly

Time correctness first

Jobs explicitly declare IANA ZoneId values, while runtime state uses UTC Instant values.

Restrained core

scheduler-core does not depend on web frameworks, IOC containers, databases, or monitoring systems.

Operational visibility

Admin UI, Admin HTTP API, Prometheus metrics, and audit logs form a separate operational surface.

How it compares

Firefly does not try to become a large workflow platform. It is a lightweight scheduler center for Java systems, remote executor management, job-level time correctness, and clear module boundaries.

DimensionFireflyTraditional schedulersWorkflow orchestrators
PositioningLightweight task scheduling serviceOperational task platformComplex DAG and dataflow orchestration
IntegrationEmbedded, Spring Boot, standalone Server, remote ExecutorUsually center service plus executor agentTasks must fit workflow models
BoundaryPure Java core with independent plugins and transportsPlatform features often couple with scheduling coreScheduling, dependency graph, and state machine are deeply tied

Start scheduling with Firefly

Run the local Server and Admin UI first, then connect Spring Boot jobs or Netty remote executors.

Released under the Apache-2.0 License.