Class RepublishMessageRecoverer

java.lang.Object
org.springframework.amqp.rabbit.retry.RepublishMessageRecoverer
All Implemented Interfaces:
MessageRecoverer
Direct Known Subclasses:
RepublishMessageRecovererWithConfirms

public class RepublishMessageRecoverer extends Object implements MessageRecoverer
MessageRecoverer implementation that republishes recovered messages to a specified exchange with the exception stack trace stored in the message header x-exception.

If no routing key is provided, the original routing key for the message, prefixed with setErrorRoutingKeyPrefix(String) (default "error.") will be used to publish the message to the exchange provided in name, or the template's default exchange if none is set.

Since:
1.3
Author:
James Carr, Gary Russell, Artem Bilan
  • Field Details

  • Constructor Details

    • RepublishMessageRecoverer

      public RepublishMessageRecoverer(AmqpTemplate errorTemplate)
    • RepublishMessageRecoverer

      public RepublishMessageRecoverer(AmqpTemplate errorTemplate, String errorExchange)
    • RepublishMessageRecoverer

      public RepublishMessageRecoverer(AmqpTemplate errorTemplate, String errorExchange, String errorRoutingKey)
  • Method Details

    • errorRoutingKeyPrefix

      public RepublishMessageRecoverer errorRoutingKeyPrefix(String errorRoutingKeyPrefix)
      Apply a prefix to the outbound routing key, which will be prefixed to the original message routing key (if no explicit routing key was provided in the constructor; ignored otherwise. Use an empty string ("") for no prefixing.
      Parameters:
      errorRoutingKeyPrefix - The prefix (default "error.").
      Returns:
      this.
    • frameMaxHeadroom

      public RepublishMessageRecoverer frameMaxHeadroom(int headroom)
      Set the amount by which the negotiated frame_max is to be reduced when considering truncating the stack trace header. Defaults to 20000.
      Parameters:
      headroom - the headroom
      Returns:
      this.
      Since:
      2.0.5
    • setErrorRoutingKeyPrefix

      public void setErrorRoutingKeyPrefix(String errorRoutingKeyPrefix)
      Parameters:
      errorRoutingKeyPrefix - The prefix (default "error.").
      See Also:
    • getErrorRoutingKeyPrefix

      protected String getErrorRoutingKeyPrefix()
    • setDeliveryMode

      public void setDeliveryMode(MessageDeliveryMode deliveryMode)
      Specify a MessageDeliveryMode to set into the message to republish if the message doesn't have it already.
      Parameters:
      deliveryMode - the delivery mode to set to message.
      Since:
      2.0
    • getDeliveryMode

      protected MessageDeliveryMode getDeliveryMode()
    • recover

      public void recover(Message message, Throwable cause)
      Description copied from interface: MessageRecoverer
      Callback for message that was consumed but failed all retry attempts.
      Specified by:
      recover in interface MessageRecoverer
      Parameters:
      message - the message to recover
      cause - the cause of the error
    • doSend

      protected void doSend(@Nullable String exchange, String routingKey, Message message)
      Send the message.
      Parameters:
      exchange - the exchange or null to use the template's default.
      routingKey - the routing key.
      message - the message.
      Since:
      2.3.3
    • additionalHeaders

      protected Map<? extends String,?> additionalHeaders(Message message, Throwable cause)
      Subclasses can override this method to add more headers to the republished message.
      Parameters:
      message - The failed message.
      cause - The cause.
      Returns:
      A Map of additional headers to add.