[zeromq-dev] PUB/SUB pattern, rate control and backpressure

Emmanuel TAUREL taurel at esrf.fr
Thu Dec 15 15:18:07 CET 2011


Hello all,

On 10/12/2011 12:08, Martin Sustrik wrote:
> My proposal thus is to use rate control to control the behaviour. For
> example, user can set ZMQ_RATE to 10Mb/s and is expected to ensure that
> the network is capable of that load.
>
> 1. The I/O thread will extract messages from the pipe at rate of 10Mb/s.
> The network should be able to handle the load, so pushing these messages
> into the network shouldn't be a problem. If it happens to be a problem,
> I/O thread will start dropping messages so that draining of the pipe
> continues at 10Mb/s.
>
> 2. The application thread will push massages to the pipe and if the pipe
> is full it will *block*.
>

A question related to this behavior. First, sorry for the delay before 
asking this question!

Let's suppose that one of the subscriber for one reason or another 
enters a state where it is not able anymore to
sustain the 10 Mb/s rate. This subscriber has a limited ZMQ_RCVHWM.  
After a while, the subscriber queue is full and it's the TCP buffer which
will be used to store messages. Then the TCP buffer will also be full 
and for the publisher I/O thread, pushing new messages to this subscriber
becomes a problem. Therefore the I/O thread will drop messages for this 
(and only for this) subscriber. The other subscribers still able to 
sustain the
10 Mb/s rate will not notice anything.

Is the above correct?
Will it also be the case if the host where the faulty subscriber is 
running crashes for any reason?

Thank's for your answers

Emmanuel




More information about the zeromq-dev mailing list