Class 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
    • Constructor Detail

      • RepublishMessageRecoverer

        public RepublishMessageRecoverer​(AmqpTemplate errorTemplate)
      • RepublishMessageRecoverer

        public RepublishMessageRecoverer​(AmqpTemplate errorTemplate,
                                         String errorExchange)
      • RepublishMessageRecoverer

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

      • 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:
        errorRoutingKeyPrefix(String)
      • 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
      • 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.