首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSQ无法获取消息

NSQ无法获取消息
EN

Stack Overflow用户
提问于 2019-07-05 14:42:29
回答 2查看 548关注 0票数 2

我是这样看的:nsq cannot consume message by connecting to nsqlookupd

但他并不适用于我,所有的方式都可以被tried.It的环境。

系统: VMware CentOS + Docker-compose NSQ版本:全部最新

docker-compose.yml:

代码语言:javascript
复制
version: '3'
services:
  nsqlookupd:
    image: nsqio/nsq
    command: /nsqlookupd
    ports:
      - "4160:4160"
      - "4161:4161"
  nsqd:
    image: nsqio/nsq
    command: /nsqd --lookupd-tcp-address=nsqlookupd:4160
    depends_on:
      - nsqlookupd
    ports:
      - "4150:4150"
      - "4151:4151"
  nsqadmin:
    image: nsqio/nsq
    command: /nsqadmin --lookupd-http-address=nsqlookupd:4161
    depends_on:
      - nsqlookupd
    ports:
      - "4171:4171"

我尝试在NSQD命令中添加-broadcast-address=127.0.0.1,但它会导致管理员页面错误。

docker-compose配置

代码语言:javascript
复制
services:
  nsqadmin:
    command: /nsqadmin --lookupd-http-address=nsqlookupd:4161
    depends_on:
    - nsqlookupd
    image: nsqio/nsq
    ports:
    - 4171:4171/tcp
  nsqd:
    command: /nsqd --lookupd-tcp-address=nsqlookupd:4160 -broadcast-address=127.0.0.1
    depends_on:
    - nsqlookupd
    image: nsqio/nsq
    ports:
    - 4150:4150/tcp
    - 4151:4151/tcp
  nsqlookupd:
    command: /nsqlookupd
    image: nsqio/nsq
    ports:
    - 4160:4160/tcp
    - 4161:4161/tcp
version: '3.0'

我希望你能理解我的意思,毕竟我的英语很差,你对此有什么想法吗?

代码语言:javascript
复制
func Producer() {
    producer, err := nsq.NewProducer("192.168.132.128:4150", nsq.NewConfig())
    if err != nil {
        fmt.Println("NewProducer", err)
        panic(err)
    }

    for i := 0; i < 5; i++ {
        if err := producer.Publish("test", []byte(fmt.Sprintf("Hello World "))); err != nil {
            fmt.Println("Publish", err)
            panic(err)
        }
    }
}

此代码成功他可以将消息添加到nsqd,但我无法连接到nsqd

看看这个:

代码语言:javascript
复制
2019/07/05 14:19:00 INF    2 [test/testq] querying nsqlookupd http://192.168.132.128:4161/lookup?topic=test
2019/07/05 14:19:00 INF    2 [test/testq] (60366475943f:4150) connecting to nsqd
2019/07/05 14:19:01 ERR    2 [test/testq] (60366475943f:4150) error connecting to nsqd - dial tcp: i/o timeout

还有这个

代码语言:javascript
复制
{"channels":["testq"],"producers":[{"remote_address":"172.19.0.2:57250","hostname":"60366475943f","broadcast_address":"60366475943f","tcp_port":4150,"http_port":4151,"version":"1.1.0"}]}

我认为问题出现在查找连接NSQ,但我不知道如何处理他。

EN

回答 2

Stack Overflow用户

发布于 2021-08-12 04:27:55

我想你忘了什么。您是否已将其添加到/etc/hosts中

代码语言:javascript
复制
127.0.0.1 nsqd

它允许您的计算机识别带有docker上的nsq网络的本地网络。希望这能对你有所帮助。CMIIW。

票数 0
EN

Stack Overflow用户

发布于 2021-11-26 05:46:38

我试着按照下面的方式添加,

代码语言:javascript
复制
--broadcast-address=nsqd

因此您docker组成应该如下所示,

代码语言:javascript
复制
nsqd:
  command: /nsqd --lookupd-tcp-address=nsqlookupd:4160 --broadcast-address=nsqd
  depends_on:
  - nsqlookupd
  image: nsqio/nsq
  ports:
  - 4150:4150/tcp
  - 4151:4151/tcp

它现在应该可以工作了

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56897816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档