qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Keith W <keith.w...@gmail.com>
Subject Re: Accessing queues with '/' in name in Rest API [qpid java broker 6.0.4]
Date Tue, 07 Mar 2017 09:27:05 GMT
Hi Antoine,

> Do you know if the broker federation is planned for v7?

No - it won't be included in v7.     Federation is a feature we'd
would like to add in the medium term - but it requires the improved
AMQP 1.0 support (which will be included in v7) as a building block.
I would anticipate that simple federation would be added 2018.

Kind regards, Keith/




On 3 March 2017 at 09:56, Antoine Chevin <antoine.chevin@gmail.com> wrote:
> Hello Rob,
>
> We gave a try ot the globalAddressDomains and it works fine. I think we
> will use regular queue names and globalAddressDomains for our use case.
>
> Thank you!
> Do you know if the broker federation is planned for v7?
>
> Regards,
> Antoine
>
> -----Original Message-----
> From: Rob Godfrey [mailto:rob.j.godfrey@gmail.com]
> Sent: jeudi 2 mars 2017 16:07
> To: users@qpid.apache.org
> Subject: Re: Accessing queues with '/' in name in Rest API [qpid java
> broker 6.0.4]
>
> On 2 March 2017 at 15:11, Antoine Chevin <antoine.chevin@gmail.com> wrote:
>
>> Thank you Rob for the very detailed answer.
>> I saw in the code
>> (org.apache.qpid.server.protocol.v1_0.Session_1_0#remoteLinkCreation)t
>> hat the exchange lookup is skipped if the address starts with a '/'.
>> I intend to use a '/' in the beginning because I don't want the
>> exchange lookup.
>> Do you think it is a good approach?
>>
>>
> So the intent here is that addresses that start with "/" are considered to
> be "global" addresses as previously described, addresses that start with
> "/" but match one of the gloabAddressDomains for the virtual host would
> route within the virtual host to the appropriate destination, names that
> begin with "/" but don't match one of the domains for the vhost would be
> sent via federation to a remote broker (when that code gets completed -
> obviously we don't have federation of that kind in the Java Broker
> currently).
>
> So having a name which begins with "/" may work right now, but it's
> reasonably likely it might break in the future.  In general I would avoid
> "/" as well as "?", ";", ",", "[", "]", "|", "(", and ")" in queue names.
>
> Is the plan that all your queues will start with the same /<foo>/...
> prefix, or will different queues have different prefixes?
>
> -- Rob
>
>
>> Thank you,
>> Regards,
>> Antoine
>>
>> -----Original Message-----
>> From: Rob Godfrey [mailto:rob.j.godfrey@gmail.com]
>> Sent: jeudi 2 mars 2017 11:09
>> To: users@qpid.apache.org
>> Subject: Re: Accessing queues with '/' in name in Rest API [qpid java
>> broker 6.0.4]
>>
>> On 2 March 2017 at 10:46, Antoine Chevin <antoine.chevin@gmail.com> wrote:
>>
>> > Thank you Rob for the answer. Yes it really helps!
>> > I noticed that addresses in the form <exchange-name>/<routing-key>
>> > are also used with AMQP 1-0. Is it expected?
>> >
>> >
>> It is part of how the Java Broker maps the AMQP 0-x
>> Exchange/Binding/Queue model into the AMQP 1.0 address space, yes.
>>
>> In short when the Java Broker receives a message to an address X it
>> first looks to see if there is an exchange X, then if there is a queue
>> X, then if X contains a / it looks to see if the part before the / is
>> an exchange name, and if so it sends to that exchange with the part
>> after the / being used as the routing key.
>>
>> When the Java Broker receives a request to consume from an address X
>> it first looks to see if there is a Queue X, then if there is an
>> Exchange X (in which case it creates a temporary queue and binds with
>> an empty binding key), and then if X contains a / and the part before
>> the X is an exchange name it will create a temporary queue and bind
>> that to the exchange with the binding key being the part of X after the /.
>>
>> Note the asymmetry on send and consume that on send it first looks for
>> an exchange and on consume it first looks for a queue.
>>
>> (There are a few more rules for the globalAddressDomains and for
>> system addresses like $management, but the above is the general rule).
>>
>> -- Rob
>>
>>
>> > Thank you,
>> > Regards,
>> > Antoine
>> >
>> > On 1 March 2017 at 20:25, Olivier Mallassi
>> > <olivier.mallassi@gmail.com>
>> > wrote:
>> >
>> > > Rob, all
>> > >
>> > > Thank you rob for this. Could you please share more details
>> > > regarding not using the "/"?
>> > >
>> > >
>> > So there are a couple of reasons why I think not using a / makes sense:
>> >
>> > 1) Because of exactly the REST / encoding issue that you ran into -
>> > using characters that often need escaping can cause a lot of issues
>> > in config files, parameters etc...  depending upon where the queue
>> > name might be used you may end up encoding that / one, two or even
>> > more times... this gets messy fast
>> >
>> > 2) Because in AMQP addressing we've been imaging the / as a
>> > separator when using some sort of topological address scheme for
>> > addressing in federated networks... for instance you might have a
>> > queue for orders in you dongle department of your widget division of
>> > your company foo.com... and you might expose that address as
>> > //foo.com/widget/dongle/orders  whereas someone connected directly
>> > to
>> the
>> broker would just see the queue as "orders"
>> > (though they could also address it by its full "global" name).  The
>> > Java Broker already makes some allowance for this with the notion of
>> > "globalAddressDomains" which you can set on the virtual host.  For
>> > any domain <foo> in the list of defined globalAddressDomains, the
>> > virtualhost will accept messages sent <foo>/M as if it were sent to
>> > M (and the same with consuming).
>> >
>> > Also note that for the Java Broker an address of the form <exchange
>> > name>/<routing key> can be used to send / receive via AMQP 0-x
>> > exchange/routing-key semantics.
>> >
>> > Hope this helps,
>> > Rob
>> >
>> >
>> > > On our side we are using amqp 1.0 that, AFAIU, promotes the "complex"
>> > > addressing plans
>> > > The benefit for us would be
>> > > - alignements between our http and amqp naming conventions. It is
>> > > a nice to have but can help lisibility
>> > > - use "URL" to route messages. Like the samples with the
>> > > linkroutepattern
>> > >
>> > > Not sure these are good ideas btw. Any feedback is welcomed
>> > >
>> > > Regards
>> > >
>> > > On Wed, 1 Mar 2017 at 18:16, Rob Godfrey <rob.j.godfrey@gmail.com>
>> > wrote:
>> > >
>> > > > In general I'd advise against using the '/' character in queue
>> > > > names if possible... however if you must, then you need double
>> > > > encode the name, so "a/b" would become "a%252Fb"
>> > > >
>> > > > Hope this helps,
>> > > > Rob
>> > > >
>> > > > On 1 March 2017 at 17:31, Antoine Chevin
>> > > > <antoine.chevin@gmail.com>
>> > > wrote:
>> > > >
>> > > > > Hello,
>> > > > >
>> > > > > I created a queue with a '/' in the name. How can I access it
>> > > > > in the
>> > > rest
>> > > > > api?
>> > > > > I tried to encode the '/' with %2F but I still get a 422 "too
>> > > > > many
>> > > > entries
>> > > > > in path for REST servlet queue."
>> > > > > Can you please help?
>> > > > >
>> > > > > Regards,
>> > > > > Antoine
>> > > > >
>> > > >
>> > >
>> >
>>

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


Mime
View raw message