activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Tully <gary.tu...@gmail.com>
Subject Re: Spring && DefaultMessageListenerContainer && JmsTemplate && maxMessagesPerTask == 1 && Network of Brokers && maxConcurrentConsumer > 1 == Crumple
Date Mon, 31 May 2010 12:10:56 GMT
Test case is great, thanks, I have opened
https://issues.apache.org/activemq/browse/AMQ-2754 to track this, just
validating the fix at the moment.

On 8 May 2010 07:43, Jamie McCrindle <jamiemccrindle@gmail.com> wrote:

> Thanks Bruce,
>
> It's just the 2 brokers at the moment and prefetchSize is set to 1. It
> looks like a combination of spring's dynamic connection scaling,
> having maxMessagesPerTask set to 1 and the the network bridge
> connection getting lost.
>
> cheers,
> j.
>
> On Sat, May 8, 2010 at 1:16 AM, Bruce Snyder <bruce.snyder@gmail.com>
> wrote:
> > On Fri, May 7, 2010 at 3:19 PM, Jamie McCrindle
> > <jamiemccrindle@gmail.com> wrote:
> >> Greetings all,
> >>
> >> After some weeks of scratching my head, I _believe_ I have found the
> >> magic combination that appears to be causing messages to become stuck
> >> in our network of brokers. It's so convoluted that it's entirely
> >> likely that the error isn't what I think it is but I have managed to
> >> create a test case that mirrors the behaviour we're seeing live. And
> >> it goes something like this:
> >>
> >> We have two brokers in a network of brokers. Producers were publishing
> >> to a queue on one of the brokers and consumers reading off the queue
> >> in the other broker. After a short while, messages would suddenly pile
> >> up on the 'producer' broker and not get read off on the 'consumer'
> >> broker.
> >>
> >> Pause for lots of random testing...
> >>
> >> It appeared that the network bridge subscription from the 'consumer'
> >> broker was disappearing from the 'producer' broker, causing the pile
> >> up.
> >>
> >> More testing later...
> >>
> >> And it looks like if we have a DefaultMessageListenerContainer with
> >> the following configuration:
> >>
> >> maxMessagesPerTask: 1
> >> cacheLevel: CONSUMER
> >> maxConcurrentConsumer: 3 (more than 1, basically)
> >> concurrentConsumers: 1
> >> sessionAcknowledgeMode: Session.AUTO_ACKNOWLEDGE
> >>
> >> When Spring scales back the dynamic amount of consumers, the network
> >> subscription appears to get lost and messages pile up on the producer
> >> side.
> >>
> >> Workaround:
> >>
> >> Use concurrentConsumers instead of maxConcurrentConsumers so that
> >> there are a static number of consumers (not setting maxMessagesPerTask
> >> also seems to work).
> >
> > If this is a topology of more than two brokers, you may want to try
> > setting the suppressDuplicateQueueSubscriptions=true on the network
> > connector to improve the dispatching sufficiency. It essentially
> > eliminates some of the duplicate routes to a given consumer. More info
> > is available here:
> >
> >
> http://activemq.apache.org/networks-of-brokers.html#NetworksofBrokers-NetworkConnectorProperties
> >
> > Also, there is a prefetchSize property on the network connector that
> > is not documented on the ActiveMQ website. You may try setting that to
> > 1 on the network connector.
> >
> > Bruce
> > --
> > perl -e 'print
> unpack("u30","D0G)U8V4\@4VYY9&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*"
> > );'
> >
> > ActiveMQ in Action: http://bit.ly/2je6cQ
> > Blog: http://bruceblog.org/
> > Twitter: http://twitter.com/brucesnyder
> >
>



-- 
http://blog.garytully.com

Open Source Integration
http://fusesource.com

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message