docker - nsq 无法通过连接到 nsqlookupd 来消费消息

标签 docker go docker-compose nsq go-nsq

我尝试使用 docker-compose 来运行 nsq,docker-compose.yml 如下:

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"

我正在使用 nsq 客户端 go-nsq生产和消费消息,直接连接nsqd可以消费消息,不能连接nsqlookupd消费:

consumer.ConnectToNSQD("127.0.0.1:4150")  # success (output the consumed messages)

consumer.ConnectToNSQLookupd("127.0.0.1:4161")   # failed

2018/01/31 16:39:12 ERR    1 [test/liu] (967fcc2c88ae:4150) error connecting to nsqd - dial tcp: i/o timeout

我可以连接到 nsqlookup 实例:

➜  test_nsq curl http://127.0.0.1:4161/ping
OK%
➜  test_nsq curl http://127.0.0.1:4161/nodes
{"producers":[{"remote_address":"172.22.0.3:59988","hostname":"967fcc2c88ae","broadcast_address":"967fcc2c88ae","tcp_port":4150,"http_port":4151,"version":"1.0.0-compat","tombstones":[false],"topics":["test"]}]}%

源码链接:

https://gist.github.com/liuzxc/1baf85cff7db8dee8c26b8707fc48799

环境:

OS: Mac EI Capitan 10.11.6
go version: 1.9.2
nsq: 1.0.0-compat(latest)

有什么想法吗?

最佳答案

我输出go-nsq日志,然后找到根本原因,应该为nsqd命令添加-broadcast-address=127.0.0.1,如果没有,nsqd会注册它的主机名到nsqlookupd,它客户无法解决。

关于docker - nsq 无法通过连接到 nsqlookupd 来消费消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48536963/

相关文章:

go - Golang gRPC客户端连接到GKE

linux - 如何更改docker容器中 'flink'上的默认用户 'root'?

docker - Ghost Docker SMTP 设置

java - docker 在错误的端口上运行图像

python - python在docker容器中创建目录并写入文件

docker - 容器构建错误 - 无法关闭容器 - 容器在关闭期间遇到错误

go - 未填充 GoLang 和 AWS APIGatewayProxyRequest 问题

go - 寻找低于零的最大值

go - Docker 撰写 working_dir 问题

MySQL 在 Raspberry Pi 3 的 list 列表条目中没有与 linux/arm/v7 匹配的 list