After I say you wrote 'prefetchExtension=false' I looked it up and found this bug sounds exactly like what I'm hitting: https://issues.apache.org/jira/browse/AMQ-2651 which led me to you talking on http://grokbase.com/t/activemq/users/103bdh5cgx/prefetchextension-off-by-1-for-transacted-consumers-with-prefetchsize-0
So... right now I have prefetch=1.... and I'm using 5.3.0. WIth the grails jms (spring) plugin, its auto-ack for messages, and they are in a transaction. So it sounds like I'm hitting this. Does prefetchExtension=false exist in 5.3? (Looks like it was fixed in 5.4) Should I really be using prefetch=0? In this one queue, I have 16 listeners now, and messages are usually in groups < 10 but take a long time to process. (hours) On Wed, Nov 13, 2013 at 4:27 PM, Gary Tully <gary.tu...@gmail.com> wrote: > can you try a different ack mode, like clientack or using transactions > - the prefetch will be deferred till the ack which will be later than > in the auto ack case. Also, in the transacted case, use the > destination policy prefetchExtension=false > > On 13 November 2013 14:54, Ned Wolpert <ned.wolp...@imemories.com> wrote: > > Did anyone have an idea into what I could do different to route messages > to > > idle consumers? Just came into the same situation this morning where a > > queue has 1 message processing on one consumer, one message waiting, and > 15 > > idle consumers. (See notes below for my current configs) > > > > > > On Wed, Nov 6, 2013 at 9:40 AM, Ned Wolpert <ned.wolp...@imemories.com > >wrote: > > > >> Forgot to add, broker url only has one query param.... > >> > >> jms.prefetchPolicy.queuePrefetch=1 > >> > >> which, as I mentioned above, does seem to work. > >> > >> > >> On Tue, Nov 5, 2013 at 10:56 AM, Ned Wolpert <ned.wolp...@imemories.com > >wrote: > >> > >>> I can see the preFetch values being set in the console, and they are > all > >>> one. I've not set priorities. > >>> > >>> These are 'java' processes, using groovy/grails. The same executable > on 4 > >>> boxes, each executable with 4 listeners, treaded. Using the grails jms > >>> plugin, which wraps the Spring jms template configuration. > >>> (concurrentConsumers is set to 4 per instance) > >>> > >>> When I have 1000's of messages pending, all instances are working. This > >>> issue is only really viewable when there is 10 messages working. > >>> > >>> The following is the (redacted) activemq.xml. I'm assuming this config > >>> could be better. I should mention typical usage of our JMS server has > a > >>> few consumers and tons of producers. Thirty queues. Most queues process > >>> quickly and do not fill up. Two queues are for slow producers. The > goal is > >>> for the producers to send a message and break away, so we don't want > slow > >>> producers at all. Producers are very spiky.... from 10m/min to bursts > of > >>> 100's/min. We have growth concern as that number is increasing > steadily. > >>> > >>> <beans > >>> xmlns="http://www.springframework.org/schema/beans" > >>> xmlns:amq="http://activemq.apache.org/schema/core" > >>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > >>> xsi:schemaLocation="http://www.springframework.org/schema/beans > >>> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd > >>> http://activemq.apache.org/schema/core > >>> http://activemq.apache.org/schema/core/activemq-core.xsd"> > >>> > >>> <bean > >>> > class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> > >>> <property name="locations"> > >>> <value>file:${activemq.base}/conf/credentials.properties</value> > >>> </property> > >>> </bean> > >>> > >>> <broker xmlns="http://activemq.apache.org/schema/core" > >>> brokerName="stagingMQ" > >>> useJmx="true" > >>> enableStatistics="true" > >>> useLocalHostBrokerName="false" > >>> useLoggingForShutdownErrors="true" > >>> dataDirectory="XXXXX"> > >>> > >>> <managementContext> > >>> <managementContext createConnector="true" > >>> connectorPort="XXXXX"/> > >>> </managementContext> > >>> > >>> <persistenceAdapter> > >>> <journaledJDBC journalLogFiles="5" > >>> journalLogFileSize="20 Mb" > >>> dataDirectory="XXXXXX" > >>> createTablesOnStartup="false" > >>> useDatabaseLock="false" > >>> dataSource="#XXXXX"> > >>> </journaledJDBC> > >>> </persistenceAdapter> > >>> > >>> <destinationPolicy> > >>> <policyMap> > >>> <policyEntries> > >>> <policyEntry topic=">" producerFlowControl="true" > >>> memoryLimit="1mb"> > >>> <pendingSubscriberPolicy> > >>> <vmCursor /> > >>> </pendingSubscriberPolicy> > >>> </policyEntry> > >>> <policyEntry queue=">" producerFlowControl="true" memoryLimit="30mb"> > >>> <pendingQueuePolicy> > >>> <vmQueueCursor/> > >>> </pendingQueuePolicy> > >>> </policyEntry> > >>> </policyEntries> > >>> </policyMap> > >>> </destinationPolicy> > >>> > >>> <transportConnectors> > >>> <transportConnector name="openwire" uri="XXXX"/> > >>> <transportConnector name="stomp" uri="XXXXX"/> > >>> </transportConnectors> > >>> > >>> </broker> > >>> > >>> <import resource="jetty.xml"/> > >>> <import resource="databaseconfig.xml"/> > >>> </beans> > >>> > >>> > >>> > >>> > >>> On Tue, Nov 5, 2013 at 9:27 AM, Paul Gale <paul.n.g...@gmail.com> > wrote: > >>> > >>>> Have you verified via broker logging that the prefetch values you've > >>>> configured are being honored by the broker? Are consumer priorities in > >>>> use? Are your consumers instances of the same executable or are they > >>>> implemented individually? > >>>> > >>>> Can you post your broker configuration: activemq.xml? > >>>> > >>>> How are your clients implemented, e.g., technology: Ruby or Java etc, > >>>> choice of client libraries? Just wondering. > >>>> > >>>> > >>>> Thanks, > >>>> Paul > >>>> > >>>> On Tue, Nov 5, 2013 at 10:28 AM, Ned Wolpert < > ned.wolp...@imemories.com> > >>>> wrote: > >>>> > Thanks for the response... > >>>> > > >>>> > Any idea on the round-robin not working? I have a queue with 16 > >>>> consumers, > >>>> > all have pre-fetch set to 1. Five consumers are actively processing > >>>> > requests and 3 requests are pending.... the 11 other consumers are > >>>> idle. > >>>> > History has shown that a new request may go to one of the 11 idle > >>>> works, > >>>> > but its like those 3 requests are reserved for some of the working > >>>> ones. I > >>>> > can't figure out what setting would help this, or if this just was a > >>>> bug > >>>> > with 5.3.... > >>>> > > >>>> > > >>>> > On Mon, Nov 4, 2013 at 4:37 PM, Christian Posta > >>>> > <christian.po...@gmail.com>wrote: > >>>> > > >>>> >> The clients should negotiate the correct open-wire (protocol > version) > >>>> >> so in theory the broker will be backward compatible with older > >>>> >> clients. Just make sure the activemq-openwire-legacy jar is on the > >>>> >> classpath (should be by default). > >>>> >> > >>>> >> Of course I would test this out to make sure :) > >>>> >> > >>>> >> On Mon, Nov 4, 2013 at 10:20 AM, Ned Wolpert < > >>>> ned.wolp...@imemories.com> > >>>> >> wrote: > >>>> >> > Folks- > >>>> >> > > >>>> >> > I have a 5.3 installation that we're using, and I have 2 > >>>> questions for > >>>> >> it: > >>>> >> > > >>>> >> > 1) We have prefetch set to 1 for all of the message consumers on > one > >>>> >> queue, > >>>> >> > where message handling is slow. But it still seems like messages > >>>> aren't > >>>> >> > really 'round robin' to the next available message consumer. I'll > >>>> see a > >>>> >> few > >>>> >> > consumers are free but messages are waiting around. Is there a > >>>> >> > configuration that can help? (I should note that the server has > >>>> been > >>>> >> > running consistently for 9 months and it seems to be getting > >>>> worse.... > >>>> >> > would a restart help?) > >>>> >> > > >>>> >> > 2) We are looking to upgrade to 5.9. I haven't started the > process > >>>> of > >>>> >> > testing, but I wanted to see if this is a case where the 5.3 > >>>> clients need > >>>> >> > to be upgraded at the same time as the server, or if the clients > >>>> can be > >>>> >> > rolled over a few weeks to 5.9 after the server gets updated? > >>>> >> > > >>>> >> > Thanks! > >>>> >> > > >>>> >> > -- > >>>> >> > Virtually, Ned Wolpert > >>>> >> > > >>>> >> > "Settle thy studies, Faustus, and begin..." --Marlowe > >>>> >> > >>>> >> > >>>> >> > >>>> >> -- > >>>> >> Christian Posta > >>>> >> http://www.christianposta.com/blog > >>>> >> twitter: @christianposta > >>>> >> > >>>> > > >>>> > > >>>> > > >>>> > -- > >>>> > Virtually, Ned Wolpert > >>>> > > >>>> > "Settle thy studies, Faustus, and begin..." --Marlowe > >>>> > >>> > >>> > >>> > >>> -- > >>> Virtually, Ned Wolpert > >>> > >>> "Settle thy studies, Faustus, and begin..." --Marlowe > >>> > >> > >> > >> > >> -- > >> Virtually, Ned Wolpert > >> > >> "Settle thy studies, Faustus, and begin..." --Marlowe > >> > > > > > > > > -- > > Virtually, Ned Wolpert > > > > "Settle thy studies, Faustus, and begin..." --Marlowe > > > > -- > http://redhat.com > http://blog.garytully.com > -- Virtually, Ned Wolpert "Settle thy studies, Faustus, and begin..." --Marlowe