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>
Modifier and Type | Class and Description |
---|---|
protected class |
RedeliveryErrorHandler.RedeliveryTask
Task to perform calling the processor and handling redelivery if it fails (more advanced than ProcessTask)
|
protected class |
RedeliveryErrorHandler.SimpleTask
Simple task to perform calling the processor with no redelivery support
|
Modifier and Type | Field and Description |
---|---|
protected org.apache.camel.spi.AsyncProcessorAwaitManager |
awaitManager |
protected org.apache.camel.ExtendedCamelContext |
camelContext |
protected boolean |
customExchangeFormatter |
protected org.apache.camel.Processor |
deadLetter |
protected boolean |
deadLetterHandleNewException |
protected String |
deadLetterUri |
protected org.apache.camel.spi.ExchangeFormatter |
exchangeFormatter |
protected ScheduledExecutorService |
executorService |
protected org.apache.camel.spi.CamelLogger |
logger |
protected org.apache.camel.Processor |
onExceptionProcessor |
protected org.apache.camel.Processor |
onPrepareProcessor |
protected org.apache.camel.Processor |
output |
protected org.apache.camel.AsyncProcessor |
outputAsync |
protected boolean |
preparingShutdown |
protected org.apache.camel.spi.ReactiveExecutor |
reactiveExecutor |
protected boolean |
redeliveryEnabled |
protected RedeliveryPolicy |
redeliveryPolicy |
protected org.apache.camel.Processor |
redeliveryProcessor |
protected AtomicInteger |
redeliverySleepCounter |
protected org.apache.camel.Predicate |
retryWhilePolicy |
protected org.apache.camel.spi.ShutdownStrategy |
shutdownStrategy |
protected boolean |
simpleTask |
protected boolean |
useOriginalBodyPolicy |
protected boolean |
useOriginalMessagePolicy |
DEFAULT_EXCHANGE_FORMATTER, exceptionPolicies, exceptionPolicy
Constructor and Description |
---|
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) |
Modifier and Type | Method and Description |
---|---|
void |
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 needed
|
boolean |
determineIfRedeliveryIsEnabled() |
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 to RedeliveryPolicy.calculateRedeliveryDelay(long, int) |
protected void |
doShutdown() |
protected void |
doStart() |
protected void |
doStop() |
org.apache.camel.Processor |
getDeadLetter()
Returns the dead letter that message exchanges will be sent to if the redelivery attempts fail
|
String |
getDeadLetterUri() |
protected org.apache.camel.Predicate |
getDefaultHandledPredicate() |
org.apache.camel.spi.CamelLogger |
getLogger() |
org.apache.camel.Processor |
getOutput()
Gets the output
|
int |
getPendingRedeliveryCount()
Gets the number of exchanges that are pending for redelivery
|
RedeliveryPolicy |
getRedeliveryPolicy() |
boolean |
hasNext() |
boolean |
isDeadLetterHandleNewException() |
protected boolean |
isDone(org.apache.camel.Exchange exchange)
Strategy to determine if the exchange is done so we can continue
|
protected boolean |
isRunAllowedOnPreparingShutdown() |
boolean |
isUseOriginalBodyPolicy() |
boolean |
isUseOriginalMessagePolicy() |
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 |
supportTransacted()
Whether this error handler supports transacted exchanges or not.
|
addErrorHandler, addExceptionPolicy, clone, getExceptionPolicy, isDeadLetterChannel
addChildService, removeChildService, shutdown, start, stop
build, doBuild, doFail, doInit, doLifecycleChange, doResume, doSuspend, fail, getStatus, init, isBuild, isInit, isNew, isRunAllowed, isShutdown, isStarted, isStarting, isStartingOrStarted, isStopped, isStopping, isStoppingOrStopped, isSuspended, isSuspending, isSuspendingOrSuspended, resume, suspend
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
protected final AtomicInteger redeliverySleepCounter
protected ScheduledExecutorService executorService
protected volatile boolean preparingShutdown
protected org.apache.camel.Processor output
protected org.apache.camel.AsyncProcessor outputAsync
protected final org.apache.camel.ExtendedCamelContext camelContext
protected final org.apache.camel.spi.ReactiveExecutor reactiveExecutor
protected final org.apache.camel.spi.AsyncProcessorAwaitManager awaitManager
protected final org.apache.camel.spi.ShutdownStrategy shutdownStrategy
protected final org.apache.camel.Processor deadLetter
protected final String deadLetterUri
protected final boolean deadLetterHandleNewException
protected final org.apache.camel.Processor redeliveryProcessor
protected final RedeliveryPolicy redeliveryPolicy
protected final org.apache.camel.Predicate retryWhilePolicy
protected final org.apache.camel.spi.CamelLogger logger
protected final boolean useOriginalMessagePolicy
protected final boolean useOriginalBodyPolicy
protected boolean redeliveryEnabled
protected boolean simpleTask
protected final org.apache.camel.spi.ExchangeFormatter exchangeFormatter
protected final boolean customExchangeFormatter
protected final org.apache.camel.Processor onPrepareProcessor
protected final org.apache.camel.Processor onExceptionProcessor
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)
public void process(org.apache.camel.Exchange exchange)
process
in interface org.apache.camel.Processor
public boolean process(org.apache.camel.Exchange exchange, org.apache.camel.AsyncCallback callback)
process
in interface org.apache.camel.AsyncProcessor
public CompletableFuture<org.apache.camel.Exchange> processAsync(org.apache.camel.Exchange exchange)
processAsync
in interface org.apache.camel.AsyncProcessor
public void changeOutput(org.apache.camel.Processor output)
changeOutput
in interface org.apache.camel.spi.ErrorHandlerRedeliveryCustomizer
public boolean supportTransacted()
ErrorHandlerSupport
supportTransacted
in class ErrorHandlerSupport
public boolean hasNext()
hasNext
in interface org.apache.camel.Navigate<org.apache.camel.Processor>
public List<org.apache.camel.Processor> next()
next
in interface org.apache.camel.Navigate<org.apache.camel.Processor>
protected boolean isRunAllowedOnPreparingShutdown()
public void prepareShutdown(boolean suspendOnly, boolean forced)
prepareShutdown
in interface org.apache.camel.spi.ShutdownPrepared
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 to RedeliveryPolicy.calculateRedeliveryDelay(long, int)
In order to prevent manipulation of the RedeliveryData state, the values of
RedeliveryErrorHandler.RedeliveryTask.redeliveryDelay
and RedeliveryErrorHandler.RedeliveryTask.redeliveryCounter
are copied in.
exchange
- The current exchange in question.redeliveryPolicy
- The RedeliveryPolicy to use in the calculation.redeliveryDelay
- The default redelivery delay from RedeliveryDataredeliveryCounter
- The redeliveryCounterprotected org.apache.camel.Exchange defensiveCopyExchangeIfNeeded(org.apache.camel.Exchange exchange)
exchange
- the exchangeprotected boolean isDone(org.apache.camel.Exchange exchange)
public org.apache.camel.Processor getOutput()
ErrorHandlerSupport
getOutput
in interface org.apache.camel.spi.ErrorHandlerRedeliveryCustomizer
getOutput
in class ErrorHandlerSupport
public org.apache.camel.Processor getDeadLetter()
public String getDeadLetterUri()
public boolean isUseOriginalMessagePolicy()
public boolean isUseOriginalBodyPolicy()
public boolean isDeadLetterHandleNewException()
public RedeliveryPolicy getRedeliveryPolicy()
public org.apache.camel.spi.CamelLogger getLogger()
protected org.apache.camel.Predicate getDefaultHandledPredicate()
public boolean determineIfRedeliveryIsEnabled() throws Exception
determineIfRedeliveryIsEnabled
in interface org.apache.camel.spi.ErrorHandlerRedeliveryCustomizer
Exception
public int getPendingRedeliveryCount()
protected void doStart() throws Exception
doStart
in class org.apache.camel.support.service.BaseService
Exception
protected void doStop() throws Exception
doStop
in class org.apache.camel.support.service.BaseService
Exception
Apache Camel