[ 
https://issues.apache.org/jira/browse/ARTEMIS-1578?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16311693#comment-16311693
 ] 

Johan commented on ARTEMIS-1578:
--------------------------------

https://activemq.apache.org/artemis/docs/latest/filter-expressions.html states 
"It is the same as the syntax used for JMS selectors, but the predefined 
identifiers are different.", so maybe it would make sense to either list all 
the "JMSX____" names here and/or introduce names like "AMQUserId" instead of 
"JMSXUserID" which would follow the naming scheme of "AMQPriority", 
"AMQExpiration", etc.

It also has a section about properties including dashes "However, this 
constraint can be overcome by using the hyphenated_props: prefix. For example, 
if a message had the foo-bar property set to 0 then the filter expression 
hyphenated_props:foo-bar = 0 would match it.". So the AMQP property "user-id" 
could e.g. be selected via "user_id". A filter expression like 
"hyphenated_props:user_id='foo'" however is not allowed by Qpid JMS but even it 
it would, the AMQPMessage#getObjectProperty will still not resolve it by name 
because it only looks up AMQP application properties but not AMQP properties: 
[AMQPMessage.java#L919|https://github.com/apache/activemq-artemis/blob/master/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessage.java#L919]

> Cannot use "user-id" property in AMQP message selector
> ------------------------------------------------------
>
>                 Key: ARTEMIS-1578
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-1578
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: AMQP
>    Affects Versions: 2.4.0
>            Reporter: Johan
>            Priority: Minor
>         Attachments: Artemis1578Test.java, pom.xml
>
>
> It is not possible to use the "user-id" property specified in 
> http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-properties
>  for message selection in a subscription. Instead one has to use the JMS 
> specific "JMSXUserID" property name.
> This could be maybe fixed by changing the line 
> https://github.com/apache/activemq-artemis/blob/master/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessage.java#L912
>  to
> {code:java}
> } else if (key.equals(MessageUtil.JMSXUSERID) || key.equals("user-id") {
> {code}
> but is also prevented by the 
> org.apache.activemq.artemis.selector.impl.SelectorParser which interprets 
> "user-id" as an arethmetic operations.
> It is also not possible to use the "userId" property instead - which is used 
> as key in the HashMap 
> [AMQPMessage#_properties|https://github.com/apache/activemq-artemis/blob/master/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessage.java#L88]
>  - because 
> [AMQPMessage#getObjectProperty|https://github.com/apache/activemq-artemis/blob/master/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessage.java#L919]
>  only resolves values from the [application 
> properties|http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-application-properties]
>  of an AMQP message.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to