Reputation: 1173
I am testing .NET version of ZeroMQ to understand how to handle network failures. I put the server (pub socket) to one external machine and debugging the client (sub socket). If I stop my local Wi-Fi connection for seconds, then ZeroMQ automatically recovers and I even get remaining values. However, if I disable Wi-Fi for longer time like a minute, then it just gets stuck on a frame waiting. How can I configure this period when ZeroMQ is still able to recover? And how can I reconnect manually after, say, several minutes? How can I understand that the socket is locked and I need to kill/open again?
Upvotes: 0
Views: 924
Reputation: 1173
I was able to find an answer on their GitHub https://github.com/zeromq/netmq/issues/845. Seems that the behavior is by design as I got the same with native zmq lib via .NET binding.
Upvotes: 0
Reputation: 1
Q :
" How can I configure this ... ?"
A :
Use the .NET versions of zmq_setsockopt()
detailed parameter settings - family of link-management parameters alike ZMQ_RECONNECT_IVL
, ZMQ_RCVTIMEO
and the likes.
All other questions depend on your code.
If using blocking-forms of the .recv()
-methods, you can easily throw yourself into unsalvageable deadlocks, best never block your own code ( why one would ever deliberately lose one's own code domain-of-control ).
If in a need to indeed understand low-level internal link-management details, do not hesitate to use zmq_socket_monitor()
instrumentation ( if not available in .NET binding, still may use another language to see details the monitor-instance reports about link-state and related events ).
Upvotes: 1