On 08/05/2014 06:51 PM, Fraser Adams wrote:
Hi Gordon,
I'm aware of the AMQP 1.0 filter stuff, but I'm a little confused by
this post as I was pretty sure that the broker also worked with
"traditional" topic/subject addresses and
<qpid>/cpp/src/qpid/messaging/AddressHelper.cpp translated automagically
to a filter applied to the message source.
That is correct. That translation is done by the qpid::messaging client.
What the broker sees is a link from an exchange, with a filter specified
that describes the desired binding.
[...]
I can also do it explicitly via by specifying the filter in the link
config, e.g.
./drain --connection-options {protocol:amqp1.0} -b localhost -f \
"amq.topic; {link: {name: test-link, filter: {name: 'subject-filter',
descriptor: 'apache.org:legacy-amqp-topic-binding:string', value:
'*.news'}}}"
But as far as I was aware that's just the explicit long hand form of the
first example.
Again, correct.
[...]
if I do:
./recv localhost/#
it's fine and I get a dynamically created queue, and if I have a queue
called test I can do
./recv localhost/test
and it's happy, also if I subscribe to a topic Node e.g.
./recv localhost/amq.topic
That works and I get an automagic subscription queue with a # wildcard
binding e.g.
Queue 'e50b5f02-eeb1-409a-a07f-7ac2c7f06b6c_receiver-xxx'
bind [e50b5f02-eeb1-409a-a07f-7ac2c7f06b6c_receiver-xxx] => ''
bind [#] => amq.topic
However, if I were to do
./recv localhost/amq.topic/*.news
It barfs with:
LINK ERROR (amqp:not-found) Node not found: amq.topic/*.news
My point was that the *broker* could be modified to recognise that an
address of 'amq.topic/*.news' was not just a node name, but a node and a
binding. I.e. that this error could be 'fixed' by changes on the broker
as well as on the client.
[...]
Am I making sense? Basically unless I've totally missed something
Messenger only allows subscriptions to basic Node addresses and doesn't
yet support filters or any other link config. Is that correct?
I believe so, yes. The point I was making however was that the broker
could be modified to recognise binding information passed in the source
*address*, and not in a separate filter on the source. That would work
around the limitations of messenger, but would also be consistent with
what other brokers do at present.
(It wouldn't work for e.g. JMS style selectors of course, which would
still require a filter to be set on the source of the link)
If so it
that on anybody's TODO list? I guess I find it surprising not to be
supported. If it's on nobody's priority
Messenger is certainly not a priority for me. However I am interested in
making the engine API more usable, to the point where it is a reasonable
option for fully asynchronous or reactive applications. I think many
applications can be made quite simple by providing some utilities along
side the engine, without restricting control over the full protocol
where needed.
I might take a look at it when I
get my JavaScript stuff finished off, but equally if anyone is planning
on working on this I'm in no real rush to brush off my C ;->
I'd really appreciate answers to the other questions in my other post
too if anyone happens to know them.
I'll have a go, but bear in mind I could be wrong/out of date.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]