Is there some sort of a specification or other explanation that describes the normal cases where you can expect a message sent on a ZeroMQ socket to not be received by ( all ) the listening processes, for each communication type?
For example I have an experimental program which basically assumes that all subscribers to a PUB
socket receive all messages sent on that socket ( after an initialization handshake ). I would like to understand the cases where that assumption may be false. Thanks, and sorry if this has already been asked.
ZeroMQ guarantees to deliver all the parts (one or more) for a message, or none of them. This allows you to send or receive a list of frames as a single on-the-wire message. A message (single or multipart) must fit in memory.
ZeroMQ patterns are implemented by pairs of sockets with matching types. The built-in core ZeroMQ patterns are: Request-reply, which connects a set of clients to a set of services. This is a remote procedure call and task distribution pattern.
ZeroMQ provides a whole slew of language APIs which run on most operating systems and allows you to communicate seamlessly between all sorts of programs. It also provides a collection of patterns, such as request-reply and publish-subscribe which assist you in creating and structuring your network.
No, there's no method in the API to check if a socket is connected. ZeroMq abstracts the network; client and server connections are completely transparent to the peer making the connection.
The chart in this image is a good guide to when zmq sockets drop messages: https://raw.github.com/imatix/zguide/master/images/fig25.png
For more information, you might want to read http://zguide.zeromq.org/py:all#Missing-Message-Problem-Solver
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With