nsq 收不到消息 failed to read command的巨坑

211 阅读1分钟

巨坑1

  • go nsq连接linux部署的nsq,一直提示没有找到127.0.0.1:4160
nsqd --lookupd-tcp-address=127.0.0.1:4160

  • 解决办法
    • 添加broadcast-address广播地址
nsqd --lookupd-tcp-address=127.0.0.1:4160 --broadcast-address=192.168.80.128

巨坑2

  • go-nsq连接nsq出现下面的错误,信息可以发送到nsq上,但是消息接收不到
 failed to read command - read tcp 192.168.80.128:4150->192.168.80.1:10187: read: connection reset by peer
[nsqd] 2024/08/18 07:13:32.831299 INFO: PROTOCOL(V2): [192.168.80.1:10187] exiting messagePump

  • 解决办法1
    • 启动consumer的时候,不要用协程启动,go-client-nsq本身就用了协程
//直接启动消费者和生产者即可
//但是要注意,第一次我们应该先启动生成者,让它自动创建topic,和rabbitmq不一样,这里的topic是由生产者创建的

//启动生产者,先启动生产者,去创建topic先
nsqProducer()

//监听消费者,里面的代码本身就是异步的,无需再异步启动
nsqConsumer()