qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Fraser Adams <fraser.ad...@blueyonder.co.uk>
Subject Re: Why performance of sending durable messages to qpid queue is really bad?
Date Wed, 18 Jun 2014 17:39:15 GMT
On 18/06/14 09:13, Gordon Sim wrote:
> On 06/17/2014 10:35 PM, smartdog wrote:
>> It is the qpid c++ broker. The BDB store is used. Is there a way to 
>> improve
>> the performance while preserving the persistence?
> Can you send messages in batches? I.e. don't make every send synchronous.
> A synchronous send will always be a little slower and for the c++ 
> broker if the message is durable there is an added penalty at present 
> over AMQP 1.0 as the broker doesn't flush the disk immediately (it 
> doesn't get any explicit indication that the client is not going to 
> send anything else until it gets back the disposition for the message).
Pavel & Gordon, smartdog's original comment said "sending an undurable 
message to a qpid queue takes 1-3ms, while sending a durable message 
takes static 1000ms" taking 1 second does seem awfully high even given 
the synchronous and flush comments, clearly the message size may be 
significant, but I'm guessing if he was sending *really big* messages 
he'd have said so it's probably not significant here, so the flush delay 
seems plausible.

what determines when the flush occurs?

smartdog, as a thought one thing that you could try would be to use the 
qpid spout program to try and send a message. The spout program uses 
qpid::messaging so you could use that approach to rule out any quirks 
that may exist in the interactions with messenger, you can also set it 
to use either AMQP 0.10 or AMQP 1.0 so you should be able to check if 
the AMQP 1.0 flush thing is the most likely issue, basically if it goes 
fast set to AMQP 0.10 and slower when set to AMQP 1.0 then that would 
*probably* point to it being the culprit.

spout lives in <qpid>/cpp/<bld>/examples/messaging
where <qpid> is the root of the source tree and <bld> is your cmake 
build directory.

The basic syntax to send a message in AMQP 1.0 is:

./spout --connection-options {protocol:amqp1.0} -b localhost --content 
"Hello World" "<destination-node>"

where destination-node is the name of the queue/exchange you want to 
send the message to. For AMQP 0.10 it's just:

./spout -b localhost --content "Hello World" "<destination-node>"

To make the message durable I think you simply use the -d option e.g.

./spout --connection-options {protocol:amqp1.0} -d -b localhost 
--content "Hello World" "<destination-node>"


./spout -d -b localhost --content "Hello World" "<destination-node>"


To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org

View raw message