1.安裝
https://nsq.io/deployment/installing.html
2.快速入門
在一個終端中街望,運行nsqlookupd
在另一個終端中弟跑,運行nsqd --lookupd-tcp-address=127.0.0.1:4160
如果想開啟在web UI查看整個節(jié)點狀況,可以在另一個終端中孟辑,運行nsqadmin --lookupd-http-address=127.0.0.1:4161
此時,打開http://127.0.0.1:4171
,并沒有任何的組件炭玫,我們首先發(fā)布一個消息到 一個topic,此時,topic未建立的,待執(zhí)行發(fā)送后,會新建topic
測試發(fā)送curl -d 'hello world 1' 'http://127.0.0.1:4151/pub?topic=baoer'
可以看到已經(jīng)有一個topic了叶圃,但topic中的channel并不會自動創(chuàng)建践图,web頁面上也會顯示,沒有channel,此時我們可以創(chuàng)建一個channel測試看一下
channel創(chuàng)建好了以后德崭,消息發(fā)送后,channel可自動獲取到揖盘,此時并沒有消費者從channel中獲取消息兽狭,我們可以寫一個簡易的客戶端來消費channel中的消息
package main
import (
"fmt"
"sync"
"github.com/nsqio/go-nsq"
)
func main() {
testNSQ()
}
type NSQHandler struct {
}
func (this *NSQHandler) HandleMessage(msg *nsq.Message) error {
fmt.Println("receive", msg.NSQDAddress, "message:", string(msg.Body))
return nil
}
func testNSQ() {
url := "127.0.0.1:4150"
waiter := sync.WaitGroup{}
waiter.Add(1)
go func() {
defer waiter.Done()
config := nsq.NewConfig()
config.MaxInFlight = 9
for i := 0; i < 10; i++ {
consumer, err := nsq.NewConsumer("baoer", "test", config)
if nil != err {
fmt.Println("err", err)
return
}
consumer.AddHandler(&NSQHandler{})
err = consumer.ConnectToNSQD(url)
if nil != err {
fmt.Println("err", err)
return
}
}
select {}
}()
waiter.Wait()
}
這樣荔燎,當有消息發(fā)送到topic中的時候销钝,客戶端就可以消費相應的消息了
本文檔僅為入門記錄座享,更多詳細文檔渣叛,待整理后發(fā)布淳衙。