[zeromq-dev] Fwd: Welcome to the "zeromq-dev" mailing list

Jeremy Richemont jrichemont at gmail.com
Thu May 29 18:20:41 CEST 2014


Hi. I am struggling to work out how to use zmq to implement the
architecture I need. I have a classic publish/subscribe situation except
that once client x has subscribed to a topic I need the topic data to be
sent to it to be cached if the client dies and resent on reconnect. The
data order is important and I can't miss messages should the client be
offline for a while.

The PUB/SUB pattern doesn't seem to know about individual clients and will
just stop sending to client x if it dies. Plus I can't find out this has
happened and cache the messages, or know when it reconnects.

To try to get around this I used the REQ/REP pattern so the clients can
announce themselves and have some persistence but this is not ideal for a
couple of reasons:

1) The clients must constantly ask "got any data for me?" which offends my
sensibilities

2) What happens if there's no data to send to client x but there is to
client y? Without zmq I'd have had a thread per client and simply block the
one with no data but I can't block client x without also blocking client y
in a single thread.

Am I trying to shove a round peg in a square hole, here? Is there some way
I can get feedback from PUB saying 'failed to send to client x'? so I can
cache the messages instead? Or is there some other pattern I should be
using?

Otherwise it's back to low level tcp for me...

Many thanks;

Jeremy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20140529/63a2165e/attachment.htm>


More information about the zeromq-dev mailing list