报错如下:
error connecting to nsqd - dial tcp: i/o timeout
要弄明白这个错误,我们就得知道它的原因
在nsq中,如果消费者通过nsqlookup去连接nsqd从而获取消息中的数据,那个他的过程是如下的:
首先启动一个nsqlookup节点,用来维护,管理,发现nsqd节点
然后启动nsqd节点,nsqd节点启动的时候需要制定nsqlookup节点的地址,以及一个自身的广播地址参数
再然后生产者向指定的nsqd节点里面写入数据
之后消费者从nsqlookup中指定的topic里面找到对应的nsqd节点,并根据之前启动nsqd节点的广播地址去连接nsqd节点
最后,消费者连上nsqd节点以后就能够获取里面的数据了
再回到我们的错误
发生错误的原因是我启动nsqd节点的时候使用的指令如下:
nsqd --lookupd-tcp-address=127.0.0.1:4160
这里没有指定参数-broadcast-address参数,这个参数的作用就是将nsqd自身的地址发送给nsqlookup节点
所以我们重启nsqd节点就好了
nsqd --lookupd-tcp-address=127.0.0.1:4160 -broadcast-address=‘nsqd ip‘