認識 NSQ 即時分散式訊息平台

簡介

NSQ 用來解決分散式訊息傳遞,在 NSQ 中有兩個重要的元素,一個是「主題」,另一個是「頻道」。

一個主題可以有多個頻道,如果有 3 個不同的服務監聽同一個主題,此時就會開啟 3 個頻道。如果只有一個服務,則主題的所有訊息則由此服務所消費。

每一個頻道都能接收到一個主題下所有訊息的副本。

安裝

使用 brew 安裝 nsq 相關指令。

1
brew install nsq

使用

使用 nsqlookupd 指令啟動一個 NSQ 叢集。

1
nsqlookupd

開啟另一個終端視窗,使用 nsqd 指令啟動一個 NSQ 服務。

1
nsqd --lookupd-tcp-address=127.0.0.1:4160 --broadcast-address=127.0.0.1

再開啟另一個終端視窗,使用 nsqadmin 指令啟動一個 NSQ 叢集的 UI 介面,可以透過瀏覽器訪問 http://localhost:4171/

1
nsqadmin --lookupd-http-address=127.0.0.1:4161

再開啟另一個終端視窗,發布一個訊息到 test 頻道。

1
curl -d 'hello world 1' 'http://127.0.0.1:4151/pub?topic=test'

再開啟另一個終端視窗,將 test 頻道的訊息持續寫入 /tmp 資料夾中的日誌檔。

1
nsq_to_file --topic=test --output-dir=/tmp --lookupd-http-address=127.0.0.1:4161

再開啟另一個終端視窗,監聽日誌檔。

1
tail -f /tmp/test.Memo-MacBook-Pro.2022-02-19_19.log

可以發布更多的訊息到 test 頻道來進行觀察。

1
2
curl -d 'hello world 2' 'http://127.0.0.1:4151/pub?topic=test'
curl -d 'hello world 3' 'http://127.0.0.1:4151/pub?topic=test'

參考資料