Class RedeliveryErrorHandler
java.lang.Object
org.apache.camel.support.service.BaseService
org.apache.camel.support.service.ServiceSupport
org.apache.camel.support.ChildServiceSupport
org.apache.camel.processor.errorhandler.ErrorHandlerSupport
org.apache.camel.processor.errorhandler.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.
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected class
Task to perform calling the processor and handling redelivery if it fails (more advanced than ProcessTask)protected class
Simple task to perform calling the processor with no redelivery support -
Field Summary
Modifier and TypeFieldDescriptionprotected final org.apache.camel.spi.AsyncProcessorAwaitManager
protected final org.apache.camel.CamelContext
protected final boolean
protected final org.apache.camel.Processor
protected final boolean
protected final String
protected final org.apache.camel.spi.ExchangeFormatter
protected ScheduledExecutorService
protected final org.apache.camel.spi.CamelLogger
protected final org.apache.camel.Processor
protected final org.apache.camel.Processor
protected org.apache.camel.Processor
protected org.apache.camel.AsyncProcessor
protected boolean
protected final org.apache.camel.spi.ReactiveExecutor
protected boolean
protected final RedeliveryPolicy
protected final org.apache.camel.Processor
protected final AtomicInteger
protected final org.apache.camel.Predicate
protected final org.apache.camel.spi.ShutdownStrategy
protected boolean
protected PooledExchangeTaskFactory
protected final boolean
protected final boolean
Fields inherited from class org.apache.camel.processor.errorhandler.ErrorHandlerSupport
DEFAULT_EXCHANGE_FORMATTER, exceptionPolicies, exceptionPolicy
Fields inherited from class org.apache.camel.support.ChildServiceSupport
childServices
Fields inherited from class org.apache.camel.support.service.BaseService
BUILT, FAILED, INITIALIZED, INITIALIZING, lock, NEW, SHUTDOWN, SHUTTING_DOWN, STARTED, STARTING, status, STOPPED, STOPPING, SUSPENDED, SUSPENDING
-
Constructor Summary
ConstructorDescriptionRedeliveryErrorHandler
(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 Summary
Modifier and TypeMethodDescriptionvoid
changeOutput
(org.apache.camel.Processor output) protected org.apache.camel.Exchange
defensiveCopyExchangeIfNeeded
(org.apache.camel.Exchange exchange) Performs a defensive copy of the exchange if neededboolean
protected long
determineRedeliveryDelay
(org.apache.camel.Exchange exchange, RedeliveryPolicy redeliveryPolicy, long redeliveryDelay, int redeliveryCounter) Determines the redelivery delay time by first inspecting the Message headerExchange.REDELIVERY_DELAY
and if not present, defaulting toRedeliveryPolicy.calculateRedeliveryDelay(long, int)
protected void
protected void
doStart()
org.apache.camel.Processor
Returns the dead letter that message exchanges will be sent to if the redelivery attempts failprotected org.apache.camel.Predicate
org.apache.camel.spi.CamelLogger
org.apache.camel.Processor
Gets the outputboolean
hasNext()
boolean
protected boolean
isDone
(org.apache.camel.Exchange exchange) Strategy to determine if the exchange is done so we can continueprotected boolean
boolean
boolean
List
<org.apache.camel.Processor> next()
void
prepareShutdown
(boolean suspendOnly, boolean forced) void
process
(org.apache.camel.Exchange exchange) boolean
process
(org.apache.camel.Exchange exchange, org.apache.camel.AsyncCallback callback) Process the exchange using redelivery error handling.CompletableFuture
<org.apache.camel.Exchange> processAsync
(org.apache.camel.Exchange exchange) boolean
Whether this error handler supports transacted exchanges or not.Methods inherited from class org.apache.camel.processor.errorhandler.ErrorHandlerSupport
addErrorHandler, addExceptionPolicy, clone, getExceptionPolicy, isDeadLetterChannel
Methods inherited from class org.apache.camel.support.ChildServiceSupport
addChildService, removeChildService, shutdown, start, stop
Methods inherited from class org.apache.camel.support.service.BaseService
build, doBuild, doFail, doInit, doLifecycleChange, doResume, doStop, doSuspend, fail, getStatus, init, isBuild, isInit, isNew, isRunAllowed, isShutdown, isStarted, isStarting, isStartingOrStarted, isStopped, isStopping, isStoppingOrStopped, isSuspended, isSuspending, isSuspendingOrSuspended, resume, suspend
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.camel.Service
build, close, init
Methods inherited from interface org.apache.camel.StatefulService
getStatus, isRunAllowed, isStarted, isStarting, isStopped, isStopping, isSuspending
Methods inherited from interface org.apache.camel.SuspendableService
isSuspended, resume, suspend
-
Field Details
-
taskFactory
-
redeliverySleepCounter
-
executorService
-
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.CamelContext 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
-
deadLetterHandleNewException
protected final boolean deadLetterHandleNewException -
redeliveryProcessor
protected final org.apache.camel.Processor redeliveryProcessor -
redeliveryPolicy
-
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 Details
-
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 Details
-
process
public void process(org.apache.camel.Exchange exchange) - Specified by:
process
in interfaceorg.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 interfaceorg.apache.camel.AsyncProcessor
-
processAsync
public CompletableFuture<org.apache.camel.Exchange> processAsync(org.apache.camel.Exchange exchange) - Specified by:
processAsync
in interfaceorg.apache.camel.AsyncProcessor
-
changeOutput
public void changeOutput(org.apache.camel.Processor output) - Specified by:
changeOutput
in interfaceorg.apache.camel.spi.ErrorHandlerRedeliveryCustomizer
-
supportTransacted
public boolean supportTransacted()Description copied from class:ErrorHandlerSupport
Whether this error handler supports transacted exchanges or not.- Specified by:
supportTransacted
in classErrorHandlerSupport
-
hasNext
public boolean hasNext()- Specified by:
hasNext
in interfaceorg.apache.camel.Navigate<org.apache.camel.Processor>
-
next
- Specified by:
next
in interfaceorg.apache.camel.Navigate<org.apache.camel.Processor>
-
isRunAllowedOnPreparingShutdown
protected boolean isRunAllowedOnPreparingShutdown() -
prepareShutdown
public void prepareShutdown(boolean suspendOnly, boolean forced) - Specified by:
prepareShutdown
in interfaceorg.apache.camel.spi.ShutdownPrepared
-
determineRedeliveryDelay
protected long determineRedeliveryDelay(org.apache.camel.Exchange exchange, RedeliveryPolicy redeliveryPolicy, long redeliveryDelay, int redeliveryCounter) Determines the redelivery delay time by first inspecting the Message header
Exchange.REDELIVERY_DELAY
and if not present, defaulting toRedeliveryPolicy.calculateRedeliveryDelay(long, int)
In order to prevent manipulation of the RedeliveryData state, the values of
RedeliveryErrorHandler.RedeliveryTask.redeliveryDelay
andRedeliveryErrorHandler.RedeliveryTask.redeliveryCounter
are copied in.- Parameters:
exchange
- The current exchange in question.redeliveryPolicy
- The RedeliveryPolicy to use in the calculation.redeliveryDelay
- The default redelivery delay from RedeliveryDataredeliveryCounter
- The redeliveryCounter- Returns:
- The time to wait before the next redelivery.
-
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 interfaceorg.apache.camel.spi.ErrorHandlerRedeliveryCustomizer
- Specified by:
getOutput
in classErrorHandlerSupport
-
getDeadLetter
public org.apache.camel.Processor getDeadLetter()Returns the dead letter that message exchanges will be sent to if the redelivery attempts fail -
getDeadLetterUri
-
isUseOriginalMessagePolicy
public boolean isUseOriginalMessagePolicy() -
isUseOriginalBodyPolicy
public boolean isUseOriginalBodyPolicy() -
isDeadLetterHandleNewException
public boolean isDeadLetterHandleNewException() -
getRedeliveryPolicy
-
getLogger
public org.apache.camel.spi.CamelLogger getLogger() -
getDefaultHandledPredicate
protected org.apache.camel.Predicate getDefaultHandledPredicate() -
determineIfRedeliveryIsEnabled
- Specified by:
determineIfRedeliveryIsEnabled
in interfaceorg.apache.camel.spi.ErrorHandlerRedeliveryCustomizer
- Throws:
Exception
-
doStart
- Overrides:
doStart
in classorg.apache.camel.support.service.BaseService
- Throws:
Exception
-
doShutdown
- Overrides:
doShutdown
in classorg.apache.camel.support.service.BaseService
- Throws:
Exception
-