chronos-go는 Go를 위한 Redis 기반 분산 태스크 큐·스케줄러입니다 — 타입 안전 태스크, 리더를 선출하는 스케줄러, 크래시 복구, 그리고 Chains & Groups.
chronos-go runs in every pod — only the leader (★) enqueues each trigger once; standby pods take over on failure.
기능
asynq의 현대적 대안 — 타입 안전하고, 분산되며, 안정적입니다.
태스크 타입을 정의하고 Handler[T]를 등록하세요. interface{} payload도, 수동 unmarshal도 없습니다.
interval·cron 작업. Redis 리더 선출로 각 트리거를 오직 한 인스턴스만 enqueue합니다.
지수 백오프+지터, XAUTOCLAIM 크래시 복구, 훅이 달린 dead-letter.
순차 체인과 병렬 그룹, 단계 간 결과 전달까지.
해시태그 키로 큐를 한 슬롯에 모아 멀티키 Lua가 원자적으로 유지됩니다.
메트릭, Inspector API, 그리고 큐·태스크용 chronos CLI.
왜 chronos-go인가
asynq은 유지보수 모드입니다. chronos-go는 단순한 모델은 지키고 빈틈을 메웁니다.
| asynq | chronos-go | |
|---|---|---|
| 분산 스케줄러 (run-once) | ✗ | ✓ |
| 제네릭 타입 안전 태스크 | ✗ | ✓ |
| Stream·dead-letter 증가 제한 | — | ✓ |
| 장시간 처리 중 unique 락 갱신 | ✗ | ✓ |
| 활발한 유지보수 | maintenance | ✓ |
동작 원리
즉시 작업은 Redis Stream을 타고, 지연·재시도·보관 태스크는 sorted set에 있습니다. forwarder가 도래한 항목을 승격하고, recoverer가 죽은 워커의 태스크를 회수합니다.
문서를 읽고 Go 서비스에 안정적인 백그라운드 작업을 추가하세요.