[ https://issues.apache.org/jira/browse/AMQ-6027?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14997305#comment-14997305 ]
Christopher L. Shannon commented on AMQ-6027: --------------------------------------------- I pushed a first version of this with a bunch of tests. I will let Jenkins run and make any tweaks that are necessary before closing this issue as finished. I also still need to write up a page on the wiki to document how to use this new feature. > Dynamic network demand should support Virtual Destination consumers > ------------------------------------------------------------------- > > Key: AMQ-6027 > URL: https://issues.apache.org/jira/browse/AMQ-6027 > Project: ActiveMQ > Issue Type: New Feature > Components: Broker > Affects Versions: 5.12.1 > Reporter: Christopher L. Shannon > Assignee: Christopher L. Shannon > Fix For: 5.13.0 > > > Currently the broker supports the notion of > {{dynamicallyIncludedDestinations}}, where messages will only be sent across > a network of brokers if there is a consumer that exists on that destination. > This is good because it reduces the amount of traffic if there are no > consumers, however it doesn't take into account any virtual/composite > destinations that might exist or the consumers on those virtual/composite > destinations. I'd like to be able to create demand and have messages flow > based on Virtual Destination creation, either on start up or dynamically by > the runtime configuration plugins, or by new consumers on a Virtual > Destination. > So for example, if there are two brokers networked and on Broker A messages > are published to a topic, normally those messages only get passed to Broker B > if there is a consumer on that topic when setting > dynamicallyIncludedDestinations to true. I want to have an option so that a > virtual destination setup on Broker B that forwards that topic to a queue > will trigger messages to start flowing from Broker A to Broker B. > Messages could start flowing either simply based on the existence of the > Virtual Destination (likely used for the case of a topic forwarding to a > queue, so messages accumulate on the queue) or based on there being a > consumer on the forwarded destination (likely used for the case of a queue > forwarding to a topic). > I've done some prototyping work here already and my plan is to keep track of > Virtual Destination consumers (configurable by the existence of the virtual > destination or by the fact that a real consumer exists on it) and to create a > new advisory topic where the broker can publish consumer advisories to. The > prefix could be called something like: > ActiveMQ.Advisory.VirtualDestination.Consumer.Topic > ActiveMQ.Advisory.VirtualDestination.Consumer.Queue > Advisory messages can be sent either when virtual destinations are > created/destroyed (kind of a dummy consumer) or when a real consumer comes > online for a virtual destination. Then a remote broker could optionally > listen for those advisory messages and create or destroy a > DemandSubscription, just like is currently done for normal consumers. > The default behavior out of the box would be to keep this behavior turned > off, but it could optionally be turned on through configuration. -- This message was sent by Atlassian JIRA (v6.3.4#6332)