You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Joe Smith <jo...@yahoo.com> on 2011/06/24 04:53:29 UTC
Broker forwards msg only once or twice then msg stuck in queue.
Hi,
We have a cluster of 4 brokers (A, B, C, D). The test scenario is for one produce connected to broker A.
1. producer sends msgs to broker A's queue.
2. stop producer. we see pending messages in queue on broker A.
3. consumer connect to broker D. consumer recv msgs.
4. stop consumer. we see remaining/pending msgs in queue on brokers D and A.
5. consumer connect to broker C. consumer recv msgs.
6. stop consumer. we see pending msgs in C and D. pending msgs on A drained to 0.
7. consumer connect to broker C, again. it read all remaining pending msg on C and then waiting for more msgs (but not receiving any more). pending msgs on D still remain pending.
8. stop consumer on C.
9. start consumer on B. no msg received, but msg are pending on broker D.
The pattern seem to be the msg forwarding only do one hop and then stuck in that queue/broker. When consumer connected to other brokers, the msgs are not forwarded.
Broker version: 5.4.2
Java 1.6
Linux
broker
advisorySupport="true"
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" producerFlowControl="true" memoryLimit="1mb">
<pendingSubscriberPolicy>
<vmCursor />
</pendingSubscriberPolicy>
</policyEntry>
<policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb">
<!-- Use VM cursor for better latency
For more information, see:
http://activemq.apache.org/message-cursors.html
<pendingQueuePolicy>
<vmQueueCursor/>
</pendingQueuePolicy>
-->
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
<networkConnector uri="static:(tcp://host1:61616,tcp://host2:61616,tcp://host3:61616)"
conduitSubscriptions="false"
networkTTL="40"
dynamicOnly="true"
suppressDuplicateQueueSubscriptions="false"
decreaseNetworkConsumerPriority="false"
>
</networkConnector>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616" updateClusterClients="true" updateClusterClientsOnRemove="true"/>
We use prefetchPolicy of 1 but msgs are still stuck.
url=tcp://host1:61616?jms.prefetchPolicy.all=1
This problem seems to affect other settings. We already have one sys in production that showed msgs were stuck and not being re-routed to idle consumers. The app team is considering this a serious issue and want resolution or else we will move off ActiveMQ platform.
I'm building another system that showed the same issues. We need to resolve this - else we cannot proceed with ActiveMQ.
Your help is really appreciated.
Regards
Re: Broker forwards msg only once or twice then msg stuck in queue.
Posted by Dejan Bosanac <de...@nighttale.net>.
Can you create a test case to reproduce this?
You can take a look at
https://fisheye6.atlassian.com/browse/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/ThreeBrokerQueueNetworkTest.java?hb=true
for a way on how to create such a test
Regards
--
Dejan Bosanac - http://twitter.com/dejanb
-----------------
The experts in open source integration and messaging - http://fusesource.com
ActiveMQ in Action - http://www.manning.com/snyder/
Blog - http://www.nighttale.net
On Fri, Jun 24, 2011 at 4:53 AM, Joe Smith <jo...@yahoo.com> wrote:
> Hi,
>
> We have a cluster of 4 brokers (A, B, C, D). The test scenario is for one
> produce connected to broker A.
>
> 1. producer sends msgs to broker A's queue.
> 2. stop producer. we see pending messages in queue on broker A.
> 3. consumer connect to broker D. consumer recv msgs.
> 4. stop consumer. we see remaining/pending msgs in queue on brokers D and
> A.
> 5. consumer connect to broker C. consumer recv msgs.
> 6. stop consumer. we see pending msgs in C and D. pending msgs on A
> drained to 0.
> 7. consumer connect to broker C, again. it read all remaining pending msg
> on C and then waiting for more msgs (but not receiving any more). pending
> msgs on D still remain pending.
> 8. stop consumer on C.
> 9. start consumer on B. no msg received, but msg are pending on broker D.
>
> The pattern seem to be the msg forwarding only do one hop and then stuck in
> that queue/broker. When consumer connected to other brokers, the msgs are
> not forwarded.
>
> Broker version: 5.4.2
> Java 1.6
> Linux
>
> broker
> advisorySupport="true"
>
> <destinationPolicy>
> <policyMap>
> <policyEntries>
> <policyEntry topic=">" producerFlowControl="true"
> memoryLimit="1mb">
> <pendingSubscriberPolicy>
> <vmCursor />
> </pendingSubscriberPolicy>
> </policyEntry>
> <policyEntry queue=">" producerFlowControl="true"
> memoryLimit="1mb">
> <!-- Use VM cursor for better latency
> For more information, see:
>
> http://activemq.apache.org/message-cursors.html
>
> <pendingQueuePolicy>
> <vmQueueCursor/>
> </pendingQueuePolicy>
> -->
> </policyEntry>
> </policyEntries>
> </policyMap>
> </destinationPolicy>
>
> <networkConnector
> uri="static:(tcp://host1:61616,tcp://host2:61616,tcp://host3:61616)"
> conduitSubscriptions="false"
> networkTTL="40"
> dynamicOnly="true"
> suppressDuplicateQueueSubscriptions="false"
> decreaseNetworkConsumerPriority="false"
> >
> </networkConnector>
>
> <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"
> updateClusterClients="true" updateClusterClientsOnRemove="true"/>
>
> We use prefetchPolicy of 1 but msgs are still stuck.
>
> url=tcp://host1:61616?jms.prefetchPolicy.all=1
>
> This problem seems to affect other settings. We already have one sys in
> production that showed msgs were stuck and not being re-routed to idle
> consumers. The app team is considering this a serious issue and want
> resolution or else we will move off ActiveMQ platform.
>
> I'm building another system that showed the same issues. We need to
> resolve this - else we cannot proceed with ActiveMQ.
>
> Your help is really appreciated.
>
>
>
> Regards
>
>
>