TRUSTED FACTORYFLOW
Sự kiện. Giữ đúng nguồn và thứ tự.
Phân biệt sự kiện miền, callback hãng và telemetry để tránh ghi trùng hoặc xác nhận sai nghiệp vụ.
Ba loại thông điệp, ba cách xử lý.
| Loại | Nguồn và ý nghĩa | Điều kiện áp dụng |
|---|---|---|
| Domain event | Dịch vụ miền phát sau giao dịch, mô tả sự thật nghiệp vụ. | Outbox/inbox và consumer idempotency; consumer không ghi chéo DB. |
| Vendor callback | Adapter/hãng báo trạng thái thiết bị hoặc mission. | Xác thực nguồn, kiểm eventId/version và mapping trước cập nhật miền. |
| Telemetry | Dòng quan sát vị trí, pin hoặc tín hiệu theo thời điểm. | Có độ mới và đơn vị; không tự là xác nhận giao nhận/tồn kho. |
Catalogue sự kiện tham chiếu.
Dotted name là tên truyền tham chiếu; PascalCase là alias tài liệu cũ. Không phát cả hai như hai sự kiện độc lập. Tên triển khai được thống nhất trong contract dự án.
| eventType | Alias tài liệu | Chủ sở hữu | Ý nghĩa |
|---|---|---|---|
| wms.task.released | WmsTaskReleased | WMS Task | Task được phát hành, chưa hoàn tất. |
| mission.status.changed | MissionStatusChanged | Fleet | Đối soát version/thứ tự trước cập nhật execution. |
| device.command.acked | DeviceCommandAcked | Adapter | Đã nhận lệnh, chưa chứng minh hiệu ứng thiết bị. |
| edge.replay.conflict | EdgeReplayConflict | Edge / domain người phụ trách | Cách ly xung đột và giao chủ dữ liệu quyết định. |
| evidence.package.closed | EvidencePackageClosed | Evidence | Manifest đã đóng, không đồng nghĩa đã chuyển giao. |
Nhận đúng một lần về mặt nghiệp vụ.
Transport có thể gửi lại. Inbox kiểm eventId, source và phạm vi; entityVersion cũ không được ghi lùi trạng thái. Mất thứ tự cần đọc snapshot hoặc giữ chờ theo contract. Không suy exactly-once business chỉ từ tính năng Kafka.
DLQ và replay có người quyết định.
Ghi lỗi schema/mapping và nguồn, sửa nguyên nhân rồi duyệt tập replay. Giữ eventId, correlation và checkpoint; replay không tự tạo ID mới để vượt khử trùng. Nếu kết quả thiết bị chưa rõ, đối soát trước phát lại lệnh.