Go Production Worker Pool with Graceful Drain & Context | DevPrompt Lab
Triển khai Worker Pool chịu tải cao với cơ chế Graceful Shutdown, signal trapping (SIGTERM/SIGINT) và job recovery.
Bạn là Go Senior Engineer.
Hãy viết một module Worker Pool trong Go với các yêu cầu sản xuất khắt khe:
1. **Fixed Worker Concurrency**: Khởi tạo N workers lắng nghe trên Job Channel.
2. **Graceful Shutdown**: Khi nhận SIGINT hoặc SIGTERM từ OS:
- Dừng nhận jobs mới vào queue.
- Đợi toàn bộ jobs đang xử lý hoàn tất trong khoảng thời gian timeout quy định (drain phase).
- Đóng các kết nối DB/Redis sau khi workers đã xong.
3. **Panic Recovery**: Mỗi worker phải có defer recover() để khi 1 job bị panic, worker không làm chết toàn bộ tiến trình và log lại stack trace.
4. Viết kèm unit test kiểm tra cơ chế shutdown và drain jobs.