45

golang nsq

 1年前 阅读数 50
以下为 快照 页面,建议前往来源网站查看,会有更好的阅读体验。
原文链接: https://www.tuicool.com/articles/buIzqmU

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

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


猜你喜欢

  • 64
    • www.tuicool.com 1年前
    • 快照

    使用NSQ(附Golang代码)

    上篇文章已经了解了消息中间件相关的知识,这篇文章学习一下Golang语言编写的知名消息中间件 NSQ 。 nsq最初是由bitly公司开源出来的一款简单易用的消息中间件,它可用于大规模系...

  • 54
    • www.tuicool.com 1年前
    • 快照

    golang-nsq系列(一)--初识

    nsq 最初是由 bitly 公司开源出来的一款简单易用的分布式消息中间件,它可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息。

  • 3
    • txt.fliglio.com 1个月前
    • 快照

    NSQ and Golang Messaging Primer

    NSQ and Golang Messaging Primer 15 Sep 2020 0 Comments In this post, we’ll look at how you can use NS...

  • 42

    php-nsq php-nsq 是nsq的php客户端,采用c扩展编写,性能和稳定性。 安装 : 请提前安装libevent Dependencies: libevent (apt-get install libevent-dev ,yum install libevent-devel) 1....

  • 35
    • 微信 mp.weixin.qq.com 2年前
    • 快照

    NSQ最佳实践

  • 77
    • 微信 mp.weixin.qq.com 2年前
    • 快照

    NSQ 最佳实践

    目前,全新的异步任务服务每天高效稳定的为唱吧提供数亿次的调用。服务器团队用全新的方式重新定义了异步任务实现方式,以为云计算而生的NSQ、成熟的PHP执行者PHP-FPM、自主开发的中间件NSQProxy以及admin管理后台共同组成了异步任务的队...

  • 62
    • bridgeforyou.cn 2年前
    • 快照

    MQ(6) —— Nsq vs Kafka

    Nsq vs Kafka 正如之前说的,Nsq是一款极简的消息中间件,通过学习Nsq,我们可以通过对比的方式,学习其他的Mq。 这一节,就让我们在对比中,学习另一种Mq,Kafka,在对比中,加深对Mq的理解。 首先,先放上...

  • 24
    • studygolang.com 2年前
    • 快照

    NSQ源码-Nsq客户端

    看完lookupd和nsqd之后我们再来看下nsq client端的代码。 我是想把nsq系统完完整整的看一遍,从而对他形成一个更整体的 认识。对message queue来说他的client端就是生产者和消费者,生产者负责想nsq中投递消息,消费者负责...

  • 29
    • studygolang.com 2年前
    • 快照

    NSQ源码-NSQD

    看完了nsqlookupd我们继续往下看, nsqd才是他的核心. 里面大量的使用到了go channel, 相信看完之后对你学习go有很大的帮助.相较于lookupd部分无论在代码逻辑和实现上都要复杂很多. 不过基本的代码结构基本上都是一样的, 进...

  • 47
    • studygolang.com 2年前
    • 快照

    NSQ源码-nsqlookupd

    为什么选择nsq 之前一直在用erlang做电信产品的开发,对erlang的一些生态也比较了解,和erlang相关的产品在互联网公司使用最多的应该就是rabbitmq了,也许很多人听说过erlang就是因为他们公司在使用rabbitmq。在之前也看过一点...

关于极客头条


聚合每日国内外有价值,有趣的链接。

AD