RocketMq namesvr 最佳实践
RocketMq namesvr 最佳實踐
翻譯自RocketMQ官方文檔
Apache RocketMQ中,name servers被設計用來協調分布式系統的每個部分,協調主要是完成topic路由信息管理。
管理包含兩部分
- Brokers 定期更新在name server中的 meta data 。
- Name servers 是提供服務的客戶端,包括producer,consumer和包含最新路由信息的命令行客戶端。
因此, 運行brokers和clients之前,需要通過一個nsv地址告訴它們如何去訪問nsv,有四個方法:
程序方式
在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 參數
還可以在啟動前通過指定java 參數rocketmq.namesrv.addr
環境參數
設置NAMESRV_ADDR環境參數
HTTP Endpoint
如果你沒有按照之前上面的幾種方式來設置, Apache RocketMQ還可以訪問下面的HTTP 端點來獲取更新nsv(每兩分鐘,最初延遲十秒)。
通常,接口是:
http://jmenv.tbsite.net:8080/rocketmq/nsaddr
你可以重寫在java參數中 jmenv.tbsite.net: rocketmq.namesrv.domain, 還可以通過這個重寫: rocketmq.namesrv.domain.subgroup
如果在生產環境運行,這種方式比較推薦。因為它給你很大的方便,可以動態增加去除nsv節點而不需要重啟broker和客戶端。
優先級
Programmatic Way > Java Options > Environment Variable > HTTP Endpoint
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的RocketMq namesvr 最佳实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RocketMq Consumer 最佳
- 下一篇: java.util.concurrent