在Apache RocketMQ中腌零,名稱服務(wù)器用于協(xié)調(diào)分布式系統(tǒng)的每個組件眯娱,主要通過管理主題路由信息來實現(xiàn)協(xié)調(diào)航揉。
管理由兩部分組成:
- Brokers 定期更新保存在每個名稱服務(wù)器中的元數(shù)據(jù)浦夷。
- 名稱服務(wù)器是為客戶端提供最新的路由信息服務(wù)的惰爬,包括生產(chǎn)者喊暖、消費者和命令行客戶端。
因此撕瞧,在啟動 brokers 和 clients 之前陵叽,我們需要告訴他們?nèi)绾瓮ㄟ^給他們提供的一個名稱服務(wù)器地址列表來訪問名稱服務(wù)器狞尔。在Apache RocketMQ中,可以用四種方式完成巩掺。
編程的方式
對于 brokers偏序,我們可以在 broker 的配置文件中指定 namesrvAddr=name-server-ip1:port;name-server-ip2:port
對于生產(chǎn)者和消費者,我們可以給他們提供姓名服務(wù)器地址列表如下:
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");
如果您從shell中使用管理命令行胖替,您也可以這樣指定:
sh mqadmin command-name -n name-server-ip1:port;name-server-ip2:port -X OTHER-OPTION
一個簡單的例子是 sh mqadmin -n localhost:9876 clusterList
指定在名稱服務(wù)器節(jié)點上查詢集群信息研儒。
如果您將管理工具集成到您自己的儀表板中,您可以:
DefaultMQAdminExt defaultMQAdminExt = new DefaultMQAdminExt("please_rename_unique_group_name");
defaultMQAdminExt.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");
Java 參數(shù)
還可以通過指定后續(xù)的java參數(shù) rocketmq.namesrvv.addr
來對您的應(yīng)用程序提供名稱服務(wù)器地址列表独令。
環(huán)境變量
您可以設(shè)置NAMESRV_ADDR
環(huán)境變量端朵。如果設(shè)置了,Broker和clients將檢查并使用其值燃箭。
HTTP端點(HTTP Endpoint)
如果您沒有使用前面提到的方法指定名稱服務(wù)器地址列表冲呢,Apache RocketMQ將以每2分鐘訪問以下HTTP端點以獲取和更新名稱服務(wù)器地址列表,初始延遲10秒招狸。
默認(rèn)情況下敬拓,終點是:
http://jmenv.tbsite.net:8080/rocketmq/nsaddr
你可以使用這個Java選項:rocketmq.namesrv.domain
覆蓋 jmenv.tbsite.net
,你也可以使用這個Java選項 rocketmq.namesrv.domain.subgroup
覆蓋 nsaddr
部分
如果在生產(chǎn)環(huán)境中運行Apache RocketMQ瓢颅,建議使用此方法恩尾,因為它提供了最大的靈活性——您可以動態(tài)地添加或刪除名稱服務(wù)器節(jié)點,而無需根據(jù)您的名稱服務(wù)器的系統(tǒng)負(fù)載重新啟動代理和客戶端挽懦。
優(yōu)先級
首先介紹的方法優(yōu)先于后一種方法:
編程方式 > Java選項 > 環(huán)境變量 > HTTP端點