[zeromq-dev] orderly shutdown

Martin Lucina mato at kotelna.sk
Tue Nov 30 17:29:31 CET 2010


Hi,

Koert.Kuipers at diamondnotch.com said:
> How do I do an orderly shutdown of a socket? Say I want to close a PULL socket.
> Can I do something like:
> 
> 1)      Close the endpoint so that no more messages get added to the queue
> 
> 2)      Process everything that’s left in the queue
> 
> 3)      Terminate

Not quite. At the moment we don't have the equivalent of the POSIX
shutdown() system call, this is something that should probably be added in
a future release.

What you can do is (with respect to a single socket):

1) Process incoming requests, possibly sending replies.

2) Call zmq_close(). Without setting ZMQ_LINGER this will ensure that any
replies queued but not yet sent will get forwardred to the network.

3) Call zmq_term(). This blocks until the messages pending to be sent are
actually sent.

Note this is all for ZeroMQ 2.1 (master branch). 2.0.x just drops
everything on zmq_close(). 2.1.0 will be released shortly.

-mato




More information about the zeromq-dev mailing list