Amazon documentation advises against using JMS selectors:
Avoid Using Message Selectors
It is possible to use JMS selectors to attach filters to topic subscriptions (to route messages to consumers based on their content). However, the use of JMS selectors fills up the Amazon MQ broker's filter buffer, preventing it from filtering messages.
In general, avoid letting consumers route messages because, for optimal decoupling of consumers and producers, both the consumer and the producer should be ephemeral.
I consider JMS selectors a very useful and legitimate feature. I don't quite understand the statement about the "filter buffer." Can someone please clarify the details of the "filter buffer" issue? Is this a common problem for ActiveMQ Classic, or is it specific to the Amazon MQ service implementation? Additionally, is there a way to mitigate this issue through configuration tuning?
I think I've finally understood what AWS means with this recommendation.
First of all, there is a known 'filter buffer' issue with the JMS 1.1 'standard' topic implementation in ActiveMQ, as described by @Matt Pavlovich above.
The key point is that AWS's recommendation applies to standard JMS 1.1 topics, not to Virtual Topics. That's why AWS is talking about 'filters to topic subscriptions' rather than 'filters to queue consumers'.
In short, AWS was trying to say that using filters on JMS 1.1 'standard' topics in ActiveMQ may cause issues with the filter buffer. This is correct. However, they forgot to add that Virtual Topics should be used to avoid the 'broker's filter buffer' problem.