Propagate queue subscription selectors to virtual topic dispatch such that
unmatched messages do not pile up on subscription queues
-----------------------------------------------------------------------------------------------------------------------------------
Key: AMQ-2779
URL: https://issues.apache.org/activemq/browse/AMQ-2779
Project: ActiveMQ
Issue Type: New Feature
Components: Selector
Affects Versions: 5.3.2
Environment: all
Reporter: Gary Tully
Assignee: Gary Tully
Fix For: 5.4.0
With virtual topics each consumer can get its own queue or share an existing
queue. http://activemq.apache.org/virtual-destinations.html
Consumers which share a queue, can use selectors to partition the consumer
queue but individual consumers that use selectors run into a problem in that
the dispatch to the queue does not take account of the selector and all
messages are dispatched to the queue. Over time, the unmatched messages build
up on the queue.
Through static configuration it is possible to arrange that the destination
queues are filtered, but this solution is static.
An alternative approach, that does impose a cpu hit during dispatch (as the
selectors are executed twice) can provide a neat solution. Making a virtual
topic selectorAware allows the destination interceptor to only dispatch
messages that match the selector of one of the existing subscriptions. In this
way, no unmatched messages will be dispatched to the subscription queues. In
xml configuration, the following will make all topic dispatch respect the
selectors of the existing subscriptions:{code}
<broker xmlns="http://activemq.apache.org/schema/core">
<destinationInterceptors>
<virtualDestinationInterceptor>
<virtualDestinations>
<virtualTopic name=">" selectorAware="true"/>
</virtualDestinations>
</virtualDestinationInterceptor>
</destinationInterceptors>
</broker>{code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.