我看这个: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 但我不知道如何处理他。