本文主要圍繞RabbitMQ消息隊列和EventBus事件總線做筆記,其中有很多自己的了解和觀點,有不對之處還望大神指出,我也學習一下。
1,消息隊列
什麼是消息隊列就不說了,這裡隻介紹為什麼用它!!!
RabbitMQ提供了可靠的消息機制、跟蹤機制和靈活的消息路由,支援消息叢集和分布式部署。适用于排隊算法、秒殺活動、消息分發、異步處理、資料同步、處理耗時任務、CQRS等應用場景。它的以上好處在高并發等三高場景是十分必要的。
前提:使用RabbitMQ必須考慮高可用性
1、高可用:如果使用消息隊列,基本要配合叢集的,因為如果MQ伺服器崩了,那就整個服務災難了。
2、資料安全:必須保證資料不能丢失,也就是要考慮好最終一緻性,做好補償機制。
3、合理的消費。
2,事件總線
事件總線是對釋出-訂閱模式的一種實作。它是一種集中式事件處理機制,允許不同的元件之間進行彼此通信而又不需要互相依賴,達到一種解耦的目的。
說人話就是:集中對消息隊列中處理的事件進行訂閱和綁定管理。
實作事件總線的關鍵是:
事件總線維護一個事件源與事件處理的映射字典;
通過單例模式,確定事件總線的唯一入口;
利用反射完成事件源與事件處理的初始化綁定;
提供統一的事件注冊、取消注冊和觸發接口;
上邊就是一個簡單的事件總線管理類,主要任務就是對一個事件源與事件處理的映射,包括事件處理程式的觸發。
3,事件源+事件處理
為了集中對事件進行處理,就需要進一步提取基類來處理,如下所示:
然後還需要聲明一個事件基類來傳遞資料資訊,這裡聲明一個強類型的帶資料的事件
到這裡關于事件總線的設計就初步完成了,接下來是關于消息隊列 釋出+訂閱的設計。
作者:PeterZhang
出處:https://www.cnblogs.com/peterzhang123
本文版權歸作者和部落格園共有,歡迎轉載,但必須給出原文連結,并保留此段聲明,否則保留追究法律責任的權利。