nsq的消費者通過nsqlookup連接nsqd發生的timeout的錯誤


報錯如下:

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'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM