訊息佇列 nsq 使用筆記

2021-08-18 09:43:56 字數 1716 閱讀 1604

在遠端機器 192.168.1.16 上啟動 nsqlookupd, nsqadmin

nsqlookupd 占用 4161 埠

有兩個介面:tcp 埠(4160),nsqd 用它來廣播。http 埠(4161),客戶端用它來發現和管理

機器 192.168.1.35 上的 nsqd (在本地預設占用 4150 埠) 啟動後要連線遠端機器 192.168.1.16 上的 nsqlookupd

nohup ./nsqd --lookupd-tcp-address=192.168.1.16:4160 --tcp-address=192.168.1.35:4150 --broadcast-address=192.168.1.35 &

若 nsq 的客戶端和 nsqd, nsqlookupd 在同一臺機器上,則啟動 nsqd 的 ip 位址是 127.0.0.1

nohup ./nsqd --lookupd-tcp-address=127.0.0.1:4160 --tcp-address=127.0.0.1:4150 --broadcast-address=127.0.0.1 &

nsq 客戶端程式中使用的 nsqd 和 lookupd 的 ip,跟 nsqd 的啟動引數一致,這裡是 127.0.0.1

配置檔案中:

#nsqd 位址

nsqdaddress = "127.0.0.1:4150"

#nsqlookupd 位址

nsqlookupdaddress = "127.0.0.1:4161"

在內網環境下,分布在不同機器上的 nsqd 通過 nsqlookupd 發現對方

nsq 的客戶端, 需要會連線到某個 nsq 節點上發布訊息

接接收訊息是需要連線到 nsqlookupd 上,通過 nsqlookupd 的服務發現,找到發布訊息的 nsq 進行訊息接收

nsq 客戶端程式的編寫

作為訊息發布方, 連線到具體某個 nsq 節點的**(假設某個 nsq 節點執行在 192.168.1.35 上

producer, err = nsq.newproducer("192.168.1.35:4150", nsq.newconfig())

producer.setlogger(nil, 0) // 遮蔽系統日誌

發布訊息

producer.publish(...)

作為訊息訂閱方

cfg := nsq.newconfig()

// 客戶端可以連線多少個 nsqd 節點

cfg.maxinflight = 10

// lookupd 對 nsqd 的服務發現間歇

cfg.lookupdpoolinterval = 30 * time.second

c, err := nsq.newconsumer(topic, channel, cfg)

c.setlogger(nil, 0) // 遮蔽系統日誌

c.addhandler(...)

// nsqlookupd 執行在 192.168.1.16 上的

err = c.connecttonsqlookupd(192.168.1.16:4161)

在 /tmp 下面可以找到 nsq 的傳送日誌

在瀏覽器中輸入  

可以檢視 topic 以及傳送過的訊息

NSQ訊息佇列

前面的總結中提到過這個玩意,所以簡單說說,win上面的測試驗證 網上有比較合適的博文,我先推薦幾篇 我在簡化一下,給大家說說幾個win什麼的東西。核心元件 nsqd.exe 該元件負責接收資料和 資料。生產者發布資料到這裡,消費者來這裡取資料。類似集群部署元件 輔助工具 nsqadmin.exe 該...

nsq(訊息佇列)

搭建服務 啟動 nsqd 指定 broadcast address 127.0 0nsqd broadcast address 127.0 0.1 1.啟動 nsqlookupd 命令 nsqlookupd 2.啟動nsqd 命令 nsqd broadcast address 127.0 0.1 l...

golang訊息佇列nsq

golang訊息佇列nsq win下安裝 追加i nsq 1.2.0.windows amd64.go1.12.9 bin 2.開啟命令視窗,執行 nsqlookupd 3.開啟新的命令視窗,執行 nsqd lookupd tcp address 127.0.0.1 4160 此處4160是nsqd...