Class RedeliveryErrorHandler

  • All Implemented Interfaces:
    AutoCloseable, org.apache.camel.AsyncProcessor, org.apache.camel.Navigate<org.apache.camel.Processor>, org.apache.camel.Processor, org.apache.camel.Service, org.apache.camel.ShutdownableService, org.apache.camel.spi.ErrorHandler, org.apache.camel.spi.ErrorHandlerRedeliveryCustomizer, org.apache.camel.spi.ShutdownPrepared, org.apache.camel.StatefulService, org.apache.camel.SuspendableService
    Direct Known Subclasses:
    DeadLetterChannel, DefaultErrorHandler

    public abstract class RedeliveryErrorHandler
    extends ErrorHandlerSupport
    implements org.apache.camel.spi.ErrorHandlerRedeliveryCustomizer, org.apache.camel.AsyncProcessor, org.apache.camel.spi.ShutdownPrepared, org.apache.camel.Navigate<org.apache.camel.Processor>
    Base redeliverable error handler that also supports a final dead letter queue in case all redelivery attempts fail.

    This implementation should contain all the error handling logic and the sub classes should only configure it according to what they support.

    • Field Detail

      • redeliverySleepCounter

        protected final AtomicInteger redeliverySleepCounter
      • preparingShutdown

        protected volatile boolean preparingShutdown
      • output

        protected org.apache.camel.Processor output
      • outputAsync

        protected org.apache.camel.AsyncProcessor outputAsync
      • camelContext

        protected final org.apache.camel.ExtendedCamelContext camelContext
      • reactiveExecutor

        protected final org.apache.camel.spi.ReactiveExecutor reactiveExecutor
      • awaitManager

        protected final org.apache.camel.spi.AsyncProcessorAwaitManager awaitManager
      • shutdownStrategy

        protected final org.apache.camel.spi.ShutdownStrategy shutdownStrategy
      • deadLetter

        protected final org.apache.camel.Processor deadLetter
      • deadLetterUri

        protected final String deadLetterUri
      • deadLetterHandleNewException

        protected final boolean deadLetterHandleNewException
      • redeliveryProcessor

        protected final org.apache.camel.Processor redeliveryProcessor
      • retryWhilePolicy

        protected final org.apache.camel.Predicate retryWhilePolicy
      • logger

        protected final org.apache.camel.spi.CamelLogger logger
      • useOriginalMessagePolicy

        protected final boolean useOriginalMessagePolicy
      • useOriginalBodyPolicy

        protected final boolean useOriginalBodyPolicy
      • redeliveryEnabled

        protected boolean redeliveryEnabled
      • simpleTask

        protected boolean simpleTask
      • exchangeFormatter

        protected final org.apache.camel.spi.ExchangeFormatter exchangeFormatter
      • customExchangeFormatter

        protected final boolean customExchangeFormatter
      • onPrepareProcessor

        protected final org.apache.camel.Processor onPrepareProcessor
      • onExceptionProcessor

        protected final org.apache.camel.Processor onExceptionProcessor
    • Constructor Detail

      • RedeliveryErrorHandler

        public RedeliveryErrorHandler​(org.apache.camel.CamelContext camelContext,
                                      org.apache.camel.Processor output,
                                      org.apache.camel.spi.CamelLogger logger,
                                      org.apache.camel.Processor redeliveryProcessor,
                                      RedeliveryPolicy redeliveryPolicy,
                                      org.apache.camel.Processor deadLetter,
                                      String deadLetterUri,
                                      boolean deadLetterHandleNewException,
                                      boolean useOriginalMessagePolicy,
                                      boolean useOriginalBodyPolicy,
                                      org.apache.camel.Predicate retryWhile,
                                      ScheduledExecutorService executorService,
                                      org.apache.camel.Processor onPrepareProcessor,
                                      org.apache.camel.Processor onExceptionProcessor)
    • Method Detail

      • process

        public void process​(org.apache.camel.Exchange exchange)
        Specified by:
        process in interface org.apache.camel.Processor
      • process

        public boolean process​(org.apache.camel.Exchange exchange,
                               org.apache.camel.AsyncCallback callback)
        Process the exchange using redelivery error handling.
        Specified by:
        process in interface org.apache.camel.AsyncProcessor
      • processAsync

        public CompletableFuture<org.apache.camel.Exchange> processAsync​(org.apache.camel.Exchange exchange)
        Specified by:
        processAsync in interface org.apache.camel.AsyncProcessor
      • changeOutput

        public void changeOutput​(org.apache.camel.Processor output)
        Specified by:
        changeOutput in interface org.apache.camel.spi.ErrorHandlerRedeliveryCustomizer
      • hasNext

        public boolean hasNext()
        Specified by:
        hasNext in interface org.apache.camel.Navigate<org.apache.camel.Processor>
      • next

        public List<org.apache.camel.Processor> next()
        Specified by:
        next in interface org.apache.camel.Navigate<org.apache.camel.Processor>
      • isRunAllowedOnPreparingShutdown

        protected boolean isRunAllowedOnPreparingShutdown()
      • prepareShutdown

        public void prepareShutdown​(boolean suspendOnly,
                                    boolean forced)
        Specified by:
        prepareShutdown in interface org.apache.camel.spi.ShutdownPrepared
      • defensiveCopyExchangeIfNeeded

        protected org.apache.camel.Exchange defensiveCopyExchangeIfNeeded​(org.apache.camel.Exchange exchange)
        Performs a defensive copy of the exchange if needed
        Parameters:
        exchange - the exchange
        Returns:
        the defensive copy, or null if not needed (redelivery is not enabled).
      • isDone

        protected boolean isDone​(org.apache.camel.Exchange exchange)
        Strategy to determine if the exchange is done so we can continue
      • getOutput

        public org.apache.camel.Processor getOutput()
        Description copied from class: ErrorHandlerSupport
        Gets the output
        Specified by:
        getOutput in interface org.apache.camel.spi.ErrorHandlerRedeliveryCustomizer
        Specified by:
        getOutput in class ErrorHandlerSupport
      • getDeadLetter

        public org.apache.camel.Processor getDeadLetter()
        Returns the dead letter that message exchanges will be sent to if the redelivery attempts fail
      • getDeadLetterUri

        public String getDeadLetterUri()
      • isUseOriginalMessagePolicy

        public boolean isUseOriginalMessagePolicy()
      • isUseOriginalBodyPolicy

        public boolean isUseOriginalBodyPolicy()
      • isDeadLetterHandleNewException

        public boolean isDeadLetterHandleNewException()
      • getLogger

        public org.apache.camel.spi.CamelLogger getLogger()
      • getDefaultHandledPredicate

        protected org.apache.camel.Predicate getDefaultHandledPredicate()
      • determineIfRedeliveryIsEnabled

        public boolean determineIfRedeliveryIsEnabled()
                                               throws Exception
        Specified by:
        determineIfRedeliveryIsEnabled in interface org.apache.camel.spi.ErrorHandlerRedeliveryCustomizer
        Throws:
        Exception
      • doStart

        protected void doStart()
                        throws Exception
        Overrides:
        doStart in class org.apache.camel.support.service.BaseService
        Throws:
        Exception
      • doStop

        protected void doStop()
                       throws Exception
        Overrides:
        doStop in class org.apache.camel.support.service.BaseService
        Throws:
        Exception
      • doShutdown

        protected void doShutdown()
                           throws Exception
        Overrides:
        doShutdown in class org.apache.camel.support.service.BaseService
        Throws:
        Exception