NSQ 的基本使用

简单介绍

  1. lookupd
  2. nsqd
  3. nsqadmin

docker 部署

  1. 拉取 NSQ 镜像
> docker pull nsqio/nsq  #拉取nsq镜像
> docker images          #查看nsq镜像
  1. 运行lookupd
> sudo docker run --name lookupd -p 4160:4160 -p 4161:4161 -d nsqio/nsq /nsqlookupd
  1. 节点部署 nsqd
> sudo docker run --name nsqd -p 4150:4150 -p 4151:4151   -d  nsqio/nsq /nsqd     --broadcast-address=192.168.0.101     --lookupd-tcp-address=192.168.0.101:4160

192.168.0.101 为服务器ip地址
可以通过 ifconfig 查看

  1. 运行nsqadmin
> sudo docker run --name nsqadmin -p 4171:4171 -d nsqio/nsq /nsqadmin --lookupd-http-address=192.168.0.101:4161

将 nsqadmin 绑定到 nsqd 中

  1. 访问 nsqadmin
    浏览器打开:192.168.0.101
    在这里插入图片描述
  2. 测试
> curl -d 't1' 'http://192.168.0.101:4151/pub?topic=p1'

port 4151 为 nsqd

在这里插入图片描述

go 代码

  1. producer
package main

import (
    "log"
    "github.com/nsqio/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.0.101:4150", config)
    err := w.Ping()
    if err != nil {
        //192.168.2.117:4150,192.168.2.68:4150
        log.Fatalln("error ping 192.168.0.101:4150", err)
        // switch the second nsq. You can use nginx or HAProxy for HA.
        w, _ = nsq.NewProducer("192.168.0.101: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))
    }

}
  1. consumer
package main

import (
    "log"
    "github.com/nsqio/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))
		fmt.Printf(" 业务处理 ")
        message.Finish()
        return nil
    }))
    // lookupAddr := []string {
		// "192.168.0.101:4161",
        // "192.168.234.36:4161",
        // "192.168.234.39:4161",
    // }
    err := q.ConnectToNSQLookupd("192.168.0.101:4161")
    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()
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值