How learnerview/simplydone4j works
SimplyDone4J is an embeddable Spring Boot background-job engine backed by Redis, not a standalone service. An application submits a job and registers its handler; the engine admits and stores it, schedules it by weighted priority, and executes it under a lease. Failures can be retried or sent to a dead-letter list, while Redis retains job and execution-history state. The README documents these capabilities; source excerpts confirm scheduler dispatch, Redis-backed repositories, and health reporting, but do not expose all runtime wiring, so uncertain links are omitted.
Main entry points: JobSubmissionServiceImpl.java Job submission · JobExecutorServiceImpl.java Job executor · SchedulerEngine.java Priority scheduler · RedisQueueRepository.java Priority queues
Components 19
Submission and admission
- Job submission
src/main/java/io/github/learnerview/simplydone4j/service/impl/JobSubmissionServiceImpl.java - Submission request
src/main/java/io/github/learnerview/simplydone4j/dto/JobSubmissionRequest.java - Idempotency reservation
src/main/java/io/github/learnerview/simplydone4j/service/impl/RedisIdempotencyServiceImpl.java - Job record
src/main/java/io/github/learnerview/simplydone4j/entity/JobEntity.java - Priority queues
src/main/java/io/github/learnerview/simplydone4j/repository/RedisQueueRepository.java
Scheduling and execution
- Priority scheduler
src/main/java/io/github/learnerview/simplydone4j/service/impl/SchedulerEngine.java - Job executor
src/main/java/io/github/learnerview/simplydone4j/service/impl/JobExecutorServiceImpl.java - Handler registry
src/main/java/io/github/learnerview/simplydone4j/handler/HandlerRegistry.java - Application handler
src/main/java/io/github/learnerview/simplydone4j/handler/JobHandler.java
Recovery and history
- Retry policy
src/main/java/io/github/learnerview/simplydone4j/service/impl/RetryServiceImpl.java - Worker maintenance
src/main/java/io/github/learnerview/simplydone4j/service/impl/WorkerMaintenanceServiceImpl.java - Dead-letter recovery
src/main/java/io/github/learnerview/simplydone4j/service/impl/DeadLetterServiceImpl.java - Execution history
src/main/java/io/github/learnerview/simplydone4j/repository/RedisJobExecutionLogRepository.java - Lifecycle events
src/main/java/io/github/learnerview/simplydone4j/event/JobEventPublisher.java
Redis and engine health
- Job repository
src/main/java/io/github/learnerview/simplydone4j/repository/RedisJobRepository.java - Redis
- Engine health
src/main/java/io/github/learnerview/simplydone4j/service/impl/EngineStatusServiceImpl.java - Engine configuration
src/main/java/io/github/learnerview/simplydone4j/autoconfigure/SimplyDoneProperties.java
Other components
- Spring application
Connections 23
- Spring application → Job submission: submits jobs
README.md - Spring application → Handler registry: registers handler
README.md - Job submission → Submission request: accepts request
src/main/java/io/github/learnerview/simplydone4j/service/impl/JobSubmissionServiceImpl.java - Job submission → Idempotency reservation: reserves key
src/main/java/io/github/learnerview/simplydone4j/service/impl/JobSubmissionServiceImpl.java - Job submission → Job repository: persists job
src/main/java/io/github/learnerview/simplydone4j/service/impl/JobSubmissionServiceImpl.java - Job submission → Priority queues: admits job
src/main/java/io/github/learnerview/simplydone4j/service/impl/JobSubmissionServiceImpl.java - Priority scheduler → Priority queues: claims batches
src/main/java/io/github/learnerview/simplydone4j/service/impl/SchedulerEngine.java - Priority scheduler → Job repository: loads claimed jobs
src/main/java/io/github/learnerview/simplydone4j/service/impl/SchedulerEngine.java - Priority scheduler → Job executor: dispatches jobs
src/main/java/io/github/learnerview/simplydone4j/service/impl/SchedulerEngine.java - Job executor → Application handler: invokes handler
src/main/java/io/github/learnerview/simplydone4j/service/impl/JobExecutorServiceImpl.java - Handler registry → Application handler: registers handlers
src/main/java/io/github/learnerview/simplydone4j/handler/HandlerRegistry.java - Job executor → Retry policy: records failures
- Worker maintenance → Retry policy: reaps leases
- Retry policy → Dead-letter recovery: exhausts attempts
- Job executor → Execution history: logs attempts
- Job submission → Lifecycle events: publishes lifecycle
src/main/java/io/github/learnerview/simplydone4j/service/impl/JobSubmissionServiceImpl.java - Job repository → Redis: stores job state
README.md - Priority queues → Redis: stores queue state
README.md - Idempotency reservation → Redis: stores reservations
README.md - Execution history → Redis: stores execution logs
- Engine health → Priority queues: reads queue depths
src/main/java/io/github/learnerview/simplydone4j/service/impl/EngineStatusServiceImpl.java - Engine health → Redis: checks reachability
src/main/java/io/github/learnerview/simplydone4j/service/impl/EngineStatusServiceImpl.java - Engine configuration → Priority scheduler: configures scheduling
src/main/java/io/github/learnerview/simplydone4j/service/impl/SchedulerEngine.java