đôi khi tôi đang phát triển một dự án nhỏ sử dụng mẫu CQRS và Sourcing Event. Tôi có vấn đề về cấu trúc và tôi không biết phải giải quyết giải pháp nào.CQRS/Event Sourcing, cách lấy dữ liệu nhất quán để áp dụng quy tắc kinh doanh?
Hãy tưởng tượng ví dụ sau: Lệnh được gửi kèm theo thông tin rằng khách hàng của ngân hàng đã gửi một số tiền (DepositCommand). Trong trình xử lý lệnh/Thực thể/Tổng hợp (không quan trọng đối với cuộc thảo luận), quy tắc kinh doanh phải được áp dụng; Nếu khách hàng là một trong 10% hàng đầu có nhiều tiền hơn trong tài khoản, hãy giành một số giải thưởng.
Câu hỏi đặt ra là làm thế nào tôi có thể cập nhật, thống nhất, dữ liệu để biết liệu khách hàng sau khi tiền gửi của họ có nằm trong top 10% hay không.
- Tôi không thể sử dụng cửa hàng sự kiện vì không thể thực hiện truy vấn như vậy;
- Tôi không chắc liệu tôi có thể sử dụng mô hình đã đọc vì không phải là 100% chắc chắn đã được cập nhật.
Bạn làm cách nào, trong trường hợp bạn cần dữ liệu từ cơ sở dữ liệu để áp dụng quy tắc kinh doanh? Nếu tôi không chú ý đến dữ liệu cập nhật, tôi chạy vào các khả năng của giải thưởng cho hai khách hàng khác nhau
Mong muốn được nghe ý kiến của bạn.
Cảm ơn bạn đã trả lời của bạn Calgary, bạn có quan điểm của tôi. Tôi phải đọc thêm về mẫu Saga và sau đó tôi trả lời với một ý kiến được hình thành. –
vì vậy bạn đang sugesting rằng tôi có một saga được tạo ra và xử lý với các ứng dụng, giống như một singleton. rằng saga theo dõi tổng số tiền gửi của tiền gửi. mỗi khách hàng gửi tiền thêm số tiền đó vào tổng số tiền thưởng. để lưu trữ tổng số tiền tôi sử dụng cửa hàng sự kiện? tôi hỏi vì khi tôi khởi chạy ứng dụng tôi cần tải tổng số tiền hiện tại. Điều này thật ý nghĩa? cảm ơn –
@JP - Saga sẽ quản lý trạng thái riêng của nó. Tại một thời điểm nào đó, bạn sẽ tạo một 'Chi nhánh' hoặc một' Ngân hàng' có thể bắt đầu câu chuyện để theo dõi tổng số tiền gửi. Bất cứ khi nào một khoản tiền gửi hoặc sự kiện liên quan khác được thực hiện, trạng thái saga sẽ được lấy ra (lý tưởng được lưu trữ trong bộ nhớ), sao cho nó luôn biết tổng số đang chạy. Nếu ứng dụng của bạn cần biết tổng số vì các lý do khác, thì có lẽ tổng số sẽ trở thành thuộc tính của trạng thái tổng hợp 'bank' hoặc' branch'. Tổng hợp/sagas của bạn là quyền hạn trên tất cả dữ liệu, bạn không muốn đi đến mô hình đọc cho loại thông tin này. Có lý? –