How soullose/task-scheduler-job works
This Spring-based in-process task scheduler loads and validates task definitions, registers enabled cron or fixed-interval triggers, and runs task handlers asynchronously with concurrency control, timeout, retries, and execution records. Its main path is configuration source → scheduler and registry → execution wrapper → handler; startup-only tasks and manual triggers also enter the executor. The REST admin path persists task edits and reloads the scheduler. Persistence and monitoring components are included; unsampled wiring is omitted where the tree and README do not establish it.
Main entry points: DefaultSchedulerService.java Scheduler service · TaskAdminService.java Admin service · TaskExecutorWrapper.java Execution wrapper · TaskConfigSource.java Task source
Components 21
Task administration
- Admin REST API
src/main/java/com/w3/taskscheduler/admin/TaskAdminController.java - Admin service
src/main/java/com/w3/taskscheduler/admin/TaskAdminService.java
Task configuration
- Task source
src/main/java/com/w3/taskscheduler/core/config/TaskConfigSource.java - Database loader
src/main/java/com/w3/taskscheduler/core/config/DatabaseTaskConfigLoader.java - YAML loader
src/main/java/com/w3/taskscheduler/core/config/TaskConfigLoader.java
Scheduling runtime
- Scheduler service
src/main/java/com/w3/taskscheduler/core/scheduler/DefaultSchedulerService.java - Task registry
src/main/java/com/w3/taskscheduler/core/scheduler/TaskRegistry.java - Scheduled task handler
src/main/java/com/w3/taskscheduler/core/scheduler/ScheduledTaskHandler.java - Scheduler lifecycle
src/main/java/com/w3/taskscheduler/core/scheduler/SchedulerLifecycle.java
Execution and handlers
- Execution wrapper
src/main/java/com/w3/taskscheduler/core/exec/TaskExecutorWrapper.java - Task invoker
src/main/java/com/w3/taskscheduler/core/invoke/TaskInvoker.java - Task handlers
src/main/java/com/w3/taskscheduler/jobs/handler/DataSyncHandler.java - History cleanup
src/main/java/com/w3/taskscheduler/jobs/handler/JobExecutionCleanupHandler.java
Persistence and monitoring
- Task definitions DB
src/main/java/com/w3/taskscheduler/core/persistence/repository/SchedulerJobRepository.java - Execution event writer
src/main/java/com/w3/taskscheduler/core/history/JobExecutionEventWriter.java - Execution history store
src/main/java/com/w3/taskscheduler/core/history/ExecutionHistoryStore.java - Execution repository
src/main/java/com/w3/taskscheduler/core/persistence/repository/ExecutionRecordRepository.java - Execution records DB
src/main/java/com/w3/taskscheduler/core/persistence/entity/JobExecutionPO.java - Scheduler metrics
src/main/java/com/w3/taskscheduler/monitor/SchedulerMetrics.java
Other components
- Admin client
- YAML task definitions
Connections 23
- Admin client → Admin REST API: manages tasks
- Admin REST API → Admin service: routes requests
- Admin service → Task definitions DB: reads and writes
- Admin service → Database loader: validates rows
- Admin service → Scheduler service: reloads or triggers
- Scheduler service → Task source: loads definitions
- Task source → Database loader: tries database
- Task source → YAML loader: uses fallback
- Database loader → Task definitions DB: reads definitions
- YAML loader → YAML task definitions: reads definitions
- Scheduler service → Task registry: registers and diffs
- Task registry → Scheduled task handler: dispatches triggers
- Scheduled task handler → Execution wrapper: submits executions
- Scheduler service → Execution wrapper: submits startup or manual runs
- Execution wrapper → Task invoker: invokes handler
- Task invoker → Task handlers: calls task code
- Task invoker → History cleanup: calls task code
- Execution wrapper → Execution event writer: records outcomes
- Execution event writer → Execution history store: writes events
- Execution history store → Execution repository: persists records
- Execution repository → Execution records DB: reads and writes
- History cleanup → Execution repository: deletes old successes
- Scheduler lifecycle → Scheduler service: starts and stops