Skip to content

Thiết kế: Machine Management

Tài liệu này mô tả thiết kế hệ thống quản lý và đồng bộ trạng thái máy gắp gấu.

1. Lưu trữ và Truyền tải

1.1 Redis Persistence

Trạng thái máy được lưu dưới dạng Hash trong Redis để tối ưu việc đọc/ghi đồng thời từ nhiều service (ControlServer, Backend).

Field Type Description
id String ID duy nhất của máy
status Enum ONLINE, GAMING, FAULT, OFFLINE
lastMsg Instant Thời gian cuối cùng nhận được packet từ máy
ip String IP của máy gắp gấu

1.2 JMS Communication

Sử dụng ActiveMQ Artemis với các Virtual Topics để điều phối tập trung. - Upstream (Machine -> Backend): - queue-control-server-gameplay - queue-control-server-health-check - Downstream (Backend -> Machine): - Queue tên: queue-control-server-{machineId}

2. Luồng xử lý Heartbeat

  1. Máy gửi heartbeat packet mỗi 5-10 giây.
  2. ConnectedClient cập nhật lastMsg vào Redis.
  3. Nếu quá timeout, PhysicMachineThread sẽ đánh dấu máy là OFFLINE và đóng socket.

3. Quản lý lỗi phần cứng

Các tin nhắn ErrorReport từ máy được dịch thành các cảnh báo (Alerts) và gửi về hệ thống Admin thông qua JMS.