How aryan9787/concurrent-job-queue-engine works
This is a Spring-based persistent job queue. Clients submit, list, and revive jobs or register workers through REST controllers; workers claim due jobs, dispatch them to type-specific handlers, and report completion or failure. Retry timing and leases support re-execution, while scheduled recovery and load-based scaling maintain worker capacity. The graph follows the sampled service, worker, and repository references; handler execution and some scheduler wiring are represented only where the source index or excerpts support them.
Main entry points: JobService.java Job service · WorkerRepository.java Worker repository · WorkerManager.java Worker manager · JobRepository.java Job repository
Components 21
REST API
- Job endpoints
src/main/java/com/ayush/jobqueue/controller/JobController.java - Worker endpoints
src/main/java/com/ayush/jobqueue/controller/WorkerController.java - Revive request
src/main/java/com/ayush/jobqueue/DTO/JobReviveRequest.java - Registration request
src/main/java/com/ayush/jobqueue/DTO/WorkerRegisterRequest.java
Job Lifecycle
- Job service
src/main/java/com/ayush/jobqueue/service/JobService.java - Handler registry
src/main/java/com/ayush/jobqueue/handler/HandlerRegistry.java - Handler contract
src/main/java/com/ayush/jobqueue/handler/JobHandler.java - Typed handlers
src/main/java/com/ayush/jobqueue/handler
Worker Runtime
- Worker manager
src/main/java/com/ayush/jobqueue/Workers/WorkerManager.java - Worker loop
src/main/java/com/ayush/jobqueue/Workers/WorkerThread.java - Worker service
src/main/java/com/ayush/jobqueue/service/WorkerService.java
Recovery and Scaling
- Scaling scheduler
src/main/java/com/ayush/jobqueue/scheduler/ScalingScheduler.java - Scaling service
src/main/java/com/ayush/jobqueue/service/ScalingService.java - Recovery scheduler
src/main/java/com/ayush/jobqueue/scheduler/RecoveryScheduler.java - Recovery service
src/main/java/com/ayush/jobqueue/service/RecoveryService.java
Persistence
- Job repository
src/main/java/com/ayush/jobqueue/repository/JobRepository.java - Worker repository
src/main/java/com/ayush/jobqueue/repository/WorkerRepository.java - Job state
src/main/java/com/ayush/jobqueue/entity/Job.java - Worker state
src/main/java/com/ayush/jobqueue/entity/Worker.java
Other components
- Queue client
- Relational database
Connections 30
- Queue client → Job endpoints: submits jobs
src/main/java/com/ayush/jobqueue/controller/JobController.java - Queue client → Worker endpoints: registers workers
src/main/java/com/ayush/jobqueue/controller/WorkerController.java - Job endpoints → Job service: delegates requests
src/main/java/com/ayush/jobqueue/controller/JobController.java - Worker endpoints → Worker service: delegates requests
src/main/java/com/ayush/jobqueue/controller/WorkerController.java - Job endpoints → Revive request: accepts revive data
src/main/java/com/ayush/jobqueue/controller/JobController.java - Worker endpoints → Registration request: accepts registration
src/main/java/com/ayush/jobqueue/controller/WorkerController.java - Job service → Handler registry: gets retry limit
src/main/java/com/ayush/jobqueue/service/JobService.java - Handler registry → Handler contract: indexes handlers
src/main/java/com/ayush/jobqueue/handler/HandlerRegistry.java - Typed handlers → Handler contract: implements contract
src/main/java/com/ayush/jobqueue/handler/EmailJobHandler.java - Worker loop → Job service: claims and updates jobs
src/main/java/com/ayush/jobqueue/Workers/WorkerThread.java - Worker loop → Handler registry: dispatches job types
src/main/java/com/ayush/jobqueue/Workers/WorkerThread.java - Worker loop → Worker service: sends heartbeats
src/main/java/com/ayush/jobqueue/Workers/WorkerThread.java - Worker manager → Worker service: registers worker
src/main/java/com/ayush/jobqueue/Workers/WorkerManager.java - Worker manager → Worker loop: starts worker loop
src/main/java/com/ayush/jobqueue/Workers/WorkerManager.java - Worker manager → Job service: provides job service
src/main/java/com/ayush/jobqueue/Workers/WorkerManager.java - Worker manager → Handler registry: provides handlers
src/main/java/com/ayush/jobqueue/Workers/WorkerManager.java - Scaling scheduler → Scaling service: triggers evaluation
src/main/java/com/ayush/jobqueue/scheduler/ScalingScheduler.java - Scaling service → Job repository: counts pending jobs
src/main/java/com/ayush/jobqueue/service/ScalingService.java - Scaling service → Worker repository: checks worker capacity
src/main/java/com/ayush/jobqueue/service/ScalingService.java - Scaling service → Worker manager: starts workers
src/main/java/com/ayush/jobqueue/service/ScalingService.java - Recovery scheduler → Recovery service: triggers recovery
src/main/java/com/ayush/jobqueue/scheduler/RecoveryScheduler.java - Recovery service → Job repository: recovers jobs
src/main/java/com/ayush/jobqueue/service/RecoveryService.java - Recovery service → Worker repository: checks workers
src/main/java/com/ayush/jobqueue/service/RecoveryService.java - Job service → Job repository: reads and writes jobs
src/main/java/com/ayush/jobqueue/service/JobService.java - Job service → Worker repository: loads worker for claim
src/main/java/com/ayush/jobqueue/service/JobService.java - Worker service → Worker repository: reads and writes workers
src/main/java/com/ayush/jobqueue/service/WorkerService.java - Job repository → Job state: persists job records
src/main/java/com/ayush/jobqueue/repository/JobRepository.java - Worker repository → Worker state: persists worker records
src/main/java/com/ayush/jobqueue/repository/WorkerRepository.java - Job repository → Relational database: queries and stores
src/main/java/com/ayush/jobqueue/repository/JobRepository.java - Worker repository → Relational database: queries and stores
src/main/java/com/ayush/jobqueue/repository/WorkerRepository.java