You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by Jiri Krutil <ji...@krutil.com> on 2011/07/03 09:22:31 UTC

Re: Address of default no-name exchange

>> Let's say I'm writing a service processing requests coming from
>> different clients, each request having a different reply-to address. To
>> be able to send the responses, do I have to create a new Sender for each
>> request? If creating a Sender means a sync roundtrip to broker, won't
>> this kill my performance? Surely there must be some way how to send the
>> requests async? (without explicit bindings to the response queues)
>
> Yes, I agree that in that use case it would be useful to bypass the  
> passive declare. Perhaps an overloaded createSender() with an  
> explicit sync flag?
>
> Having a pseudonym for the default exchange might also address your  
> original aim to create a sender to that exchange. My concern there  
> is whether that would be relevant outside the specific protocol  
> version(s) defining such an exchange.
>
> I think the fully async creation of senders is a nicer solution. Thoughts?

I think both would be useful.

In some scenarios the list of exchanges is statis and people tend to  
manually pre-configure durable exchanges and don't declare anything  
programmaticaly on run time. In such case you would prefer an async  
version of createSender() that does not check if the exchange is there.

Being able to address the default exchange would be great. Unless  
there is some strong technical reason against it, I think it should be  
possible. It is the typical thing you want in a request-response  
messaging pattern, where you do *not* want to verify if the reply-to  
queue exists or not.

What if you just allowed the Address name to be empty and let it  
represent the default exchange?


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org


Re: Address of default no-name exchange

Posted by Gordon Sim <gs...@redhat.com>.
On 07/03/2011 08:22 AM, Jiri Krutil wrote:
>>> Let's say I'm writing a service processing requests coming from
>>> different clients, each request having a different reply-to address. To
>>> be able to send the responses, do I have to create a new Sender for each
>>> request? If creating a Sender means a sync roundtrip to broker, won't
>>> this kill my performance? Surely there must be some way how to send the
>>> requests async? (without explicit bindings to the response queues)
>>
>> Yes, I agree that in that use case it would be useful to bypass the
>> passive declare. Perhaps an overloaded createSender() with an explicit
>> sync flag?
>>
>> Having a pseudonym for the default exchange might also address your
>> original aim to create a sender to that exchange. My concern there is
>> whether that would be relevant outside the specific protocol
>> version(s) defining such an exchange.
>>
>> I think the fully async creation of senders is a nicer solution.
>> Thoughts?
>
> I think both would be useful.
>
> In some scenarios the list of exchanges is statis and people tend to
> manually pre-configure durable exchanges and don't declare anything
> programmaticaly on run time. In such case you would prefer an async
> version of createSender() that does not check if the exchange is there.

Even if the exchange is pre-configured, verifying that the address used 
to create the sender matches an existing configuration can be useful and 
helps catch setup errors early.

However, I agree that there are cases where you may want to go 
asynchronous (as in your example).

> Being able to address the default exchange would be great. Unless there
> is some strong technical reason against it, I think it should be
> possible. It is the typical thing you want in a request-response
> messaging pattern, where you do *not* want to verify if the reply-to
> queue exists or not.

I think in the general request-response case you want to allow for any 
address, including those that involve another exchange. So to me, using 
a sender to the default exchange is a special case.

> What if you just allowed the Address name to be empty and let it
> represent the default exchange?

I prefer something a little more explicit, e.g. a special name 
(qpid.all-queues). An empty name would look too much like a syntax error 
and is also too closely tied to a detail of a particular protocol version.

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org