1

作爲改變我們的應用從巨型巨石到麥克風的一部分我們正在開發通知微服務,可供所有其他模塊用於發送電子郵件,SMS ,推送通知等。AKKA.NET - 排隊和重試

此通知服務的一個客戶端是我們計劃開發的Windows服務,這會觸發用戶註冊,密碼重置等各種事件的電子郵件通知。 Windows服務將有一個2部分

  1. 一個基於REST的API,可以由用戶註冊等模塊調用觸發通知。當ReST API被調用時,該服務將加載適當的模板,填寫必要的值並調用通知服務來發送電子郵件。如果API調用失敗,則通知的詳細信息將被髮送到回地面任務,這將放棄並引發錯誤

  2. 後臺任務前重試一個固定次數的作用,其將其將放棄和引發錯誤

我們最初的計劃是使用一個隊列中的兩個部件之間進行通信之前,重試了固定次數用於發送所述通知的動作。流程將如下所示

客戶端 - >重新設置API - >加載模板和填充值 - >呼叫通知服務 - >將消息添加到隊列(在通知失敗的情況下) - >返回地面任務拉取隊列消息 - >重試動作 - >在最大重試次數失敗的情況下將通知標記爲失敗(將手動取消

而不是使用隊列,另一種方法是使用持久性AKKA因爲AKKA.NET支持郵箱,但沒有發現任何類似的用例......如果我們選擇akka.net,我們是否在正確的道路上...請發送您的評論

回答

0

我認爲隊列是一個適當的抽象 - 將一些消息發佈到隊列並讓通知服務使用它們。如果通知服務已關閉,則它們將保持在隊列中,直到恢復爲止。像Kafka這樣的東西可能很適合這個,但是你可以在你當前使用的任何數據庫中實現某些東西。除非你有更復雜的邏輯,否則我可能不會沿着Actor路線走下去。