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.