Kế hoạch triển khai: Game & Room Management Feature
1. Hiện trạng
Triển khai hiện có
RoomCmdConsumer với 8+ @OnCmd handlers cho room lifecycle.
CreateRoomService routing qua prize allocation queues.
CreateRoomValidationService validate trước khi enqueue.
CreateRoomJMSService xử lý JMS side.
- Dynamic queue registration per machine/game mode.
- Room state in Redis (
RRoomModel).
Vấn đề đã biết
| # |
Vấn đề |
Mức độ |
| 1 |
Reason codes không chuẩn hóa (hardcoded strings) |
Medium |
| 2 |
fakeMachine/skipLifeGauge không có production guard |
High |
| 3 |
Room state bị mất khi restart batch service |
Medium |
| 4 |
Dynamic queue không tự update khi add machine runtime |
Medium |
2. Kế hoạch cải tiến
Phase 1: Validation hardening
- Task 1-1: Chuẩn hóa tất cả reason codes thành enum/constants
- Task 1-2: Guard
fakeMachine + skipLifeGauge bằng environment check
Phase 2: Stability
- Task 2-1: Bổ sung metrics: room creation latency, validation fail rate per reason
- Task 2-2: Alert khi queue lag vượt ngưỡng
Phase 3: Dynamic queue
- Task 3-1: Trigger re-registration khi admin tạo machine mới (không cần restart)
- Task 3-2: Health check endpoint cho JMS listener status
Phase 4: Testing
- Task 4-1: Integration test PVE Free Play create/join/ready/quit
- Task 4-2: Integration test PVE Single Play với streaming prize (PRIZE_FOR_STREAMER queue)
- Task 4-3: Test rollback khi QUIT_GAME mid-game
3. Quan hệ phụ thuộc
graph TD
T1_1[Task 1-1: Reason codes] --> T4_1
T1_2[Task 1-2: Fake machine guard] --> T4_2
T2_1[Task 2-1: Metrics] --> T2_2
T2_2[Task 2-2: Alerts]
T3_1[Task 3-1: Dynamic queue runtime] --> T3_2
T3_2[Task 3-2: Health check]
T4_1[Task 4-1: Free Play test]
T4_2[Task 4-2: Single Play test]
T4_3[Task 4-3: Rollback test]
4. Timeline
gantt
title Room Management - Improvement Plan
dateFormat YYYY-MM-DD
section Phase 1 Validation
Task 1-1 Reason codes :crit, t1_1, 2025-01-01, 2d
Task 1-2 Fake machine :crit, t1_2, after t1_1, 1d
section Phase 2 Stability
Task 2-1 Metrics :t2_1, after t1_2, 2d
Task 2-2 Alerts :t2_2, after t2_1, 1d
section Phase 3 Dynamic Queue
Task 3-1 Runtime register :t3_1, after t1_2, 3d
Task 3-2 Health check :t3_2, after t3_1, 1d
section Phase 4 Testing
Task 4-1 Free Play test :t4_1, after t1_1, 2d
Task 4-2 Single Play test :t4_2, after t4_1, 2d
Task 4-3 Rollback test :t4_3, after t4_2, 2d
5. Rủi ro
| Rủi ro |
Ảnh hưởng |
Biện pháp |
| Queue lag PRIZE_FOR_STREAMER |
Tạo room chậm khi streaming |
Tune concurrency + monitor lag |
| Redis restart → room state mất |
Game bị drop |
Add Redis persistence / reload mechanism |
fakeMachine on prod |
Game cheat |
Env guard + audit log |
| Missing reason codes |
Client không biết xử lý lỗi |
Chuẩn hóa reason code enum |