我有一個客戶端(PULL)連接到服務器(PUSH)。起初他們工作得很好。但後來連接中斷,客戶端ZeroMQ不嘗試重新連接到服務器。ZeroMQ客戶端丟失連接
一個神祕的事情是,如果我在客戶端和服務器端執行netstat
,客戶端顯示連接仍然是ESTABLISHED,而服務器端沒有相應的條目。我想這是客戶端不重新連接的原因。
PS:客戶端和服務器處於不同的IDC中,它們之間存在帶寬限制。但是當斷開連接發生時,我們的顯示器顯示它沒有達到頻段限制。
而且,當我在服務器端做的netstat(連接是罰款),有時發送-Q列是非常大的,然後下降到0
這就是我掌握的信息。如果你需要更多的細節,請告訴我。
什麼語言?任何代碼示例?如果你正在殺死你的上下文(超出範圍?),那麼套接字將不會重新連接...通常,如果一切仍然存在,zmq將處理連接丟失,並且沒有太多問題... – g19fanatic
您是否發現了更多這方面的信息?我正在使用C#綁定(clrzmq)並且遇到類似這樣的事情。我使用了一個連接多個終端的SUB插座,並且突然間所有傳入的數據都將丟失。如果我撥打斷開連接並再次連接(在客戶端),所有的都很好。如果我可以再次發生這種情況,請參考netstat。 –
可能會補充說我已經實施了強制斷開連接檢測(使用心跳和超時),強制ZeroMQ套接字斷開/連接暫時無聲的終端。這不幸的是,雙方的所有隊列將因「重置」連接而被丟棄。 –