On Wed, Apr 14, 2010 at 6:50 PM, lekkie <[email protected]> wrote:
>
> Thanks for the insight.
>
> I have gone ahead to implement the Transactional Client EIP pattern.
>
> However, I noticed that my transaction is redelivered only 4 times. I used
> JMSTransactionManager as my transaction manager and my redelivery properties
> says maxredelivery is 6. Also, my timetolive is 24hrs, but my failed
> transaction is retried just 4 times.
>

AMQ will send the failed message to its DLQ.
Camel in Action chapter 9 explains this and have an example and unit test.



> How do I modify the number of time it is redelivered?
>
>
> See my config below:
> <bean id="redeliveryPolicy" class="org.apache.activemq.RedeliveryPolicy">
>                <property name="initialRedeliveryDelay" value="5000"/>
>                <property name="maximumRedeliveries" value="6"/>
>                <property name="useCollisionAvoidance" value="false"/>
>                <property name="useExponentialBackOff" value="false"/>
>        </bean>
>
> <bean id="jmsConnectionFactory"
> class="org.apache.activemq.ActiveMQConnectionFactory">
>                <property name="alwaysSessionAsync" value="false"/>
>                <property name="alwaysSyncSend" value="true"/>
>                <property
> name="brokerURL"><value>${plusone-block-request-queue-url}</value></property>
>                <property name="clientID" value=""/>
>                <property name="closeTimeout" value="15000"/>
>                <property name="copyMessageOnSend" value="true"/>
>                <property name="disableTimeStampsByDefault" value="false"/>
>                <property name="dispatchAsync" value="false"/>
>                <property name="objectMessageSerializationDefered" 
> value="false"/>
>                <property name="optimizeAcknowledge" value="false"/>
>                <property name="optimizedMessageDispatch" value="true"/>
>                <property name="password" value=""/>
>                <property name="producerWindowSize" value="0"/>
>                <property name="statsEnabled" value="false"/>
>                <property name="useAsyncSend" value="false"/>
>                <property name="useCompression" value="false"/>
>                <property name="useRetroactiveConsumer" value="false"/>
>                <property name="userName" value=""/>
>                <property name="watchTopicAdvisories" value="true"/>
>                <property name="sendTimeout" value="0"/>
>                <property name="redeliveryPolicy" ref="redeliveryPolicy"/>
>        </bean>
>
> <bean id="jmsTransactionManager"
> class="org.springframework.jms.connection.JmsTransactionManager">
>            <property name="connectionFactory" ref="jmsConnectionFactory" />
>        </bean>
>
>        <bean id="jmsConfig"
> class="org.apache.camel.component.jms.JmsConfiguration">
>            <property name="connectionFactory" ref="jmsConnectionFactory"/>
>            <property name="transactionManager" ref="jmsTransactionManager"/>
>            <property name="transacted" value="true"/>
>            <property name="concurrentConsumers" value="2"/>
>            <property name="timeToLive" value="86400000"/>
>                <property name="deliveryPersistent" value="true"/>
>                <property name="explicitQosEnabled" value="true"/>
>                <property name="priority" value="9"/>
>                <property name="transactedInOut" value="true"/>
>        </bean>
>
> <bean id="PROPAGATION_REQUIRED"
> class="org.apache.camel.spring.spi.SpringTransactionPolicy">
>            <property name="transactionManager" ref="jmsTransactionManager"/>
>            <property name="propagationBehaviorName" 
> value="PROPAGATION_REQUIRED"/>
>        </bean>
>
>        <bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
>                <property name="configuration" ref="jmsConfig"/>
>        </bean>
>
> What else do I watchout for?
>
> kr.
>
>
>
> Claus Ibsen-2 wrote:
>>
>> You can use transactions - ack mode TRANSACTED
>>
>> And then you need to setup a TX manager.
>>
>> Chapter 9 in the Camel in Action book. (and find examples in the
>> source code for the book)
>> Or check the Transactional Client EIP pattern at Camel wiki.
>>
>>
>>
>> On Wed, Apr 14, 2010 at 2:50 PM, lekkie <[email protected]> wrote:
>>>
>>> I have this scenario where I 'd like to keep a message in the queue until
>>> the
>>> flow in my route has returned.
>>>
>>> See explanation below:
>>>
>>> <route>
>>>    <from uri="jms:${queue}"/>
>>>    <to uri="nmr:Webservice"/>
>>> </route>
>>>
>>> I'd like to finish processing <to uri="nmr:Webservice"/> - which means
>>> the
>>> message is successfully sent to nmr:Webservice - before an ack is sent to
>>> my
>>> message broker (jms:${queue}).
>>>
>>> What acknowledgement mode will ensure an ack is only sent after camel
>>> application returns from the <to uri="nmr:Webservice"/> call?
>>>
>>> In the case of an exception, I believe an ack will not be sent to the
>>> broker. Is my assumption correct?
>>>
>>>
>>> kr.
>>> --
>>> View this message in context:
>>> http://old.nabble.com/JMS-Message-Acknowledgement---Persistence-in-Camel-tp28242166p28242166.html
>>> Sent from the Camel - Users (activemq) mailing list archive at
>>> Nabble.com.
>>>
>>>
>>
>>
>>
>> --
>> Claus Ibsen
>> Apache Camel Committer
>>
>> Author of Camel in Action: http://www.manning.com/ibsen/
>> Open Source Integration: http://fusesource.com
>> Blog: http://davsclaus.blogspot.com/
>> Twitter: http://twitter.com/davsclaus
>>
>>
>
> --
> View this message in context: 
> http://old.nabble.com/JMS-Message-Acknowledgement---Persistence-in-Camel-tp28242166p28245266.html
> Sent from the Camel - Users (activemq) mailing list archive at Nabble.com.
>
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Reply via email to