RocketMq namesvr 最佳实践
RocketMq namesvr 最佳實(shí)踐
翻譯自RocketMQ官方文檔
Apache RocketMQ中,name servers被設(shè)計(jì)用來協(xié)調(diào)分布式系統(tǒng)的每個(gè)部分,協(xié)調(diào)主要是完成topic路由信息管理。
管理包含兩部分
- Brokers 定期更新在name server中的 meta data 。
- Name servers 是提供服務(wù)的客戶端,包括producer,consumer和包含最新路由信息的命令行客戶端。
因此, 運(yùn)行brokers和clients之前,需要通過一個(gè)nsv地址告訴它們?nèi)绾稳ピL問nsv,有四個(gè)方法:
程序方式
在Broker里,我們可以在配置文件指定:namesrvAddr=name-server-ip1:port;name-server-ip2:port。
在 producers 和 consumers, 我們可以按照下面的方法指定:
DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name"); producer.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name"); consumer.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");如果用命令行,可以這樣:
sh mqadmin command-name -n name-server-ip1:port;name-server-ip2:port -X OTHER-OPTIONA simple example is: sh mqadmin -n localhost:9876 clusterList assuming to query cluster info on the name server node.
如果你集成了admin工具在你的dashboard,你可以這樣:
DefaultMQAdminExt defaultMQAdminExt = new DefaultMQAdminExt("please_rename_unique_group_name"); defaultMQAdminExt.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");Java 參數(shù)
還可以在啟動(dòng)前通過指定java 參數(shù)rocketmq.namesrv.addr
環(huán)境參數(shù)
設(shè)置NAMESRV_ADDR環(huán)境參數(shù)
HTTP Endpoint
如果你沒有按照之前上面的幾種方式來設(shè)置, Apache RocketMQ還可以訪問下面的HTTP 端點(diǎn)來獲取更新nsv(每?jī)煞昼?#xff0c;最初延遲十秒)。
通常,接口是:
http://jmenv.tbsite.net:8080/rocketmq/nsaddr
你可以重寫在java參數(shù)中 jmenv.tbsite.net: rocketmq.namesrv.domain, 還可以通過這個(gè)重寫: rocketmq.namesrv.domain.subgroup
如果在生產(chǎn)環(huán)境運(yùn)行,這種方式比較推薦。因?yàn)樗o你很大的方便,可以動(dòng)態(tài)增加去除nsv節(jié)點(diǎn)而不需要重啟broker和客戶端。
優(yōu)先級(jí)
Programmatic Way > Java Options > Environment Variable > HTTP Endpoint
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的RocketMq namesvr 最佳实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RocketMq Consumer 最佳
- 下一篇: java.util.concurrent