Affects: Spring Boot Version 3.0.3 (spring-jms 6.0.5)

I want to use the DefaultMessageListenerContainer with an ExponentialBackoff, but if the last message was not succeeded, the backoff starts always with the initial time and does not use the multiplier.

I think there is an bug in the following method: https://github.com/spring-projects/spring-framework/blob/main/spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java#L1311

The started BackOffExecution never gets stored inside the context and container? Each call it only calls the .start method and begin with the initial time to wait.

Comment From: sven-tsi

what i saw now. The usage in this method works fine: https://github.com/spring-projects/spring-framework/blob/main/spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java#L979

The usage here, which i want to use not: https://github.com/spring-projects/spring-framework/blob/main/spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java#L1139

Comment From: snicoll

It looks like you expect the first refresh to first wait one back off execution. That's not what we want to do as the failure may have already took a while to surface so we want to retry immediately and then try again using the backoff.

If that's not what you meant, then I am afraid we need more details than links to our code. If that's the case, we can reopen once you provide the information.