Hi Dejan,
Thanks for the reply.  Do I need to explicitly declare the DLQ from within
my Spring xml or is it created automatically?  And I imagine I will need to
put a consumer on the queue to do anything with it?

Thanks,
David



Dejan Bosanac wrote:
> 
> Hi David,
> 
> it's all configured in your "redeliveryPolicy", where you instructed the
> broker to try resending the message indefinitely.
> 
> See http://activemq.apache.org/message-redelivery-and-dlq-handling.html
> for
> more information how redelivery works and how you can use "Dead letter
> queues"
> 
> Cheers
> --
> Dejan Bosanac - http://twitter.com/dejanb
> 
> Open Source Integration - http://fusesource.com/
> ActiveMQ in Action - http://www.manning.com/snyder/
> Blog - http://www.nighttale.net
> 
> 
> On Sat, Nov 7, 2009 at 7:35 PM, David Erickson
> <deric...@stanford.edu>wrote:
> 
>>
>> Hi All,
>> I am using AMQ inside a Spring IoC container.  It is a very simple setup
>> with the following config:
>>
>>  <!--  ActiveMQ Broker -->
>>  <amq:broker useJmx="false" persistent="false">
>>    <amq:transportConnectors>
>>      <amq:transportConnector uri="tcp://localhost:0" />
>>    </amq:transportConnectors>
>>
>>  </amq:broker>
>>
>>   <!--  ActiveMQ destinations to use  -->
>>  <amq:queue id="mailDestination"  physicalName="mailsender"/>
>>
>>  <!-- JMS ConnectionFactory to use, configuring the embedded broker using
>> XML -->
>>  <amq:connectionFactory id="jmsFactory" brokerURL="vm://localhost">
>>    <amq:redeliveryPolicy>
>>      <amq:redeliveryPolicy backOffMultiplier="2"
>> useExponentialBackOff="true" initialRedeliveryDelay="1000"
>> maximumRedeliveries="-1"/>
>>    </amq:redeliveryPolicy>
>>  </amq:connectionFactory>
>>
>>  <bean id="myJmsTemplate"
>> class="org.springframework.jms.core.JmsTemplate">
>>    <property name="connectionFactory">
>>      <!-- lets wrap in a pool to avoid creating a connection per send -->
>>      <bean class="org.apache.activemq.pool.PooledConnectionFactory">
>>        <property name="connectionFactory">
>>          <ref local="jmsFactory"/>
>>        </property>
>>      </bean>
>>    </property>
>>    <property name="pubSubDomain">
>>      <value>false</value>
>>    </property>
>>  </bean>
>>
>>  <bean id="mailContainer"
>> class="org.springframework.jms.listener.DefaultMessageListenerContainer">
>>      <property name="connectionFactory" ref="jmsFactory"/>
>>      <property name="destination" ref="mailDestination"/>
>>      <property name="messageListener" ref="mailConsumer"/>
>>      <property name="sessionTransacted" value="true"/>
>>  </bean>
>>
>> Along with one corresponding producer and consumer.
>>
>> My question is this, I noticed that my consumer was having problems
>> sending
>> one of the emails in the queue, it was throwing an exception, being
>> placed
>> back in the queue, then the entire queue was waiting the backoff time for
>> this message to attempt to be delivered again, over and over again,
>> producing a head of line blocking problem (no messages can be delivered
>> until the one with the error is delivered).
>>
>> Is there a solution for this? Can the message that failed be pushed to a
>> re-delivery queue, or a troubled queue rather than the main queue? Or can
>> the consumer walk through the queue looking for a message that is ready
>> to
>> be delivered rather than blocking on the front message that isn't set to
>> be
>> delivered for some long amount of time because of a previous failure and
>> backoff time?
>>
>> Thanks!
>> --
>> View this message in context:
>> http://old.nabble.com/Message-Head-of-line-blocking-tp26247283p26247283.html
>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>
>>
> 
> 
> -----
> Dejan Bosanac
> 
> Open Source Integration - http://fusesource.com/
> ActiveMQ in Action - http://www.manning.com/snyder/
> Blog - http://www.nighttale.net
> 

-- 
View this message in context: 
http://old.nabble.com/Message-Head-of-line-blocking-tp26247283p26269877.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to