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