qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jakub Scholz <ja...@scholz.cz>
Subject Re: QPID JMS: Filtering messages based on Correlation ID
Date Fri, 14 Aug 2015 16:17:46 GMT
Hi Robbie,

Thanks. You are right, double quotes help to solve this. I was quite close
when I tried single quotes, but they don't help. And trying double quotes
didn't come to my mind.

The compatibility issue across different brokers is for sure unfortunate.
Although it at least has a workaround. I wonder how the other brokers plan
to deal with the non-JMS clients. It would sound a bit strange if you tell
someone to use a filter "JMSCorrelationID = 123" in a C++ AMQP client.

The "C++ broker" toggle is an interesting idea - it would probably make the
switch to other brokers easier. On the other hand, it sounds like a bad
marketing - it would be hard to convince people about the benefits of AMQP
if you then tell them that they have to use this and that switch for
compatibility between different AMQP components :-o.

Thanks & Regards

On Fri, Aug 14, 2015 at 5:38 PM, Robbie Gemmell <robbie.gemmell@gmail.com>

> On 14 August 2015 at 15:37, Jakub Scholz <jakub@scholz.cz> wrote:
> > I was wondering ... how can the Qpid JMS client setup a selector which
> > would filter messages based on Correlation ID (and work against Qpid C++
> > broker)?
> >
> > In the C++ Qpid Messaging API, the selector set like this:
> > amqp.correlation_id = 'f5b13484-5d85-4669-ac2f-53a85b2c8fe7'
> > seems to work fine.
> >
> > But in the Qpid JMS client, this triggers InvalidSelectorException. It
> > seems that it doesn't like the dot. I tried to use also JMSCorrelationID
> > instead of amqp.correlation_id, but the C++ broker doesn't seem to
> > understand that.
> >
> > Thanks & Regards
> > Jakub
> Hi Jakub,
> To answer the immediate question, I believe if you try the following
> as your selector value (double quoting the name, essentially) it
> should get round the InvalidSelectorException and work as desired
> against the C++ broker:
> "\"amqp.correlation_id\"='f5b13484-5d85-4669-ac2f-53a85b2c8fe7'"
> The '.' is indeed the problem when you tried to amqp.correlation_id
> directly, since it is an illegal character for a JMS property name. My
> suggestion above leverages a workaround that the Qpid JMS clients and
> brokers both understand to double quote the property name which has
> the effect of sidestepping the syntax issue.
> You have basically hit a bit of a current pain point still needing
> solved. The client is sending the JMS selector string directly as the
> value for its selector filter, which as you noted the broker isn't
> entirely understanding it. The broker on the other hand is expecting
> the client to send a filter value containing amqp.correlation_id since
> the filter being used says thats what should happen. Unfortunately the
> older JMS client and most if not all the other brokers I know using
> that filter to do selectors with the JMS clients currently expect the
> pure JMS selector string value to be in there, and changing it will
> break things against all of those.
> As a longer term fix, we discussed creating a new selector filter as
> part of the AMQP JMS Mapping since the original filter has some other
> issues outwith the way it is currently being (ab)used, but we have yet
> to get to doing so. Something else I had thought of doing before then
> was adding a toggle to the client so it can be made to do what the C++
> broker rightly expects.
> Robbie
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org

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