NSQ 安装指南

来源:互联网 发布:c语言机器人编程 编辑:程序博客网 时间:2024/06/05 11:47

NSQ 安装指南

假设我们的服务器安装下面要求编排。

nsqlookup 集群列表

192.168.234.77192.168.234.36192.168.234.39

nsq 节点

192.168.234.117192.168.234.118

nsqadmin 节点

192.168.234.119

安装前准备

下载最新的二进制包,命令行操作如下:

tar -xvf nsq-0.3.8.linux-amd64.go1.6.2.tar.gz mv nsq-0.3.8.linux-amd64.go1.6.2 nsq

构建环境变量

设置nsq的环境变量,假设nsq的bin路径在/usr/local/software/nsq下。运行命令如下:

vi /etc/profileexport NSQ_HOME=/usr/local/software/nsqexport PATH=$PATH:$NSQ_HOME/bin. /etc/profile

构建运行脚本

创建执行脚本,分别创建start-nsqlookup.sh, start-nsq.sh和 start-nsqadmin.

start-nsqlookup.sh

#nsqlookupeval nsqlookupd --verbose > nsqlookup.log 2>&1 "&"

start-nsq.sh
#nsq
eval nsqd –data-path=/usr/local/software/nsq/data –lookupd-tcp-address=192.168.234.77:4160,192.168.234.36:4160,192.168.234.39:4160 > nsqd.log 2>&1 “&”

start-nsqadmin.sh
#nsqadmin
eval nsqadmin –lookupd-http-address=192.168.234.77:4161,192.168.234.36:4161,192.168.234.39:4161 > nsqadmin.log 2>&1 “&”

运行脚本

首先需要安装次序运行上面的脚本,必选先运行nsqlookup集群,在运行start-nsqadmin.sh或者start-nsq.sh.

在对应服务器上执行对应的脚本。

nsqlookup节点

#192.168.234.77#192.168.234.36#192.168.234.39sh start-nsqlookup.sh

nsq节点上
#192.168.234.117
#192.168.234.118
sh start-nsq.sh

nsqadmin节点上
#192.168.234.119
sh start-nsqadmin.sh

查看运行效果,可以直接访问nsqadmin节点http://192.168.234.119:4171/。

创建Producer

package mainimport (    "log"    "github.com/bitly/go-nsq"    "io/ioutil"    "strconv")var nullLogger = log.New(ioutil.Discard, "", log.LstdFlags)func sendMsg(message string){    //init default config    config := nsq.NewConfig()    w, _ := nsq.NewProducer("192.168.2.117:4150", config)    err := w.Ping()    if err != nil {        //192.168.2.117:4150,192.168.2.68:4150        log.Fatalln("error ping 10.50.115.16:4150", err)        // switch the second nsq. You can use nginx or HAProxy for HA.        w, _ = nsq.NewProducer("192.168.2.68:4150", config)    }    w.SetLogger(nullLogger, nsq.LogLevelInfo)    err2 := w.Publish("a-test", []byte(message))    if err2 != nil {        log.Panic("Could not connect nsq")    }    w.Stop()}func main() {    for i := 0; i < 2; i ++ {        sendMsg("msg index "+ strconv.Itoa(i + 10000))    }}

恭喜,你已经成功发送两个消息到nsq节点。

创建Consumer

package mainimport (    "log"    "github.com/bitly/go-nsq"    "fmt")func doSimpleConsumerTask(){    config := nsq.NewConfig()    q, _ := nsq.NewConsumer("a-test", "ch", config)    q.AddHandler(nsq.HandlerFunc(func(message *nsq.Message) error {        log.Printf("message: %v", string(message.Body))        message.Finish()        return nil    }))    lookupAddr := []string {        "192.168.234.77:4161",        "192.168.234.36:4161",        "192.168.234.39:4161",    }    err := q.ConnectToNSQLookupds(lookupAddr)    if err != nil {        log.Panic("Could not connect")    }    <-q.StopChan    stats := q.Stats()    fmt.Sprintf("message received %d, finished %d", stats.MessagesReceived, stats.MessagesFinished)}func main(){    doSimpleConsumerTask()}

程序运行输出:

2017/02/23 09:07:50 message: msg index 100002017/02/23 09:07:50 message: msg index 10001

消费者持续接受发送来的信息,运行程序后端。

欢迎订阅微信公众号

0 0