Cross-Package Messaging (Kafka / CDC)
Trang cần viết lại sâu hơn
Trang này trước đây ghi một hệ thống queue BullMQ packages/core/src/common/queues/ (CommerceQueueDefinitions, FinanceQueueDefinitions, tên queue phân vùng, v.v.). Hệ thống đó không còn tồn tại. Đường nối xuyên package của core hiện là Kafka (sự kiện domain) và Debezium CDC. Nội dung bên dưới là một stub đã sửa; tham chiếu đầy đủ theo từng topic vẫn còn phải viết. Nguồn sự thật: packages/core/AGENTS.md và src/common/kafka/.
Messaging nằm ở đâu
| Mối quan tâm | Source | Exports |
|---|---|---|
| Topic sự kiện domain | src/common/kafka/topics.ts | KafkaTopics |
| Topic CDC | src/common/kafka/topics.ts | CDCKafkaTopics |
| Kiểu message | src/common/kafka/types.ts | Kiểu message Kafka dùng chung |
| Hằng bảng CDC | src/common/cdc/tables.ts | CdcTables |
| Định nghĩa sự kiện | src/common/events/ | commerce-events.ts, ledger-events.ts, payment-events.ts, websocket-events.ts |
| Event bus | src/helpers/event-bus/ | IEventBus + adapter Redis Pub/Sub |
KafkaTopics
Hằng tên topic sự kiện domain cộng một helper build({ paths }) prefix tên topic với nx.seller. Ví dụ sự kiện domain: PAYMENT_SUCCESS, INVENTORY_ISSUED_FOR_SALE, LEDGER_GENERATE, MATERIAL_STOCK_CHANGED.
import { KafkaTopics } from '@nx/core';
const topic = KafkaTopics.build({ paths: [KafkaTopics.PAYMENT_SUCCESS] });
// => prefix với "nx.seller"CDCKafkaTopics
Tên topic change-data-capture Debezium, dựng từ CdcTables (vd MERCHANT, PRODUCT, SALE_ORDER). Service subscribe topic CDC để phản ứng với thay đổi cấp hàng trong bảng của domain khác.
Event Bus
Cho pub/sub in-process (không phải Kafka), @nx/core expose interface IEventBus với một adapter Redis Pub/Sub. Xem Event Bus.