2016-03-07 123 views
0

我正在創建通知服務並遇到有問題的流程。 當用戶在線時,它接收來自AMQP隊列的通知,該隊列隨後會保存到歷史通知數據庫中。 當用戶登錄時,我查詢了我在其中保存了所有歷史通知的數據庫併發送給客戶端。通知服務體系結構

我的問題流程是用戶登錄並查詢數據庫的同時,正在接收新消息。 這可能會導致重複。

當然,有創造性的解決方案,其中例如使用時間戳來消除重複,但我的問題是這個架構是否正常?如果沒有,是否有任何好的文章描述了通知傳遞給客戶端的方式,但通知服務的構建方式是什麼?

回答

2

如果您構建消息系統以處理至少一次而不是一次處理,那麼您將會更加快樂。做一些谷歌搜索這些,但這是一個相當不錯的總結:http://bravenewgeek.com/you-cannot-have-exactly-once-delivery/

在你的客戶端,我會保留一個哈希表的「顯示的消息」,你可以消除重複的郵件。這可以讓你的服務器以至少一次的語義進行發送,並且你在成功時有一個相當不錯的選擇。