Class StatefulRetryOperationsInterceptorFactoryBean

java.lang.Object
org.springframework.amqp.rabbit.config.AbstractRetryOperationsInterceptorFactoryBean
org.springframework.amqp.rabbit.config.StatefulRetryOperationsInterceptorFactoryBean
All Implemented Interfaces:
FactoryBean<Advice>

public class StatefulRetryOperationsInterceptorFactoryBean extends AbstractRetryOperationsInterceptorFactoryBean
Convenient factory bean for creating a stateful retry interceptor for use in a message listener container, giving you a large amount of control over the behaviour of a container when a listener fails. To control the number of retry attempt or the backoff in between attempts, supply a customized RetryTemplate. Stateful retry is appropriate if your listener is using a transactional resource that needs to be rollback on an exception (e.g. a stateful connection to a back end server). JPA is the canonical example. The semantics of stateful retry mean that a listener exception is propagated to the container, so that it can force a rollback. When the message is redelivered it has to be recognised (hence the MessageKeyGenerator strategy), and when the retry attempts are exhausted it will be processed using a MessageRecoverer if one is provided, in a new transaction. If a recoverer is not provided the message will be logged and dropped.
Author:
Dave Syer, Gary Russell, Ngoc Nhan
See Also:
  • RetryOperations.execute(org.springframework.retry.RetryCallback, org.springframework.retry.RecoveryCallback, org.springframework.retry.RetryState)
  • Constructor Details

    • StatefulRetryOperationsInterceptorFactoryBean

      public StatefulRetryOperationsInterceptorFactoryBean()
  • Method Details

    • setMessageKeyGenerator

      public void setMessageKeyGenerator(MessageKeyGenerator messageKeyGenerator)
    • setNewMessageIdentifier

      public void setNewMessageIdentifier(NewMessageIdentifier newMessageIdentifier)
    • getObject

      public org.springframework.retry.interceptor.StatefulRetryOperationsInterceptor getObject()
    • getObjectType

      public Class<?> getObjectType()