Ví dụ: Quy tắc kinh doanh quy định rằng khách hàng sẽ nhận được thông báo xác nhận (email hoặc tương tự) khi đặt hàng.CQRS - Thời điểm gửi tin nhắn xác nhận?
Cho phép nói rằng NewOrderRegisteredEvent
được gửi đi từ miền và được người nhận sự kiện gửi thông báo xác nhận. Khi đó được thực hiện một số xử lý sự kiện khác ném một ngoại lệ hoặc cái gì khác đi sai và đơn vị công việc được cuộn lại. Bây giờ chúng tôi đã gửi cho người dùng một thông báo xác nhận cho một cái gì đó đã được khôi phục.
Cách "cqrs" giải quyết các vấn đề như thế này nơi bạn muốn làm điều gì đó sau khi một đơn vị công việc đã được cam kết? Một yếu tố phức tạp khác là phát lại các sự kiện. Tôi không muốn gửi lại thông báo xác nhận cũ bất cứ khi nào tôi phát lại các sự kiện được ghi lại để xây dựng chế độ xem/chiếu mới.
Lý thuyết tốt nhất của tôi cho đến nay: Tôi vừa mới bắt đầu nhìn vào thế giới hấp dẫn của cqrs và tự hỏi liệu đây có phải là điều gì đó sẽ được thực hiện như một câu chuyện hay không? Nếu một saga giống như một máy nhà nước, nơi mỗi quá trình chuyển đổi chỉ có thể diễn ra một lần duy nhất thì tôi đoán rằng sẽ giải quyết vấn đề này? Tôi chỉ có một thời gian khó hình dung thế nào điều này sẽ phù hợp với nhau với xe buýt lệnh và miền kiện ..
Đặt thông báo "gửi email" cho tác vụ. Nếu uow cuộn lại, do đó, việc gửi đi của tin nhắn (để lưu trữ bền). Một cái gì đó khác chọn lên các tin nhắn và làm thingy email. Btw, không cqrs liên quan. Đồng bằng tính toán phân tán thông thường. –
Đối với phát lại sự kiện, KHÔNG BAO GIỜ gây ra loại hành vi này. Nếu impl của bạn. không, bạn đang làm sai. –
Điều đó có ý nghĩa, nhưng tôi quan tâm đến điều này trong ngữ cảnh cqrs. "Tin nhắn" là gì? Và ai/những gì sẽ nhặt nó tại, và khi nào? Nó sẽ là tốt đẹp để tận dụng để lưu trữ sự kiện để tránh giới thiệu một cơ chế lưu trữ để theo dõi thông tin liên lạc đi. – Kimble