We used here to create a private reply queue for each request/reply (and
also, we discovered leaks with Ted Ross in 0.10 version that time).
After that, we changed our code to pre-create a private reply queue for
each connection that perform request / reply operations, using message.

message.ReplyTo = ...
message.CorrelationId = correlationId;

sender.Send(message);

In the reply side, we put:

replyMessage.Subject = _message.ReplyTo.Name;
replyMessage.CorrelationId = _message.CorrelationId;

_replySender.Send(replyMessage);

To reply back the message with previous sent correlation Id. This make
things faster and also, lowered the latency since we don't need to setup a
queue in the broker,
avoid resource usage and network round-trips (this helps a lot in
high-latency connections).


On Mon, Jul 16, 2012 at 10:45 AM, Toralf Lund <toralf.l...@pgs.com> wrote:

> On 16/07/12 15:01, Rajith Attapattu wrote:
>
>> I'd agree with Gordon.
>> If at all possible I will pre-create my private queues, rather than
>> creating them on demand.
>> Writing a bit of extra code for working with a fix number of queues is
>> worth from a performance standpoint.
>>
> It's not just about handling the queues, though. If I reuse the response
> queue, I also have to worry about responses that actually belong to
> requests sent in the past. A simplistic way of handling those would be to
> just clear the queue before a new request is sent, but there is a risk that
> the remote end sends a reply that I've given up on after the queue is
> cleared, but before the new request is processed. So, to make sure I always
> read the correct reply, I probably have to add/match extra id fields -
> possibly "messageId"/"correlationId". This also represents *some*
> overhead...
>
> - Toralf
>
>
>> Regards,
>>
>> Rajith
>>
>> On Mon, Jul 16, 2012 at 8:39 AM, Gordon Sim<g...@redhat.com>  wrote:
>>
>>> On 07/16/2012 12:34 PM, Toralf Lund wrote:
>>>
>>>> Hi.
>>>>
>>>> What kind of overhead to you expect from having to create the
>>>> ("private") queue when initialising a qpid::messaging::receiver?
>>>>
>>>
>>> If it is not a durable queue then the overhead is not that high,
>>> however...
>>>
>>>
>>>  I'm implementing request-response type communication over a direct
>>>> exchange, with a private "auto-delete" queue for responses (whose
>>>> address is specified in replyTo on the request message.) So far, I've
>>>> just created a new queue on every call rather than trying to keep the
>>>> same one throughout the session because it's simpler in many ways - it
>>>> saves me from some queue management, and I don't have to worry about
>>>> reading the wrong response e.g. because of a time-out waiting for a
>>>> reply to a previous request.
>>>>
>>>> So, do you think that this sounds like a bad idea, or is it quite all
>>>> right because the overhead imposed by creating and deleting queues all
>>>> the time is negligible?
>>>>
>>>
>>> ... this probably depends on the expected/required rate of requests.
>>>
>>> For low rates (say 100s or perhaps 1000s per second) it probably wouldn't
>>> have too much impact, but as you start getting above that then you would
>>> be
>>> spending time on queue creation and deletion that would be better spent
>>> processing messages and requests.
>>>
>>>
>>>
>>> ------------------------------**------------------------------**
>>> ---------
>>> To unsubscribe, e-mail: 
>>> users-unsubscribe@qpid.apache.**org<users-unsubscr...@qpid.apache.org>
>>> For additional commands, e-mail: users-h...@qpid.apache.org
>>>
>>>  ------------------------------**------------------------------**
>> ---------
>> To unsubscribe, e-mail: 
>> users-unsubscribe@qpid.apache.**org<users-unsubscr...@qpid.apache.org>
>> For additional commands, e-mail: users-h...@qpid.apache.org
>>
>>
>
> This e-mail, including any attachments and response string, may contain
> proprietary information which is confidential and may be legally
> privileged. It is for the intended recipient only. If you are not the
> intended recipient or transmission error has misdirected this e-mail,
> please notify the author by return e-mail and delete this message and any
> attachment immediately. If you are not the intended recipient you must not
> use, disclose, distribute, forward, copy, print or rely on this e-mail in
> any way except as permitted by the author.
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: 
> users-unsubscribe@qpid.apache.**org<users-unsubscr...@qpid.apache.org>
> For additional commands, e-mail: users-h...@qpid.apache.org
>
>

Reply via email to