The delayed message exchange will not be able to match built-in exchanges in throughput, at least
in this generation. It does way more work than built-in exchanges to do what it does.
On 18 May 2016 at 19:24:26, Ted Kimble (
ted.k...@outreach.io) wrote:
> I am able to reproduce this locally, though the situation is better after
> upgrading to Erlang/OTP 18. I have a fresh copy of RabbitMQ 6.3.1 installed
> via Homebrew on Mac OS X. The attached script accepts two ARGS -- a delay
> (in ms) and the number of messages to be published.
>
> If I run `push_rabbitmq 0 40000` to publish 40,000 messages with a zero
> second delay, I see the messages reach their queue at a rate of about
> 16,0000 messages/s. This is equivalent to the rate I see when not running
> on the delayed exchange.
>
> If I run `push_rabbitmq 1000 40000` to publish 40,000 messages with a one
> second delay, I see the messages reach their queue at an initial rate of
> about 1,200 messages/s for about three seconds, followed by a roughly
> constant rate of 800 messages/s. The slowdown is also accompanied by a few
> `Mnesia is overloaded: {dump_log,write_threshold}` warnings.
>
> If I run the previous command against our RabbitMQ cluster (same
> Erlang/RabbitMQ version, but using the "autocluster" plugin, as well as
> more CPU/RAM constrained than my local machine), we see a decline in the
> publishing rate that asymptotically approaches 0. I've attached a graph
> showing this behavior when publishing 100,000 messages (the graph is the
> total number of messages in the queue, which we would expect to increase
> linearly, but instead see it approach a publishing rate of around one
> message/s well before it nears the 100,000 mark).
>
>
>
>
>
>