Tôi muốn triển khai ứng dụng đầu tiên của mình bằng cách sử dụng mẫu CQRS cùng với Tìm kiếm sự kiện. Tôi đang tự hỏi làm thế nào để tạo ra rễ tổng hợp nên được xử lý đúng. Giả sử ai đó gửi lệnh CreatItem. Làm thế nào nó nên được xử lý? Nơi lưu trữ sự kiện ItemCreated? Là sự kiện đầu tiên của một mặt hàng mới? Hoặc tôi nên có một số loại thực thể ItemList tổng hợp tất cả các mục và danh sách sự kiện của nó chỉ bao gồm các sự kiện ItemCreated?
Udi Dahan đề nghị không tạo ra các gốc tổng hợp và luôn luôn sử dụng thay vào đó một số phương pháp tìm nạp. Nhưng làm thế nào tôi có thể tìm nạp một cái gì đó mới và chắc chắn không có bất kỳ ID nào được chỉ định. Tôi hiểu ý tưởng đằng sau và khá hợp lý khi nghĩ rằng một đối tượng mới là một đối tượng có trạng thái bao gồm các sự kiện bằng không trả lời về nó. Nhưng tôi nên sử dụng nó như thế nào? Tôi nên có một phương thức riêng biệt trong Kho lưu trữ của mình như thế nào getNewItem()
hoặc thay vào đó làm cho get(id)
phương thức của tôi chấp nhận Optional<ItemId>
?
Chỉnh sửa: Sau một thời gian đào tôi thấy việc triển khai thực sự thú vị các mẫu đã nói ở trên bằng cách sử dụng các diễn viên. Tác giả thay vì tạo tập hợp, lấy nó từ một loại kho lưu trữ với UUID mới được tạo. Hạn chế của phương pháp này là ông cho phép trạng thái không nhất quán tạm thời. Tôi cũng tự hỏi làm thế nào tôi có thể thực hiện delete
phương pháp với cách tiếp cận như vậy. Đơn giản chỉ cần thêm sự kiện đã xóa vào danh sách sự kiện của tổng hợp?