簡介
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 | curl -d 'hello world 2' 'http://127.0.0.1:4151/pub?topic=test' |