On 08/06/2014 07:17 PM, Fraser Adams wrote:
With your suggestion the broker would interpret that as an address to
the node amq.topic with the subject filter *.news. That makes logical
sense given most peoples' experience of topics I think.

But say I had a topic exchange called simply topic and a really simply
non-wildcarded subject

./recv localhost/topic/news

How is that address interpreted? Now I suspect that as the broker would
know the topic node is a topic exchange you could still make the
inference, but there is a bit of ambiguity around topic/news as it could
equally refer to a node called "topic/news". I guess that in this
scenario you'd first check for the node "topic/news" and if that didn't
exist check that topic was a topic exchange and if so then apply the
filter?

Yes. (Some brokers may prevent '/' in node names, though qpidd does not at present).

I wonder what if there was for some bizarre reason a queue
called topic too then there would be real ambiguity as you could in
theory apply the filter to the message source from either node.

True, but the ambiguity exists regardless of any extra information in the address. At present the c++ broker supports disambiguation by having a terminus capability of 'queue' or 'topic' requested.

Since not all clients support setting capabilities, and there is no other standard way to disambiguate, in ithe absence of a capability being specified the queue is assumed rather than the exchange, unless there is a topic of the same name also, in which case that is preferred to the queue. This means that you can effectively chose which is preferred by creating a topic with the same name as an ambiguous exchange.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to