在并發系統中,域事件通常是異步處理的。在 Go 中,可以通過channels實現一種簡單的異步事件處理方法,但問題是如果處理事件發生了不好的事情,或者最壞的情況是,對于整個程序來說,事件將會丟失。在 Go 程序中如何正確處理異步領域事件,即:當事件處理程序失敗時,不應從事件隊列中清除該事件,以便稍后妥善處理。如果整個程序宕機,則必須恢復事件并進行相應處理。
1 回答

撒科打諢
TA貢獻1934條經驗 獲得超2個贊
第一個相對容易;您可以在工作人員中有一個錯誤處理程序,在發生錯誤時重新排隊工作。
第二個要難得多;你的選擇是 a) 推出你自己的防彈機制,將事件寫入磁盤并在它們以線程安全的方式完成時清除它們,或者 b) 使用許多已經證明可靠的流行系統之一,例如 RabbitMQ 或Kafka,具有適當的復制和冗余以確保您需要的可靠性級別。我強烈推薦后者。
- 1 回答
- 0 關注
- 108 瀏覽
添加回答
舉報
0/150
提交
取消