1. 前言
1.1 github源代碼
https://github.com/apache/rocketmq
1.2 github其他客戶端,比如c++,php
https://github.com/apache/rocketmq-externals
1.3 運行進程
RocketMQ分成兩個進程運行
- Namesrv
- Broker
Namesrv,命名服務,主要負責Broker狀態管理,Topic路由信息查詢等等,端口是9876
Broker負責消息存儲,轉發,等等,一般佔用3個端口
10911 -- Broker主邏輯端口
10912 -- 持久化端口
10909 -- vip端口
另外,Namesrv可以集羣配置,各個Namesrv之間是對等的,彼此不通信,不需要互相通信。
Broker可以以單master, 多master,多master多slave等多種方式運行。
2. 代碼結構
2.1 代碼模塊
2.2 模塊簡介
- rocketmq-broker 主要的業務邏輯,消息收發,主從同步, pagecache等等
- rocketmq-client 客戶端接口,比如生產者和消費者。pull和push消費模式,消息負載均衡等等。
- rocketmq-common 公用數據結構等等
- rocketmq-distribution 編譯模塊,編譯輸出等
- rocketmq-example 示例,比如生產者和消費者
- rocketmq-fliter
- rocketmq-flitersrv
- rocketmq-logappender 日誌相關
- rocketmq-namesrv Namesrv服務
- rocketmq-openmessaging
- rocketmq-remoting 遠程調用接口,封裝Netty,主要是NettyRemotingServer和NettyRemotingClient
- rocketmq-srvutil server util,提供一些公用的工具方法,比如解析命令行參數
- rocketmq-store 消息存儲
- rocketmq-test 測試
- rocketmq-tools 管理工具,比如有名的mqadmin工具