qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Antoine Chevin <antoine.che...@gmail.com>
Subject RE: Accessing queues with '/' in name in Rest API [qpid java broker 6.0.4]
Date Fri, 03 Mar 2017 09:56:59 GMT
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
> > > > >
> > > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message