You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "James Furness (JIRA)" <ji...@apache.org> on 2015/07/22 16:51:06 UTC

[jira] [Updated] (AMQ-5898) Physical queues forwarded from many virtual destinations no longer supported

     [ https://issues.apache.org/jira/browse/AMQ-5898?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

James Furness updated AMQ-5898:
-------------------------------
    Attachment: ActiveManyCompositeQueuesToOnePhysicalQueueTest.java

Add test case - passes with asserts disabled.

With {{-ea}} fails:

{code}
Caused by: java.lang.Throwable: java.lang.AssertionError: null
	at org.apache.activemq.broker.region.virtual.VirtualDestinationInterceptor.intercept(VirtualDestinationInterceptor.java:70)
	at org.apache.activemq.broker.region.CompositeDestinationInterceptor.intercept(CompositeDestinationInterceptor.java:38)
	at org.apache.activemq.broker.region.AbstractRegion.addDestination(AbstractRegion.java:139)
	at org.apache.activemq.broker.region.RegionBroker.addDestination(RegionBroker.java:348)
	at org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:172)
	at org.apache.activemq.advisory.AdvisoryBroker.addDestination(AdvisoryBroker.java:197)
	at org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:172)
	at org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:172)
	at org.apache.activemq.broker.MutableBrokerFilter.addDestination(MutableBrokerFilter.java:177)
	at org.apache.activemq.broker.region.AbstractRegion.lookup(AbstractRegion.java:467)
	at org.apache.activemq.broker.region.AbstractRegion.addConsumer(AbstractRegion.java:261)
	at org.apache.activemq.broker.region.RegionBroker.addConsumer(RegionBroker.java:427)
	at org.apache.activemq.broker.jmx.ManagedRegionBroker.addConsumer(ManagedRegionBroker.java:244)
	at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:102)
	at org.apache.activemq.advisory.AdvisoryBroker.addConsumer(AdvisoryBroker.java:104)
	at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:102)
	at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:102)
	at org.apache.activemq.broker.MutableBrokerFilter.addConsumer(MutableBrokerFilter.java:107)
	at org.apache.activemq.broker.TransportConnection.processAddConsumer(TransportConnection.java:663)
	at org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:348)
	at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:334)
	at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:188)
	at org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
	at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
	at org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:270)
	at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
	at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214)
	at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
	... 1 more
{code}

> Physical queues forwarded from many virtual destinations no longer supported
> ----------------------------------------------------------------------------
>
>                 Key: AMQ-5898
>                 URL: https://issues.apache.org/jira/browse/AMQ-5898
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.11.1
>            Reporter: James Furness
>         Attachments: ActiveManyCompositeQueuesToOnePhysicalQueueTest.java
>
>
> Hi Tim,
> AMQ-5187 breaks some of our message routing where we use virtual queues to control mirroring/replication of messages.
> A simple example...
> {code}
> VIRTUAL.PUB.ALL
> -> queue://SUBSCRIBER1
> -> queue://SUBSCRIBER2
> VIRTUAL.PUB.SUBSCRIBER1
> -> queue://SUBSCRIBER1
> {code}
> ...fails [this assert|https://github.com/apache/activemq/commit/f55edcfa25de1b55659a7113be60360c531ffa8a#diff-0def63df6ee6c0e4f8adcf00011b2f07R70] because there are two composite destinations that route to {{queue://SUBSCRIBER1}}. With asserts disabled messages are routed as expected.
> We use layers of composite queues to achieve explicit routing of messages to either one consumer or all consumers, and (also with static subscriptions) to target optimal routes across a mixture of LAN and WAN links.
> Fully appreciate that subscription recovery from virtual topics of a mapped queue is a beneficial thing to do, however from our perspective it is also useful to retain the behaviour of being able to have a many-to-one mapping between composite queues and physical queues. 
> Could this validation relaxed, could it be made possible for the new behaviour to be disabled or do you have any suggestions as to how else we could achieve our use case?
> Thanks,
> James



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)