2

我看这个:nsq 不能通过连接到 nsqlookupd 来消费消息

但他不适用于我,各种方法都试过了。可能是环境。

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

码头工人-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"

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

码头工人撰写配置

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'

在此处输入图像描述

我希望你明白我的意思,毕竟我的英语很差你有什么想法吗?

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

看看这个:

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

和这个

{"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 但我不知道如何处理他。

4

2 回答 2

0

我尝试按以下方式添加,

--broadcast-address=nsqd

所以你的 docker compose 应该如下所示,

nsqd:
  command: /nsqd --lookupd-tcp-address=nsqlookupd:4160 --broadcast-address=nsqd
  depends_on:
  - nsqlookupd
  image: nsqio/nsq
  ports:
  - 4150:4150/tcp
  - 4151:4151/tcp

它现在应该可以工作

于 2021-11-26T05:46:37.853 回答
0

我想你忘记了什么。你有没有把它添加到你的 /etc/hosts

127.0.0.1 nsqd

它允许您的机器通过 docker 上的 nsq 网络识别本地网络。希望这可以帮到你。CMIIW。

于 2021-08-12T04:27:54.630 回答