Kiến trúc · Outbox

Outbox thay cho giao dịch kép

Mẫu outbox với MassTransit CustomerService ghi Customers và OutboxMessage trong cùng một transaction; tiến trình nền đọc bảng outbox mỗi giây, publish lên RabbitMQ, đánh dấu đã gửi, và consumer idempotent nhận message. MỘT TRANSACTION ĐỌC MỖI 1S ĐÃ GỬI PUBLISH CustomerService SaveChangesAsync() Customers dữ liệu nghiệp vụ OutboxMessage CustomerCreated Outbox delivery tiến trình nền RabbitMQ exchange · queue Consumer SendWelcomeEmail Hai dòng cùng commit hoặc cùng rollback. Chết sau commit: message vẫn nằm trong bảng và được publish khi khởi động lại. Có thể nhận một message hai lần: consumer phải idempotent. CHÚ GIẢI Dịch vụ Bảng database Bảng outbox Broker Cập nhật trạng thái © tiennhm