public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport implements 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.RedeliveryState
Contains the current redelivery state
|
Modifier and Type | Field and Description |
---|---|
protected org.apache.camel.spi.AsyncProcessorAwaitManager |
awaitManager |
protected org.apache.camel.CamelContext |
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 boolean |
redeliveryEnabled |
protected RedeliveryPolicy |
redeliveryPolicy |
protected org.apache.camel.Processor |
redeliveryProcessor |
protected AtomicInteger |
redeliverySleepCounter |
protected org.apache.camel.Predicate |
retryWhilePolicy |
protected boolean |
useOriginalBodyPolicy |
protected boolean |
useOriginalMessagePolicy |
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)
Allows to change the output of the error handler which are used when optimising the
JMX instrumentation to use either an advice or wrapped processor when calling a processor.
|
protected org.apache.camel.Exchange |
defensiveCopyExchangeIfNeeded(org.apache.camel.Exchange exchange)
Performs a defensive copy of the exchange if needed
|
boolean |
determineIfRedeliveryIsEnabled()
Determines if redelivery is enabled by checking if any of the redelivery policy
settings may allow redeliveries.
|
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()
Returns the output processor
|
int |
getPendingRedeliveryCount()
Gets the number of exchanges that are pending for redelivery
|
RedeliveryPolicy |
getRedeliveryPolicy() |
boolean |
hasNext() |
protected boolean |
isCancelledOrInterrupted(org.apache.camel.Exchange exchange)
Strategy to determine if the exchange was cancelled or interrupted
|
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) |
protected boolean |
shouldHandleException(org.apache.camel.Exchange exchange)
Strategy whether the exchange has an exception that we should try to handle.
|
boolean |
supportTransacted()
Whether this error handler supports transacted exchanges or not.
|
addErrorHandler, addExceptionPolicy, createDefaultExceptionPolicyStrategy, getExceptionPolicy, isDeadLetterChannel, setExceptionPolicy
addChildService, removeChildService, shutdown, start, stop
doInit, doResume, doSuspend, getStatus, init, isInit, isNew, isRunAllowed, isShutdown, isStarted, isStarting, isStartingOrStarted, isStopped, isStopping, isStoppingOrStopped, isSuspended, isSuspending, isSuspendingOrSuspended, resume, suspend
protected final AtomicInteger redeliverySleepCounter
protected ScheduledExecutorService executorService
protected final org.apache.camel.CamelContext camelContext
protected final org.apache.camel.spi.AsyncProcessorAwaitManager awaitManager
protected final org.apache.camel.Processor deadLetter
protected final String deadLetterUri
protected final boolean deadLetterHandleNewException
protected org.apache.camel.Processor output
protected org.apache.camel.AsyncProcessor outputAsync
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 volatile boolean preparingShutdown
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)
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.RedeliveryState.redeliveryDelay
and RedeliveryErrorHandler.RedeliveryState.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 shouldHandleException(org.apache.camel.Exchange exchange)
protected boolean isDone(org.apache.camel.Exchange exchange)
protected boolean isCancelledOrInterrupted(org.apache.camel.Exchange exchange)
public org.apache.camel.Processor getOutput()
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
Exception
- can be thrownpublic int getPendingRedeliveryCount()
protected void doStart() throws Exception
doStart
in class org.apache.camel.support.service.ServiceSupport
Exception
protected void doStop() throws Exception
doStop
in class org.apache.camel.support.service.ServiceSupport
Exception
Apache Camel