prefetch=0 will do it, so long as you don't use a messagelistener
directly. via spring the listener does a receive(...) under the hood
so it will be ok with prefetch=0

On 14 November 2013 16:14, Ned Wolpert <ned.wolp...@imemories.com> wrote:
> 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



-- 
http://redhat.com
http://blog.garytully.com

Reply via email to