Trong cố gắng để có được đầu của tôi xung quanh CQRS (và DDD nói chung) Tôi đã đi qua các tình huống khi hai sự kiện xảy ra trên tổng hợp khác nhau nhưng thứ tự của họ có ý nghĩa tên miền. Nếu vậy thì chúng có thể xảy ra quá gần nhau đến nỗi dấu thời gian (được sử dụng bởi các triển khai mẫu mà tôi đã thấy) không thể phân biệt chúng, có nghĩa là cửa hàng sự kiện không chứa đại diện 'hoàn chỉnh' của miền vì có sự mơ hồ về thứ tự trong đó sự kiện đã xảy ra.Trong CQRS (sự kiện có nguồn gốc), bạn có cần một bộ đếm chuỗi toàn cầu trong cửa hàng sự kiện không?
Ví dụ: tên miền có thể kích hoạt CustomerCreatedEvent
áp dụng cho tổng hợp Customer
và sau đó là sự kiện CustomerAssignedToAgent
trên tổng hợp Agent
. Sự kiện CustomerAssignedToAgent
không có ý nghĩa nếu nó xảy ra trước CustomerCreatedEvent
, nhưng thông thường cả hai sự kiện này có thể được kích hoạt do một hoạt động khiến cho các dấu thời gian có hiệu quả giống nhau.
Vì vậy, tôi chỉ đang mô hình hóa những điều tồi tệ? Nên có bao giờ có một tình huống mà chuỗi các sự kiện trên tổng hợp khác nhau là quan trọng? Hoặc bạn nên giữ một số thứ tự toàn cầu trên cửa hàng sự kiện của bạn, để bạn có thể xác định trình tự chính xác trong đó các sự kiện đã xảy ra?
Cảm ơn Szymon, tôi nghĩ đó là trường hợp có khả năng nhất! –
Tôi đã đọc rất nhiều lần, nhưng ... khi bạn sử dụng EventStore làm hàng đợi để tiêu thụ các sự kiện từ các bối cảnh bị chặn khác, hoặc thậm chí cho cùng BC mà chúng được tạo ra, làm sao bạn có thể chắc chắn theo thứ tự? bạn không cần chúng theo thứ tự rất nghiêm ngặt, nhưng ít nhất bạn cũng cần có khả năng tiêu thụ chúng từ một bù đắp nhất định. – Papipo