[rabbitmq-discuss] Connection is always in "flow" State.
Simon MacMullen
simon at rabbitmq.com
Thu Jul 10 16:41:24 BST 2014
On 10/07/2014 4:23PM, Jason McIntosh wrote:
> Interesting on the 3.3 change. SO I gotta ask about this situation on
> that (though it sounds off hand that'll fix the behavior I've seen on
> 3.2.4). If a consumer is consumer at 80 msgs/second, but incoming rates
> are able to publish at 5k a second and the server CPU's/disks/etc.
> aren't being touched, will rabbit then put back pressure on the
> publishing rate forcing it down to 72 msgs/second (~10% less than
> consumes)?
No, no, no!
(And this is why writing documentation is hard! At least for me.)
I somewhat oversimplified. What really happens is that the queue will
choose to do work that relates to consumers rather than publishers as
long as:
1) The queue is running flat out; it never has any idle time.
2) The queue actually has work to do that pertains to consuming.
3) Messages are being consumed at less than 110% of the rate they're
being published.
In the case you describe above, 2) will be false 99% of the time, at
which point the queue will accept publishes as fast as it can.
In other words, when I said "if consumers and producers are both going
as fast as they can" I meant if the limiting factor is the queue itself,
not whatever work they're doing.
I hope that is clearer this time round.
> I'd assume then that'd propagate up to the publisher if
> there's a chain of rabbit servers all running 3.3 - e.g. the code
> publish to rabbit which shovels to the remote rabbit where the code
> consumer runs. In this case the code publisher would get back pressure
> that'd reduce it's publish rate to ~72msgs/second?
Which would be a disaster. It's meant to be a queuing system, after all :-)
Cheers, Simon
--
Simon MacMullen
RabbitMQ, Pivotal
More information about the rabbitmq-discuss
mailing list