The redelivery delay values seems high to me. Is this on purpose?
10800000 mills is a high value

On Fri, Sep 14, 2012 at 8:03 PM, Ken DeLong <[email protected]> wrote:
> We are using ActiveMQ 5.5.1 as an embedded broker in our Spring 3.1.0 
> application. We have enabled message redelivery.  From time to time, we see 
> messages that are sent to the queue, but are never delivered, or are 
> delivered hours later.  We've gone through the posts on using Spring's JMS 
> Template with ActiveMQ and think we have the proper settings.
>
> Our current theory is that perhaps when messages throw a RuntimeException, 
> and get re-enqueued for later delivery, the consumers are not released and 
> the new messages can't be delivered.  However, we can't really gather much 
> evidence to support this.
>
> I'm including  the configuration that we are using, in the hopes that someone 
> might spot something that we have got wrong.
>
> <amq:broker id="jmsBroker" useJmx="true" persistent="true"
>        brokerName="localhost" dataDirectory="${catalina.home}/data/intl2/jms"
>        start="true">
>        <amq:destinationPolicy>
>               <amq:policyMap>
>                      <amq:policyEntries>
>                            <amq:policyEntry topic=">" 
> producerFlowControl="false" memoryLimit="1mb" useCache="false">
>                                   <amq:pendingSubscriberPolicy>
>                                   <amq:vmCursor />
>                                   </amq:pendingSubscriberPolicy>
>                            </amq:policyEntry>
>                            <!-- Prefetch : 
> http://activemq.apache.org/what-is-the-prefetch-limit-for.html
>                                 Flow control: 
> http://activemq.apache.org/producer-flow-control.html
>                                 Stuck messages: 
> http://activemq.2283324.n4.nabble.com/Messages-stuck-in-queue-td3244342.html
>                                                 
> https://issues.apache.org/jira/browse/AMQ-2009
>                            -->
>                            <amq:policyEntry queue=">" 
> producerFlowControl="false" memoryLimit="1mb" useCache="false" 
> queuePrefetch="1">
>                                   <!-- Use VM cursor for better latency For 
> more information, see: http://activemq.apache.org/message-cursors.html
>                                          <pendingQueuePolicy> 
> <vmQueueCursor/> </pendingQueuePolicy> -->
>                            </amq:policyEntry>
>                      </amq:policyEntries>
>               </amq:policyMap>
>        </amq:destinationPolicy>
>        <amq:managementContext>
>               <amq:managementContext createConnector="false" />
>        </amq:managementContext>
>        <amq:persistenceAdapter>
>               <amq:kahaDB directory="${catalina.home}/data/intl2/jms/kahadb"
>                      checkForCorruptJournalFiles="true" 
> checksumJournalFiles="true"
>                      forceRecoverIndex="true" />
>        </amq:persistenceAdapter>
> </amq:broker>
>
> <!-- <bean id="jmsConnectionFactory" 
> class="org.apache.activemq.pool.PooledConnectionFactory"
>        destroy-method="stop"> -->
> <bean id="jmsConnectionFactory" 
> class="org.springframework.jms.connection.CachingConnectionFactory">
>        <property name="targetConnectionFactory">
>               <bean 
> class="org.apache.activemq.spring.ActiveMQConnectionFactory">
>                      <property name="brokerURL" value="vm://localhost" />
>                      <property name="redeliveryPolicy">
>                            <bean class="org.apache.activemq.RedeliveryPolicy">
>                                   <property name="maximumRedeliveries"    
> value="15" />
>                                   <property name="initialRedeliveryDelay" 
> value="10800000" />
>                                   <property name="redeliveryDelay"        
> value="10800000" />
>                            </bean>
>                      </property>
>               </bean>
>        </property>
> </bean>
>
> <bean id="eventServiceJmsTemplate" 
> class="org.springframework.jms.core.JmsTemplate">
>        <property name="connectionFactory" ref="jmsConnectionFactory" />
>        <property name="defaultDestination" ref="destination" />
>        <property name="pubSubDomain" value="false" />
>        <property name="deliveryPersistent" value="true" />
> </bean>
>
> <bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">
>        <property name="physicalName" value="asynchQueue" />
> </bean>
>
> <bean id="destinationResolver" 
> class="org.springframework.jms.support.destination.BeanFactoryDestinationResolver"
>  />
>        <!--
>      http://activemq.apache.org/message-redelivery-and-dlq-handling.html
>      Tracing through Spring's code, it seems that it will not roll back the 
> transaction unless we set acknowledge to "transacted"
>      I tested it on integ, messages are not being redelivered with "auto", 
> but they are in "transacted" mode
>      Cache none: https://issues.apache.org/jira/browse/AMQ-2009
> -->
> <jms:listener-container connection-factory="jmsConnectionFactory"
>                            acknowledge="transacted"
>                            cache="none"
>                            concurrency="5"
>                            destination-resolver="destinationResolver">
>        <jms:listener destination="destination" 
> ref="asynchronousEventExecutor" />
> </jms:listener-container>
>
>
>
>
>
>
> ---------------------------------------------------------------------------------------
> Kenneth DeLong |  Director of Architecture, Chief Software Architect
> BabyCenter
> o: 415.344.7616
> [email protected]<mailto:[email protected]>
> Twitter: kenwdelong
> AIM: kenwdelong
> babycenter.com<http://babycenter.com/>
>
> like BabyCenter on Facebook<http://www.facebook.com/BabyCenter>
>



-- 
Claus Ibsen
-----------------
FuseSource
Email: [email protected]
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Reply via email to