[rabbitmq-discuss] Puka client and publisher confirms performance
majek04 at gmail.com
Wed Mar 14 18:42:40 GMT 2012
On Wed, Mar 14, 2012 at 12:31, Christos Stavrakakis
<stavr.chris at gmail.com> wrote:
> I am using Puka client  in order to send messages with guaranteed
> delivery using publisher confirms.
> Trying to send 200.000 messages I see that waiting for the confirms, takes a
> lot of time.
> To be more specific:
> promises = 
> t0 = time.time()
> for i in range(0,200000):
> promise = client.basic_publish(exchange='test_exchange',
> t1 = time.time()
Right. This waits for _any_ promise to finish. So that doesn't guarantee
that all the messages will be delivered to the server.
If you want to wait for all the promises consider using wait_for_all.
> t2 = time.time()
> promise = client.close()
> In this example t1-t0 is arround 9s while t2-t1 is more than 100 seconds!!
> Increasing the number of messages results in even worse performance.
> Can anyone explain this behavior ? Is there a more effective way to use
> publisher confirms ?
Right. Sending 100k messages to an empty exchange (no bindings):
For client.wait(promises) (ie: waiting for first message to be delivered):
But, when we start sending to a queue that exists:
For some reason this gets really slow. Additionally, it looks like Puka is using
a lot of CPU. Not sure why.
More information about the rabbitmq-discuss