文章目錄
一、使用指南
- 客戶端尋址方式
在代碼中指定NameServer地址
1
|
Producer.setNamesrvAddr(“192.168.8.106:9876”);
|
或
1
|
Consumer.setNamesrvAddr(“192.168.8.106:9876”);
|
Java啓動參數中指定NameServer地址
1
|
-Drocketmq.namesrv.addr=192.168.8.106:9876
|
環境變量指定NameServer地址·
1
|
export NAMESRV_ADDR=192.168.8.106:9876
|
- http靜態服務器尋址
客戶端啓動後,會定時訪問一個靜態的HTTP服務器,地址如下:
http://jmenv.tbsite.net:8080/rocketmq/msaddr
這個URL的返回內容如下:
192.168.8.106:9876
客戶端默認每隔2分鐘訪問一次這個HTTP服務器,並更新本地的NameServer地址。URL已經在代碼中寫死,可通過修改/etc/hosts文件來改變要訪問的服務器,例如在/etc/hosts增加如下配置:
10.232.22.67 jmenv.taobao.net
二、參數詳解
- 客戶端的公共配置類:ClientConfig
參數名 | 默認值 | 說明 |
---|---|---|
NamesrvAddr | 無 | NameServer地址列表,多個nameServer地址用分號隔開 |
clientIP | 本機IP | 客戶端本機IP地址,某些機器會發生無法識別客戶端IP地址情況,需要應用在代碼中強制指定 |
instanceName | DEFAULT | 客戶端實例名稱,客戶端創建的多個Producer,Consumer實際是共用一個內部實例(這個實例包含網絡連接,線程資源等) |
clientCallbackExecutorThreads | 4 | 通信層異步回調線程數 |
pollNameServerInteval | 30000 | 輪訓Name Server 間隔時間,單位毫秒 |
heartbeatBrokerInterval | 30000 | 向Broker發送心跳間隔時間,單位毫秒 |
persistConsumerOffsetInterval | 5000 | 持久化Consumer消費進度間隔時間,單位毫秒 |
- Producer配置
參數名 | 默認值 | 說明 |
---|---|---|
producerGroup | DEFAULT_PRODUCER | Producer組名,多個Producer如果屬於一個應用,發送同樣的消息,則應該將它們歸爲同一組。 |
createTopicKey | TBW102 | 在發送消息時,自動創建服務器不存在的topic,需要指定key |
defaultTopicQueueNums | 4 | 在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數 |
sendMsgTimeout | 10000 | 發送消息超時時間,單位毫秒 |
compressMsgBodyOverHowmuch | 4096 | 消息Body超過多大開始壓縮(Consumer收到消息會自動解壓縮),單位字節 |
retryAnotherBrokerWhenNotStoreOK | FALSE | 如果發送消息返回sendResult,但是sendStatus!=SEND_OK,是否重試發送 |
maxMessageSize | 131072 | 客戶端限制的消息大小,超過報錯,同時服務端也會限制(默認128K) |
transactionCheckListener | 無 | 事物消息回查監聽器,如果發送事務消息,必須設置 |
checkThreadPoolMinSize | 1 | Broker回查Producer事務狀態時,線程池大小 |
checkThreadPoolMaxSize | 1 | Broker回查Producer事務狀態時,線程池大小 |
checkRequestHoldMax | 2000 | Broker回查Producer事務狀態時,Producer本地緩衝請求隊列大小 |
- PushConsumer配置
參數名 | 默認值 | 說明 |
---|---|---|
consumerGroup | DEFAULT_CONSUMER | Consumer組名,多個Consumer如果屬於一個應用,訂閱同樣的消息,且消費邏輯一致,則應將它們歸爲同一組 |
messageModel | CLUSTERING | 消息模型,支持以下兩種1.集羣消費2.廣播消費 |
consumeFromWhere | CONSUME_FROM_LAST_OFFSET | Consumer啓動後,默認從什麼位置開始消費 |
allocateMessageQueueStrategy | AllocateMessageQueueAveragely | Rebalance算法實現策略 |
Subscription | {} | 訂閱關係 |
messageListener | 無 | 消息監聽器 |
offsetStore | 無 | 消費進度存儲 |
consumeThreadMin | 10 | 消費線程池數量 |
consumeThreadMax | 20 | 消費線程池數量 |
consumeConcurrentlyMaxSpan | 2000 | 單隊列並行消費允許的最大跨度 |
pullThresholdForQueue | 1000 | 拉消息本地隊列緩存消息最大數 |
Pullinterval | 0 | 拉消息間隔,由於是長輪詢,所以爲0,但是如果應用了流控,也可以設置大於0的值,單位毫秒 |
consumeMessageBatchMaxSize | 1 | 批量消費,一次消費多少條消息 |
pullBatchSize | 32 | 批量拉消息,一次最多拉多少條 |
- PullConsumer配置
參數名 | 默認值 | 說明 |
---|---|---|
consumerGroup | 無 | Conusmer組名,多個Consumer如果屬於一個應用,訂閱同樣的消息,且消費邏輯一致,則應該將它們歸爲同一組 |
brokerSuspendMaxTimeMillis | 20000 | 長輪詢,Consumer拉消息請求在Broker掛起最長時間,單位毫秒 |
consumerPullTimeoutMillis | 10000 | 非長輪詢,拉消息超時時間,單位毫秒 |
consumerTimeoutMillisWhenSuspend | 30000 | 長輪詢,Consumer拉消息請求咋broker掛起超過指定時間,客戶端認爲超時,單位毫秒 |
messageModel | BROADCASTING | 消息模型,支持以下兩種:1集羣消費 2廣播模式 |
messageQueueListener | 無 | 監聽隊列變化 |
offsetStore | 無 | 消費進度存儲 |
registerTopics | 無 | 註冊的topic集合 |
allocateMessageQueueStrategy | 無 | Rebalance算法實現策略 |
- Broker配置參數
查看Broker默認配置
1
|
sh mqbroker -m
|
參數名 | 默認值 | 說明 |
---|---|---|
consumerGroup | 無 | Conusmer組名,多個Consumer如果屬於一個應用,訂閱同樣的消息,且消費邏輯一致,則應該將它們歸爲同一組 |
listenPort | 10911 | Broker對外服務的監聽端口 |
namesrvAddr | Null | Name Server地址 |
brokerIP1 | 本機IP | 本機IP地址,默認系統自動識別,但是某些多網卡機器會存在識別錯誤的情況,這種情況下可以人工配置。 |
brokerName | 本機主機名 | 無 |
brokerClusterName | DefaultCluster | Broker所屬哪個集羣 |
brokerId | 0 | BrokerId,必須是大等於0的整數,0表示Master,>0表示Slave,一個Master可以掛多個Slave,Master和Slave通過BrokerName來配對 |
storePathCommitLog | $HOME/store/commitlog | commitLog存儲路徑 |
storePathConsumeQueue | $HOME/store/consumequeue | 消費隊列存儲路徑 |
storePathIndex | $HOME/store/index | 消息索引存儲隊列 |
deleteWhen | 4 | 刪除時間時間點,默認凌晨4點 |
fileReservedTime | 48 | 文件保留時間,默認48小時 |
maxTransferBytesOnMessageInMemory | 262144 | 單次pull消息(內存)傳輸的最大字節數 |
maxTransferCountOnMessageInMemory | 32 | 單次pull消息(內存)傳輸的最大條數 |
maxTransferBytesOnMessageInDisk | 65535 | 單次pull消息(磁盤)傳輸的最大字節數 |
maxTransferCountOnMessageInDisk | 8 | 單次pull消息(磁盤)傳輸的最大條數 |
messageIndexEnable | TRUE | 是否開啓消息索引功能 |
messageIndexSafe | FALSE | 是否提供安全的消息索引機制,索引保證不丟 |
brokerRole | ASYNC_MASTER | Broker的角色 -ASYNC_MASTER異步複製Master -SYNC_MASTER同步雙寫Master -SLAVE |
flushDiskType | ASYNC_FLUSH | 刷盤方式 -ASYNC_FLUSH異步刷盤 -SYNC_FLUSH同步刷盤 |
cleanFileForciblyEnable | TRUE | 磁盤滿,且無過期文件情況下TRUE表示強制刪除文件,優先保證服務可用 FALSE標記服務不可用,文件不刪除 |