報錯如下:
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'