Spring AMQP

org.springframework.amqp.rabbit.config
Class StatefulRetryOperationsInterceptorFactoryBean

java.lang.Object
  extended by org.springframework.amqp.rabbit.config.AbstractRetryOperationsInterceptorFactoryBean
      extended by org.springframework.amqp.rabbit.config.StatefulRetryOperationsInterceptorFactoryBean
All Implemented Interfaces:
FactoryBean<org.aopalliance.aop.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
See Also:
RetryOperations.execute(org.springframework.retry.RetryCallback, org.springframework.retry.RecoveryCallback, org.springframework.retry.RetryState)

Constructor Summary
StatefulRetryOperationsInterceptorFactoryBean()
           
 
Method Summary
 org.springframework.retry.interceptor.StatefulRetryOperationsInterceptor getObject()
           
 Class<?> getObjectType()
           
 boolean isSingleton()
           
 void setMessageKeyGenerator(MessageKeyGenerator messageKeyGeneretor)
           
 void setMessageKeyGeneretor(MessageKeyGenerator messageKeyGeneretor)
          Deprecated. Use setMessageKeyGenerator(MessageKeyGenerator) instead
 void setNewMessageIdentifier(NewMessageIdentifier newMessageIdentifier)
           
 
Methods inherited from class org.springframework.amqp.rabbit.config.AbstractRetryOperationsInterceptorFactoryBean
getMessageRecoverer, getRetryOperations, setMessageRecoverer, setRetryOperations
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StatefulRetryOperationsInterceptorFactoryBean

public StatefulRetryOperationsInterceptorFactoryBean()
Method Detail

setMessageKeyGeneretor

@Deprecated
public void setMessageKeyGeneretor(MessageKeyGenerator messageKeyGeneretor)
Deprecated. Use setMessageKeyGenerator(MessageKeyGenerator) instead


setMessageKeyGenerator

public void setMessageKeyGenerator(MessageKeyGenerator messageKeyGeneretor)

setNewMessageIdentifier

public void setNewMessageIdentifier(NewMessageIdentifier newMessageIdentifier)

getObject

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

getObjectType

public Class<?> getObjectType()

isSingleton

public boolean isSingleton()
Specified by:
isSingleton in interface FactoryBean<org.aopalliance.aop.Advice>
Overrides:
isSingleton in class AbstractRetryOperationsInterceptorFactoryBean

Spring AMQP