[ https://issues.apache.org/jira/browse/ARTEMIS-4259?focusedWorklogId=859901&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-859901 ]
ASF GitHub Bot logged work on ARTEMIS-4259: ------------------------------------------- Author: ASF GitHub Bot Created on: 01/May/23 19:07 Start Date: 01/May/23 19:07 Worklog Time Spent: 10m Work Description: jbertram commented on PR #4452: URL: https://github.com/apache/activemq-artemis/pull/4452#issuecomment-1530089668 I found some additional use-cases with JMS _queue_ consumers + FQQN + selector that weren't working as expected so I've fixed those and added a few corresponding tests. As for the other use-cases you mentioned...I think any use-case involving a pre-created queue with a filter being accessed via FQQN by a client also defining its own filter is extremely rare if in use anywhere at all. It's certainly beyond what is documented and won't work consistently across JMS clients even now. Generally speaking, in multicast + filtered use-cases the filtering should be done _at the queue_. In anycast + filtered use-cases the filtering should be done _at the consumer_. These basic semantics are enforced for non-FQQN use-cases and should be enforced for FQQN use-cases as well. If this breaks undocumented, untested, niche use-cases then that can be addressed in another PR if we deem it necessary. Issue Time Tracking ------------------- Worklog Id: (was: 859901) Time Spent: 20m (was: 10m) > JMS consumer + FQQN + selector not working > ------------------------------------------ > > Key: ARTEMIS-4259 > URL: https://issues.apache.org/jira/browse/ARTEMIS-4259 > Project: ActiveMQ Artemis > Issue Type: Bug > Reporter: Justin Bertram > Assignee: Justin Bertram > Priority: Major > Time Spent: 20m > Remaining Estimate: 0h > > The CORE protocol does not honor consumers with a filter when used on FQQN > topics. > Steps to reproduce: > Start a consumer using CLI: > {noformat} > ./artemis consumer --url tcp://localhost:61616 --destination > topic://topic1::topic1.queue1 --protocol=core --message-count 1 --filter > "foo='bar'" --verbose{noformat} > Send a message without the filter string: > {noformat} > ./artemis producer --url tcp://localhost:61616 --destination > topic://topic1::topic1.queue1 --protocol=core --message-count 1 --message > "some text"{noformat} > You can observe the CORE client consuming the message which does not contain > the filter String: > {noformat} > Connection brokerURL = tcp://localhost:61616 > Consumer:: filter = foo='bar' > Consumer ActiveMQTopic[topic1::topic1.queue1], thread=0 wait until 1 messages > are consumed > Consumer ActiveMQTopic[topic1::topic1.queue1], thread=0 Received some text > JMS Message ID:ID:a00cbea3-dda7-11ed-9c2d-b42e99ea6f5c > Received text sized at 9 > Consumer ActiveMQTopic[topic1::topic1.queue1], thread=0 Consumed: 1 messages > Consumer ActiveMQTopic[topic1::topic1.queue1], thread=0 Elapsed time in > second : 8 s > Consumer ActiveMQTopic[topic1::topic1.queue1], thread=0 Elapsed time in milli > second : 8140 milli seconds > Consumer ActiveMQTopic[topic1::topic1.queue1], thread=0 Consumed: 1 messages > Consumer ActiveMQTopic[topic1::topic1.queue1], thread=0 Consumer thread > finished{noformat} -- This message was sent by Atlassian Jira (v8.20.10#820010)