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 _______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
