[zeromq-dev] XREQ socket sends messages to death server. How to notice and disconnect from a death server?

Toni Michel michel at snaptec.de
Thu Dec 9 13:07:34 CET 2010


On 09.12.2010 10:17, Sven Koebnick wrote:
> I have a XREQ socket at the client, talking to a set of servers(XREP).
> I want to handle server deaths. The client should notice this, as he
> does not get an answer for a sent request in an
> appropriate time. In this case, the client should resend the message. As
> he is connected to more than 1 server,
> the request will be accomplished by a server which is still available.
> => I cant use blocking recv at the client, as otherwise the client will
> block once he sent a message to a death server
> => instead, the recv must use zmq.NOBLOCK. Each time the client sends a
> message, he waits for 2 seconds max for a reply.
> In case he does not get any, he will resend the message.
> The client sends a message to a death server. As he does not get any
> reply for 2 seconds, he resends the message. As the
> XREQ is loadbalancing, the message is sent to another server, and
> everythings fine. But the problem is, that one of the
> next messages will be send to the death server again. Consider having
> one client and 3 servers. If one server dies, the
> client is sending a msg to the death server every 3 messages
> (loadbalancing).
> => So every 3 messages the client waits for another 2 seconds. Having a
> Gui behind, this behavior is unacceptable.
>
> I thought ZMQ will notice server deaths and remove kill the connection 
> to such servers automatically.
>
> Here you can find the complete Testcase: https://gist.github.com/734071
>
> I am starting the client first, connecting to the 3 server adresses. 
> Then I start one server, which actually binds to its address.
> The client tries to send the messages load-balanced to all 3 servers, 
> although only one has performed a bind. So the client runs
> in the timeout and tries to resend the message to another server.
>
> So the main question are:
> - Am I misunderstanding something?
> - Do I have to disconnect the client from death servers by manually? I 
> thought zmq would handle it?
>
>
> Thanks for your help.
> - Toni


Hm, I spoke with some people at the zmq IRC, and it seems as if it would 
be a zmq bug. I posted an issue here 
https://github.com/zeromq/pyzmq/issues/issue/51
Maybe youll could take a look twice. I also append a minimal testcase.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20101209/47e46170/attachment.htm>


More information about the zeromq-dev mailing list