How dragnozender/zensys---djsp works
ZenSys is a distributed scheduler for one-time, cron, and interval jobs. Users manage schedules and inspect run history through the dashboard or REST API. The main flow separates command ingestion and persistence from due-job scheduling, Kafka dispatch, worker execution, lifecycle-state persistence, and read queries. Retry delivery and executor-failure recovery form separate reliability paths. The graph follows the README and sampled code; unsampled service wiring is included only where the README documents it.
Main entry points: JobExecutionService.java Task Executor · ApiGatewayApplication.java API Gateway · ExecutorLivenessWatcher.java Executor Recovery · RetrySweeperService.java Retry Sweeper
Components 16
User Access
- Operations Dashboard
Frontend/src/App.tsx - API Gateway
Backend/api-gateway/src/main/java/com/zensys/api_gateway/ApiGatewayApplication.java - Service Registry
Backend/service-registry/src/main/java/com/zensys/service_registry/ServiceRegistryApplication.java
Job Commands
- Job Commands
Backend/job-service/src/main/java/com/zensys/job_service/service/JobService.java - Job Search
Backend/job-search-service/src/main/java/com/zensys/job_search_service/controller/JobSearchController.java - Command And Event Consumer
Backend/consumer-service/src/main/java/com/zensys/consumer_service/kafka/JobConsumer.java
Scheduling And Execution
- Schedule Watcher
Backend/watcher-service/src/main/java/com/zensys/watcher_service/service/JobWatcherService.java - Run Dispatcher
Backend/job-consumer-service/src/main/java/com/zensys/job_consumer_service/kafka/JobRunConsumer.java - Task Executor
Backend/executor-service/src/main/java/com/zensys/executor_service/service/JobExecutionService.java - Task Runner
Backend/executor-service/src/main/java/com/zensys/executor_service/runner/TaskRunner.java
Reliability
- Retry Sweeper
Backend/retry-service/src/main/java/com/zensys/retry_service/service/RetrySweeperService.java - Executor Recovery
Backend/watcher-service/src/main/java/com/zensys/watcher_service/service/ExecutorLivenessWatcher.java
State And Messaging
- PostgreSQL
- Redis
- Kafka
Other components
- Operator
Connections 23
- Operator → Operations Dashboard: manages jobs
- Operations Dashboard → API Gateway: calls REST
- API Gateway → Job Commands: routes writes
- API Gateway → Job Search: routes queries
- Job Commands → Kafka: publishes commands
- Kafka → Command And Event Consumer: delivers commands
- Command And Event Consumer → PostgreSQL: persists state
- Job Search → PostgreSQL: queries jobs and runs
- Schedule Watcher → PostgreSQL: claims due jobs
- Schedule Watcher → Kafka: publishes run events
- Kafka → Run Dispatcher: delivers run events
- Run Dispatcher → Task Executor: dispatches execution
- Task Executor → Task Runner: runs task
- Task Executor → Kafka: publishes lifecycle and retry events
- Kafka → Command And Event Consumer: delivers lifecycle events
- Kafka → Retry Sweeper: delivers retry events
- Retry Sweeper → Redis: leases delayed retries
- Retry Sweeper → Kafka: redispatches due runs
- Task Executor → Redis: writes heartbeats
- Executor Recovery → Redis: checks liveness
- Executor Recovery → PostgreSQL: recovers orphan runs
- Executor Recovery → Kafka: publishes recovery events
- Service Registry → API Gateway: service discovery