Hai mẫu tích hợp doanh nghiệp là thông điệp lệnh và thông báo sự kiện . Tôi đang làm việc trên một hệ thống trong đó chúng tôi sử dụng nhắn tin không chỉ để tích hợp với các hệ thống khác mà còn cho giao tiếp nội bộ giữa các dịch vụ. Nó được coi là một hệ thống nhất quán cuối cùng và các dịch vụ được coi là không biết gì về nhau (ngoại trừ một vài dịch vụ có mục đích đặc biệt). Vì vậy, chúng tôi cố gắng tránh những thứ cảm thấy như các cuộc gọi thủ tục từ xa (RPC hoặc RPI). Chúng tôi có một hệ thống phần mềm trung gian hướng xe buýt và tin nhắn, và tất cả các tin nhắn được phát sóng.
Chúng ta có xu hướng đặt tên tin nhắn của mình là sự kiện, nghĩa là, như một cụm từ trong quá khứ hoàn hảo, vd PurchaseOrderShipped
. Tuy nhiên, các sự kiện thường chỉ được thêm vào khi một số dịch vụ khác cần biết về chúng và ban đầu, thường chỉ có một dịch vụ quan tâm. Hơn nữa, đôi khi dịch vụ đó phát ra một sự kiện do đó được lắng nghe bởi dịch vụ đầu tiên. Do đó, nếu tôi lập sơ đồ tương tác, nó sẽ trông giống như sơ đồ cho thông báo lệnh trong liên kết ở trên (hoặc thậm chí là sơ đồ RPC) so với sơ đồ cho thông báo sự kiện, mặc dù một lần nữa, điều này thực sự không được thực hiện với nhắn tin trực tiếp nhưng phát trên xe buýt. Thêm vào đó là thực tế gần đây tôi đã thấy một số tin nhắn được thêm vào được đặt tên là các lệnh, nghĩa là một cụm từ trong mệnh lệnh, ví dụ BillShippedPurchaseOrder
.
Điều kỳ lạ là tên của các thông điệp và cách chúng truyền tải không thay đổi bằng việc nó được đặt tên là một sự kiện hay là một lệnh. Vậy làm thế nào để xác định xem một cái gì đó nên là một thông điệp lệnh hay một sự kiện? Đây chỉ là một sự khác biệt về ngữ nghĩa và đặt tên, hay có sự khác biệt thực hiện thực tế giữa các thông báo lệnh và sự kiện? Cho rằng tất cả các tin nhắn của chúng tôi được phát sóng, điều đó có nghĩa là không ai trong số chúng là tin nhắn thực sự?
request for information
chức năng? Có vẻ tự nhiên khi sử dụng một cái gì đó giống nhưgetUserInfo(uid)
một thông điệp lệnh tạo ra phản hồi. Tôi biết rằng các thông báo lệnh giới thiệu khớp nối, nhưng thật đáng buồn trong trường hợp này, tôi không thấy cách triển khai nó với các thông báo sự kiện. Hoặc nó chỉ là tốt để dính vào tin nhắn lệnh trong một số dịp như thế này?