[ 
https://issues.apache.org/activemq/browse/AMQ-1847?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=44103#action_44103
 ] 

Dmitry Tsigelnik commented on AMQ-1847:
---------------------------------------

I don't know how do you reach that, but if I use 
DefaultMessageListenerContainer  all redeliveries happens immediately, not 
first only.

If any Execption in MessageListener happens it always closes the connnection

{code:title=DefaultMessageListenerContainer.java}
private class AsyncMessageListenerInvoker implements SchedulingAwareRunnable {

....

    catch (Throwable ex) {
    clearResources();

...


    }

...
}


private void clearResources() {
    if (sharedConnectionEnabled()) {
    synchronized (sharedConnectionMonitor) {
        JmsUtils.closeMessageConsumer(this.consumer);
        JmsUtils.closeSession(this.session);
        }
    }
    else {
        JmsUtils.closeMessageConsumer(this.consumer);
        JmsUtils.closeSession(this.session);
    }
        this.consumer = null;
        this.session = null;
}


{code}

> Redelivery on a failure doesn't respect the initialRedeliveryDelay on the 
> first attempt.
> ----------------------------------------------------------------------------------------
>
>                 Key: AMQ-1847
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1847
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.1.0
>         Environment: Linux, ActiveMQ 5.1, Spring 2.5.x with transacted 
> DefaultMessageListenerContainer
>            Reporter: Veit Guna
>
> Hi.
> I'm using ActiveMQ 5.1 together with Spring's DefaultMessageListenerContainer 
> to enable MDPs. I'm using the redeliveryPolicy to enable redelivery on 
> failures during consumption of a message. ActiveMQ configuration looks like 
> this:
>     <camelContext id="camel" 
> xmlns="http://activemq.apache.org/camel/schema/spring";>
>         <route errorHandlerRef="deadLetterErrorHandler">
>                 <from uri="activemq:NEW" />
>         </route>
>     </camelContext>
> <bean id="deadLetterErrorHandler" 
> class="org.apache.camel.builder.DeadLetterChannelBuilder">
>     <property name="redeliveryPolicy" ref="redeliveryPolicyConfig"/>
> </bean>
> <bean id="redeliveryPolicyConfig" 
> class="org.apache.camel.processor.RedeliveryPolicy">
>     <property name="maximumRedeliveries" value="4"/>
>     <property name="initialRedeliveryDelay" value="30000"/>
>     <property name="useExponentialBackOff" value="true"/>
>     <property name="backOffMultiplier" value="2" />
> </bean>
> Now if a failure occurs, the configured delay isn't used on the first 
> redelivery attempt. Instead redelivery takes place immediately after the 
> failure occured. This sounds odd to me, since the property is even called 
> initialRedeliveryDelay :). I know that maybe this was caused due to the 
> following issue:
> https://issues.apache.org/activemq/browse/AMQ-1032
> In my opinion immediately redelivery isn't very useful in most cases. If a 
> failure occurs, it won't be fixed some ms later :). So my suggestion is (in 
> respect to AMQ-1032) to have two options:
> initialRedeliveryDelay
> redeliveryDelay
> So both configurations would be possible. For AMQ-1032 just configure 
> initialRedeliveryDelay to 0. Otherwise just take the redeliveryDelay as 
> initialRedeliveryDelay to get what I want :).
> Does this make sense?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to