-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unexpected: synchronous publishing without pub confirms is slower than with confirms #60
Comments
Puka treats your message delivery serious. When you publish with pubacks=False, what do you actually mean by saying "synchronous"? Usually people mean: being sent off the networks. For puka this is not enough and it actually tries to synchronize with the server to make sure it was indeed delivered. That means that publishing in pubacks=False mode is two operations: async publish followed by sync something to synchronize. If you wish higher speed with pubacks=False, please send many messages, gather a number of promises and wait for them all at once. |
Sorry @majek, let me rephrase: I meant "blocking" via
|
hmm If pubacks=True puka uses publisher acks to synchronize. If pubacks=False puka uses some other obscure mechanism to synchronize, since publishes are asycn. |
I see, in the
@majek, My app uses two types of AMQP messaging with respect to delivery guarantees:
For the second scenario, is there a way to configure a puka Client that would disable the extra overhead of the @majek, I am looking for alternatives to my current AMQP client due to licensing incompatibilities, and would like to make an informed decision. In the README, it states
Does the above quote mean that there is no motivation to maintain it and that it would be a non-starter for use in production? What is your recommendation? Are a lot of people using it? If I switch to puka, I will be motivated to contribute, but I want to make sure that it's already stable before making the move. Many thanks, |
Running both RabbitMQ 3.5.1 and test app on my recent model development MacBookPro (OS X Yosemite), I encountered unexpected, reproducible performance conundrum: with pubacks=False, synchronous publishing is consistently slower than with pubacks=True. This is counterintuitive and differs from all other AMQP clients that I profiled.
I used the apps from https://github.com/vitaly-krugl/amqp-perf to profile
basic_publish
performance. Below are a few examples of what I am talking about.puka with
pubacks=False
I verified that the channel IS NOT in confirm mode
puka with
pubacks=True
I verified that the channel IS in confirm mode
Here, you can see that both real and user execution times are smaller for
pubacks=True
. This is unexpected, because withpubacks=True
the broker needs to check whether the exchange exists before it can Ack, whereas withpubacks=False
, the broker can Ack right away.Below are a couple of comparable tests and corresponding execution times for haigha:
haigha with
pubacks=False
haigha with
pubacks=True
The text was updated successfully, but these errors were encountered: