Cool. Is there a reason the relaxed behavior is to close and reconnect in order to reset the state? I'd think all you'd need to do here is change a local state variable in the client and just reuse the same connection. As it stands, I'd still want to roll my own REQ over a DEALER socket unless I'm missing something.
On 12/13/2013 10:24 PM, Pieter Hintjens wrote: > The ZMQ_REQ_RELAXED option on ZeroMQ v4, lets you resend requests. > > On Sat, Dec 14, 2013 at 3:46 AM, Justin Karneges <[email protected]> wrote: >> ZeroMQ does not resend messages, so while the reconnect/queuing logic >> will protect you to some degree, you still need to account for message loss. >> >> If you're using REQ then you'll need to timeout the request, otherwise >> if a request or response message is lost then you'll never be able to >> make a request on the socket ever again. So don't just indefinitely >> block on a send or receive. Further, ZeroMQ historically hasn't had a >> way to get a REQ socket out of the "waiting for response" state in the >> event of a timeout other than by closing the socket and starting over. >> This means the REQ type is not really usable in production. Better to >> use DEALER and format a REQ-compatible message yourself. REP does not >> suffer from these problems, so you can keep on using that and have >> DEALER talk to REP. >> >> Note: it is possible that very recent versions of ZeroMQ allow REQ >> sockets to revert state on error but I haven't been following this closely. >> >> On 12/13/2013 04:17 PM, Sean Robertson wrote: >>> I believe the REQ will simply wait for the REP to come back up, >>> re-bind and send something. >>> >>> On Fri, Dec 13, 2013 at 2:53 PM, Mohit Jaggi <[email protected]> wrote: >>>> Hi, >>>> In most ZMQ sockets, the underlying TCP socket can change transparently. >>>> Does that apply to REQ-REP sockets as well? Or will the receive call to ZMQ >>>> socket fail? >>>> >>>> sock = new REQ socket; >>>> connect(sock); >>>> while(1) { >>>> request = receive(...); >>>> ... >>>> send(response); >>>> } >>>> >>>> For example in the above code, let us say that the server with REP socket >>>> on >>>> the other side crashed and restarted. What will happen? >>>> >>>> Thanks, >>>> Mohit. >>>> >>>> _______________________________________________ >>>> zeromq-dev mailing list >>>> [email protected] >>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev >>>> >>> _______________________________________________ >>> zeromq-dev mailing list >>> [email protected] >>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev >>> >> >> _______________________________________________ >> zeromq-dev mailing list >> [email protected] >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev > _______________________________________________ > zeromq-dev mailing list > [email protected] > http://lists.zeromq.org/mailman/listinfo/zeromq-dev > _______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
