RocketMq環境要求:
- 64bit OS,Linux/Unix/Mac
- 64bit JDK1.8+
- Maven 3.2.x
- Git
- 4g+ free disk for Broker server
RocketMq下載:
http://rocketmq.apache.org 目前最新版本4.5版本點擊 Latest releasev4.5
conf目錄配置文件說明
2m-2s-async:2主2從異步
2m-2s-sync:2主2從同步
2m-noslave:2主沒有從
刷盤:內存數據存入硬盤
異步刷盤:producer向broker發送數據後,broker先存入內存,然後直接響應producer
同步刷盤:producer向broker發送數據後,broker先存入內存,進行持久化,然後在響應producer
項目搭建:步驟省略自行百度
檢驗是否成功:
先啓動namesrv
nohup sh mqnamesrv &
再啓動broker
nohup sh mqbroker -c /usr/local/server/mq/rocketmq/conf/2m-2s-a.properties > /dev/null 2>&1 &
輸入jps 可以看到BrokerStartup/NameServStartup
9876是內部server的端口號
下載RocketMq控制檯
https://github.com/apache/rocketmq-externals/tree/master
運維:記錄當前的地址和端口號
集羣:有哪些節點 一般都是2主2從
主題:分爲普通、重試、死信(重試n次)、可以看到狀態、路由、consumer管理、topic配置、發送消息、重置消費位點
消費者:可以查看訂閱組、數量、版本、類型、模式、TPS、延遲、配置報警等
生產者:可以在對應主題對應生產組進行搜索
消息:可以對topic進行查詢、可以通過MessageKey/MessageId進行查詢
RocketMq架構介紹
1.啓動NameServer(Alibaba)集羣 等待Broker、Producer、Consumer,相當於路由控制中心 是一個無狀態節點 記錄各種信息
2.啓動Broker,Broker集羣由多個主從構成,使用不同的Broker Id來定義,BrokerId爲0表示Master,非0表示Slave跟所有Name Server保持長連接,定時發送心跳包。心跳包包含當前Broker信息(IP+端口等)以及存儲所有topic信息。定時(每隔30s)註冊Topic信息到所有Name Server。Name Server定時(每隔10s)掃描所有存活broker的連接,如果Name Server超過2分鐘沒有收到心跳,則Name Server斷開與Broker的連接。
3.Producer找到Name Server 然後才能找到對應的Broker
4.Consumer同上 RocketMq支持多種模式 如推模式 和 拉模式
總結:如NameServer與Broker,Producer和Broker,Consumer和Broker 他們之間的接收方通信都是每10s一掃描,當2分鐘還沒有收到心跳包則斷開,主動發送或者拉取都是30s獲取相應Topic信息/發送心跳