簡體   English   中英

用於了解pub-sub消息是否成功的模式

[英]Patterns for knowing if a pub-sub message was successful

我正在為一個項目開發微服務,我們正在嘗試使用AWS SNS + SQS進行pub-sub通信。 我們不確定如何向服務發出信號,無論其他服務是否成功完成任務。
例如,如果服務A發出SNS事件並且服務D,E和F都在監聽訂閱的SQS隊列,那么服務A如何知道服務A,服務D,E和F內的服務A啟動的活動是成功?

我將舉一個更具體的例子:一個新用戶注冊一個網站。 該網絡呼叫首先到達后端的user service 如果用戶成功,則會發送一個表示已創建新用戶的事件。 這會觸發email service發送電子郵件給用戶以確認其注冊。 如果它無法發送電子郵件會怎么樣? user service

1)已經回應了前端說它成功了

2)還是在等待確認? 什么是確認的好的pub-sub模式?

我知道我們可以做一個同步調用,但為了簡潔起見,這個例子是簡化的。

正如@dbugger在評論中所說,您可以讓訂閱者向發布者發送回復或其他內容。

但是,出版商有責任確保訂閱者收到活動嗎?

發布事件的重點在於發布者不需要(也不應該)知道訂閱該事件的消費者的狀態,訂閱者是否忽略該消息,或者即使沒有訂閱者。

如果發布者確實需要知道,那么發布者應該以請求 - 響應模式而不是事件直接向消費​​者發送命令,而不是事件。

這是因為命令消息假設接收者的知識,而事件消息假定不知道。

在事件到達時從自上而下的角度了解:嗯,您應該使用持久的消息傳輸來保證事件的傳遞,但即使有耐用性,您仍然可以丟棄消息。

唯一真正的做法是實現某種儀器,它允許您跟蹤在各地發布的事件中編碼的“對話”。 有可用的工具(我只使用了一個,NServicebus稱為ServicePulse )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM