RocketMQ是一款分散式、佇列模型的訊息中介軟體,具有以下特點:
1.能夠保證嚴格的訊息順序 2.提供豐富的訊息拉取模式 3.高效的訂閱者水平擴充套件能力 4.實時的訊息訂閱機制 5.億級訊息堆積能力
RocketMQ網路部署
1、NameServer是一個幾乎無狀態的節點,可叢集部署,一般用zookeeper實現,用於管理分散式Topic資訊
NameServer維護資訊示例:
rocketMQ/brokers/myserver
rocketMQ/topics/epftopic4wolf
rocketMQ/topics/epftopic4tiger
2、Broker部署相對複雜,Broker分為Master與Slave,一個Master可以對應多個Slaver,但是一個Slaver只能對應一個Master,Master與Slaver的對應關係通過指定相同的BrokerName,不同的BrokerId來定義,BrokerId為0表示Master,非0表示Slaver。Master可以部署多個。
每個Broker與NameServer叢集中的所有節點建立長連線,定時註冊Topic資訊到所有的NameServer。
Broker需要配置:
broker.name=myserver
broker.group=99
執行RocketMq的server端程序,可以以war包的形式通過tomcat釋出
3、Producer與NameServer叢集中的其中一個節點(隨機選擇)建立長連線,定期從NameServer獲取Topic路由資訊;
並向提供Topic服務的Master建立長連線,且定時向Master傳送心跳,把訊息傳送到Broker,由Broker排隊。
Producer完全無狀態,可叢集部署,執行rocketMq的Client程式。
Producer需要配置:
name=EPFProducer
group=EPF
4、Consumer與NameServer叢集中的其中一個節點(隨機選擇)建立長連線,定期從NameServer取Topic路由資訊;
並向提供Topic服務的Master、Slaver建立長連線,且定時向Master、Slaver傳送心跳。Consumer即可從Master訂閱訊息,也可以從Slave訂閱訊息,訂閱規則由Broker配置決定。
從Broker獲取訊息,可以為push和poll兩種方式
Consumer需要配置:
name=EPFConsumer
group=EPF
Type=push
Producter程式設計
Consumer程式設計
參考資料
http://alibaba.github.io/RocketMQ-docs/document/design/RocketMQ_design.pdf
http://www.uml.org.cn/zjjs/201504011.asp?artid=16152
http://www.uml.org.cn/zjjs/201504021.asp?artid=16162