58

golang nsq

 4 years ago
source link: https://www.tuicool.com/articles/buIzqmU
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

1.安装

https://nsq.io/deployment/installing.html

2.快速入门

在一个终端中,运行 nsqlookupd
在另一个终端中,运行 nsqd --lookupd-tcp-address=127.0.0.1:4160
如果想开启在web UI查看整个节点状况,可以在另一个终端中,运行 nsqadmin --lookupd-http-address=127.0.0.1:4161

此时,打开 http://127.0.0.1:4171 ,并没有任何的组件,我们首先发布一个消息到 一个topic,此时,topic未建立的,待执行发送后,会新建topic

测试发送 curl -d 'hello world 1' 'http://127.0.0.1:4151/pub?topic=baoer'
ZfqAref.png!web

topic

可以看到已经有一个topic了,但topic中的channel并不会自动创建,web页面上也会显示,没有channel,此时我们可以创建一个channel测试看一下

YJJRryq.png!web

image.png

channel创建好了以后,消息发送后,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()
}

这样,当有消息发送到topic中的时候,客户端就可以消费相应的消息了

BzMbyu2.png!web

两个消息队列.png

UFRvYrz.png!web

整个节点状况.png

本文档仅为入门记录,更多详细文档,待整理后发布。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK