public class DefaultErrorHandlerBuilder extends ErrorHandlerBuilderSupport
Modifier and Type | Field and Description |
---|---|
protected boolean |
asyncDelayedRedelivery |
protected org.apache.camel.Endpoint |
deadLetter |
protected boolean |
deadLetterHandleNewException |
protected String |
deadLetterUri |
protected ScheduledExecutorService |
executorService |
protected String |
executorServiceRef |
protected org.apache.camel.Processor |
failureProcessor |
protected org.apache.camel.spi.CamelLogger |
logger |
protected org.apache.camel.Processor |
onExceptionOccurred |
protected org.apache.camel.Processor |
onPrepareFailure |
protected org.apache.camel.Processor |
onRedelivery |
protected org.apache.camel.processor.errorhandler.RedeliveryPolicy |
redeliveryPolicy |
protected org.apache.camel.Predicate |
retryWhile |
protected String |
retryWhileRef |
protected boolean |
useOriginalBody |
protected boolean |
useOriginalMessage |
Constructor and Description |
---|
DefaultErrorHandlerBuilder() |
Modifier and Type | Method and Description |
---|---|
DefaultErrorHandlerBuilder |
allowRedeliveryWhileStopping(boolean allowRedeliveryWhileStopping)
Controls whether to allow redelivery while stopping/shutting down a route
that uses error handling.
|
DefaultErrorHandlerBuilder |
asyncDelayedRedelivery()
Will allow asynchronous delayed redeliveries.
|
DefaultErrorHandlerBuilder |
backOffMultiplier(double backOffMultiplier) |
ErrorHandlerBuilder |
cloneBuilder()
Clones this builder so each
RouteBuilder has its private builder
to use, to avoid changes from one RouteBuilder to influence the
others. |
protected void |
cloneBuilder(DefaultErrorHandlerBuilder other) |
DefaultErrorHandlerBuilder |
collisionAvoidancePercent(double collisionAvoidancePercent) |
org.apache.camel.Processor |
createErrorHandler(org.apache.camel.spi.RouteContext routeContext,
org.apache.camel.Processor processor) |
protected org.apache.camel.spi.CamelLogger |
createLogger() |
protected org.apache.camel.processor.errorhandler.RedeliveryPolicy |
createRedeliveryPolicy() |
DefaultErrorHandlerBuilder |
deadLetterHandleNewException(boolean handleNewException)
Whether the dead letter channel should handle (and ignore) any new
exception that may been thrown during sending the message to the dead
letter endpoint.
|
DefaultErrorHandlerBuilder |
delayPattern(String delayPattern) |
DefaultErrorHandlerBuilder |
disableRedelivery() |
DefaultErrorHandlerBuilder |
exchangeFormatterRef(String exchangeFormatterRef) |
DefaultErrorHandlerBuilder |
executorServiceRef(String ref)
Sets a reference to a thread pool to be used for redelivery.
|
org.apache.camel.Endpoint |
getDeadLetter() |
String |
getDeadLetterUri() |
ScheduledExecutorService |
getExecutorService() |
protected ScheduledExecutorService |
getExecutorService(org.apache.camel.CamelContext camelContext) |
String |
getExecutorServiceRef() |
org.apache.camel.Processor |
getFailureProcessor() |
org.apache.camel.spi.CamelLogger |
getLogger() |
org.apache.camel.Processor |
getOnExceptionOccurred() |
org.apache.camel.Processor |
getOnPrepareFailure() |
org.apache.camel.Processor |
getOnRedelivery() |
org.apache.camel.processor.errorhandler.RedeliveryPolicy |
getRedeliveryPolicy() |
org.apache.camel.Predicate |
getRetryWhile() |
org.apache.camel.Predicate |
getRetryWhilePolicy(org.apache.camel.CamelContext context) |
String |
getRetryWhileRef() |
boolean |
isAsyncDelayedRedelivery() |
boolean |
isDeadLetterHandleNewException() |
boolean |
isUseOriginalBody() |
boolean |
isUseOriginalMessage() |
DefaultErrorHandlerBuilder |
log(Class<?> log)
Sets the log used for caught exceptions
|
DefaultErrorHandlerBuilder |
log(org.slf4j.Logger log)
Sets the log used for caught exceptions
|
DefaultErrorHandlerBuilder |
log(String log)
Sets the log used for caught exceptions
|
DefaultErrorHandlerBuilder |
logExhausted(boolean logExhausted) |
DefaultErrorHandlerBuilder |
logExhaustedMessageBody(boolean logExhaustedMessageBody) |
DefaultErrorHandlerBuilder |
logExhaustedMessageHistory(boolean logExhaustedMessageHistory) |
DefaultErrorHandlerBuilder |
logger(org.apache.camel.spi.CamelLogger logger)
Sets the logger used for caught exceptions
|
DefaultErrorHandlerBuilder |
loggingLevel(org.apache.camel.LoggingLevel level)
Sets the logging level of exceptions caught
|
DefaultErrorHandlerBuilder |
logHandled(boolean logHandled) |
DefaultErrorHandlerBuilder |
logNewException(boolean logNewException) |
DefaultErrorHandlerBuilder |
logRetryAttempted(boolean logRetryAttempted) |
DefaultErrorHandlerBuilder |
logRetryStackTrace(boolean logRetryStackTrace) |
DefaultErrorHandlerBuilder |
logStackTrace(boolean logStackTrace) |
DefaultErrorHandlerBuilder |
maximumRedeliveries(int maximumRedeliveries) |
DefaultErrorHandlerBuilder |
maximumRedeliveryDelay(long maximumRedeliveryDelay) |
DefaultErrorHandlerBuilder |
onExceptionOccurred(org.apache.camel.Processor processor)
Sets a custom
Processor to process the
Exchange just after an exception was thrown. |
DefaultErrorHandlerBuilder |
onPrepareFailure(org.apache.camel.Processor processor)
Sets a custom
Processor to prepare the
Exchange before handled by the failure processor
/ dead letter channel. |
DefaultErrorHandlerBuilder |
onRedelivery(org.apache.camel.Processor processor)
Sets a processor that should be processed before a redelivery
attempt.
|
DefaultErrorHandlerBuilder |
redeliveryDelay(long delay) |
DefaultErrorHandlerBuilder |
retriesExhaustedLogLevel(org.apache.camel.LoggingLevel retriesExhaustedLogLevel) |
DefaultErrorHandlerBuilder |
retryAttemptedLogInterval(int retryAttemptedLogInterval) |
DefaultErrorHandlerBuilder |
retryAttemptedLogLevel(org.apache.camel.LoggingLevel retryAttemptedLogLevel) |
DefaultErrorHandlerBuilder |
retryWhile(org.apache.camel.Expression retryWhile)
Sets the retry while expression.
|
void |
setAsyncDelayedRedelivery(boolean asyncDelayedRedelivery) |
void |
setDeadLetter(org.apache.camel.Endpoint deadLetter) |
void |
setDeadLetterHandleNewException(boolean deadLetterHandleNewException) |
void |
setDeadLetterUri(String deadLetterUri) |
void |
setExecutorService(ScheduledExecutorService executorService) |
void |
setExecutorServiceRef(String executorServiceRef) |
void |
setFailureProcessor(org.apache.camel.Processor failureProcessor) |
void |
setLogger(org.apache.camel.spi.CamelLogger logger) |
void |
setOnExceptionOccurred(org.apache.camel.Processor onExceptionOccurred) |
void |
setOnPrepareFailure(org.apache.camel.Processor onPrepareFailure) |
void |
setOnRedelivery(org.apache.camel.Processor onRedelivery) |
void |
setRedeliveryPolicy(org.apache.camel.processor.errorhandler.RedeliveryPolicy redeliveryPolicy)
Sets the redelivery policy
|
void |
setRetryWhile(org.apache.camel.Predicate retryWhile) |
void |
setRetryWhileRef(String retryWhileRef) |
void |
setUseOriginalBody(boolean useOriginalBody) |
void |
setUseOriginalMessage(boolean useOriginalMessage) |
boolean |
supportTransacted()
Whether this error handler supports transacted exchanges.
|
String |
toString() |
DefaultErrorHandlerBuilder |
useCollisionAvoidance() |
DefaultErrorHandlerBuilder |
useExponentialBackOff() |
DefaultErrorHandlerBuilder |
useOriginalBody()
Will use the original input
Message body
(original body only) when an Exchange is moved
to the dead letter queue. |
DefaultErrorHandlerBuilder |
useOriginalMessage()
Will use the original input
Message (original
body and headers) when an Exchange is moved to
the dead letter queue. |
addExceptionPolicy, cloneBuilder, configure, createExceptionClasses, exceptionPolicyStrategy, getExceptionPolicyStrategy, setExceptionPolicyStrategy, toExceptionPolicy
protected org.apache.camel.spi.CamelLogger logger
protected org.apache.camel.processor.errorhandler.RedeliveryPolicy redeliveryPolicy
protected org.apache.camel.Processor onRedelivery
protected org.apache.camel.Predicate retryWhile
protected String retryWhileRef
protected org.apache.camel.Processor failureProcessor
protected org.apache.camel.Endpoint deadLetter
protected String deadLetterUri
protected boolean deadLetterHandleNewException
protected boolean useOriginalMessage
protected boolean useOriginalBody
protected boolean asyncDelayedRedelivery
protected String executorServiceRef
protected ScheduledExecutorService executorService
protected org.apache.camel.Processor onPrepareFailure
protected org.apache.camel.Processor onExceptionOccurred
public DefaultErrorHandlerBuilder()
public org.apache.camel.Processor createErrorHandler(org.apache.camel.spi.RouteContext routeContext, org.apache.camel.Processor processor) throws Exception
Exception
public boolean supportTransacted()
ErrorHandlerBuilder
public ErrorHandlerBuilder cloneBuilder()
ErrorHandlerBuilder
RouteBuilder
has its private builder
to use, to avoid changes from one RouteBuilder
to influence the
others.
This is needed by the current Camel 2.x architecture.ErrorHandlerBuilder
protected void cloneBuilder(DefaultErrorHandlerBuilder other)
public DefaultErrorHandlerBuilder backOffMultiplier(double backOffMultiplier)
public DefaultErrorHandlerBuilder collisionAvoidancePercent(double collisionAvoidancePercent)
public DefaultErrorHandlerBuilder redeliveryDelay(long delay)
public DefaultErrorHandlerBuilder delayPattern(String delayPattern)
public DefaultErrorHandlerBuilder maximumRedeliveries(int maximumRedeliveries)
public DefaultErrorHandlerBuilder disableRedelivery()
public DefaultErrorHandlerBuilder maximumRedeliveryDelay(long maximumRedeliveryDelay)
public DefaultErrorHandlerBuilder useCollisionAvoidance()
public DefaultErrorHandlerBuilder useExponentialBackOff()
public DefaultErrorHandlerBuilder retriesExhaustedLogLevel(org.apache.camel.LoggingLevel retriesExhaustedLogLevel)
public DefaultErrorHandlerBuilder retryAttemptedLogLevel(org.apache.camel.LoggingLevel retryAttemptedLogLevel)
public DefaultErrorHandlerBuilder retryAttemptedLogInterval(int retryAttemptedLogInterval)
public DefaultErrorHandlerBuilder logStackTrace(boolean logStackTrace)
public DefaultErrorHandlerBuilder logRetryStackTrace(boolean logRetryStackTrace)
public DefaultErrorHandlerBuilder logHandled(boolean logHandled)
public DefaultErrorHandlerBuilder logNewException(boolean logNewException)
public DefaultErrorHandlerBuilder logExhausted(boolean logExhausted)
public DefaultErrorHandlerBuilder logRetryAttempted(boolean logRetryAttempted)
public DefaultErrorHandlerBuilder logExhaustedMessageHistory(boolean logExhaustedMessageHistory)
public DefaultErrorHandlerBuilder logExhaustedMessageBody(boolean logExhaustedMessageBody)
public DefaultErrorHandlerBuilder exchangeFormatterRef(String exchangeFormatterRef)
public DefaultErrorHandlerBuilder asyncDelayedRedelivery()
RedeliveryPolicy.setAsyncDelayedRedelivery(boolean)
public DefaultErrorHandlerBuilder allowRedeliveryWhileStopping(boolean allowRedeliveryWhileStopping)
allowRedeliveryWhileStopping
- true to allow redelivery,
false to reject redeliveriespublic DefaultErrorHandlerBuilder executorServiceRef(String ref)
ref
- reference to a scheduled thread poolpublic DefaultErrorHandlerBuilder logger(org.apache.camel.spi.CamelLogger logger)
logger
- the loggerpublic DefaultErrorHandlerBuilder loggingLevel(org.apache.camel.LoggingLevel level)
level
- the logging levelpublic DefaultErrorHandlerBuilder log(org.slf4j.Logger log)
log
- the loggerpublic DefaultErrorHandlerBuilder log(String log)
log
- the log namepublic DefaultErrorHandlerBuilder log(Class<?> log)
log
- the log classpublic DefaultErrorHandlerBuilder onRedelivery(org.apache.camel.Processor processor)
Exchange
before
its being redelivered.processor
- the processorpublic DefaultErrorHandlerBuilder retryWhile(org.apache.camel.Expression retryWhile)
retryWhile
- expression that determines when to stop retryingpublic DefaultErrorHandlerBuilder useOriginalMessage()
Message
(original
body and headers) when an Exchange
is moved to
the dead letter queue.
Notice: this only applies when all redeliveries attempt have
failed and the Exchange
is doomed for failure.
Exchange
IN message we use the original IN message instead. This allows you to
store the original input in the dead letter queue instead of the
inprogress snapshot of the IN message. For instance if you route
transform the IN body during routing and then failed. With the original
exchange store in the dead letter queue it might be easier to manually re
submit the Exchange
again as the IN message is
the same as when Camel received it. So you should be able to send the
Exchange
to the same input.
The difference between useOriginalMessage and useOriginalBody is that the
former includes both the original body and headers, where as the latter
only includes the original body. You can use the latter to enrich the
message with custom headers and include the original message body. The
former wont let you do this, as its using the original message body and
headers as they are. You cannot enable both useOriginalMessage and
useOriginalBody.
Important: The original input means the input message that are
bounded by the current UnitOfWork
. An unit
of work typically spans one route, or multiple routes if they are
connected using internal endpoints such as direct or seda. When messages
is passed via external endpoints such as JMS or HTTP then the consumer
will create a new unit of work, with the message it received as input as
the original input. Also some EIP patterns such as splitter, multicast,
will create a new unit of work boundary for the messages in their
sub-route (eg the splitted message); however these EIPs have an option
named shareUnitOfWork which allows to combine with the parent
unit of work in regard to error handling and therefore use the parent
original message.
By default this feature is off.useOriginalBody()
public DefaultErrorHandlerBuilder useOriginalBody()
Message
body
(original body only) when an Exchange
is moved
to the dead letter queue.
Notice: this only applies when all redeliveries attempt have
failed and the Exchange
is doomed for failure.
Exchange
IN message we use the original IN message instead. This allows you to
store the original input in the dead letter queue instead of the
inprogress snapshot of the IN message. For instance if you route
transform the IN body during routing and then failed. With the original
exchange store in the dead letter queue it might be easier to manually re
submit the Exchange
again as the IN message is
the same as when Camel received it. So you should be able to send the
Exchange
to the same input.
The difference between useOriginalMessage and useOriginalBody is that the
former includes both the original body and headers, where as the latter
only includes the original body. You can use the latter to enrich the
message with custom headers and include the original message body. The
former wont let you do this, as its using the original message body and
headers as they are. You cannot enable both useOriginalMessage and
useOriginalBody.
Important: The original input means the input message that are
bounded by the current UnitOfWork
. An unit
of work typically spans one route, or multiple routes if they are
connected using internal endpoints such as direct or seda. When messages
is passed via external endpoints such as JMS or HTTP then the consumer
will create a new unit of work, with the message it received as input as
the original input. Also some EIP patterns such as splitter, multicast,
will create a new unit of work boundary for the messages in their
sub-route (eg the splitted message); however these EIPs have an option
named shareUnitOfWork which allows to combine with the parent
unit of work in regard to error handling and therefore use the parent
original message.
By default this feature is off.useOriginalMessage()
public DefaultErrorHandlerBuilder deadLetterHandleNewException(boolean handleNewException)
Exchange
. This can be
used in situations where you use transactions, and want to use Camel's
dead letter channel to deal with exceptions during routing, but if the
dead letter channel itself fails because of a new exception being thrown,
then by setting this to false the new exceptions is propagated
back and set on the Exchange
, which allows the
transaction to detect the exception, and rollback.handleNewException
- true to handle (and ignore),
false to catch and propagated the exception on the
Exchange
public DefaultErrorHandlerBuilder onPrepareFailure(org.apache.camel.Processor processor)
Processor
to prepare the
Exchange
before handled by the failure processor
/ dead letter channel. This allows for example to enrich the message
before sending to a dead letter queue.processor
- the processorpublic DefaultErrorHandlerBuilder onExceptionOccurred(org.apache.camel.Processor processor)
Processor
to process the
Exchange
just after an exception was thrown.
This allows to execute the processor at the same time the exception was
thrown.
Important: Any exception thrown from this processor will be ignored.processor
- the processorpublic org.apache.camel.Processor getFailureProcessor()
public void setFailureProcessor(org.apache.camel.Processor failureProcessor)
public org.apache.camel.processor.errorhandler.RedeliveryPolicy getRedeliveryPolicy()
public void setRedeliveryPolicy(org.apache.camel.processor.errorhandler.RedeliveryPolicy redeliveryPolicy)
public org.apache.camel.spi.CamelLogger getLogger()
public void setLogger(org.apache.camel.spi.CamelLogger logger)
public org.apache.camel.Processor getOnRedelivery()
public void setOnRedelivery(org.apache.camel.Processor onRedelivery)
public org.apache.camel.Predicate getRetryWhilePolicy(org.apache.camel.CamelContext context)
public org.apache.camel.Predicate getRetryWhile()
public void setRetryWhile(org.apache.camel.Predicate retryWhile)
public String getRetryWhileRef()
public void setRetryWhileRef(String retryWhileRef)
public String getDeadLetterUri()
public void setDeadLetterUri(String deadLetterUri)
public org.apache.camel.Endpoint getDeadLetter()
public void setDeadLetter(org.apache.camel.Endpoint deadLetter)
public boolean isDeadLetterHandleNewException()
public void setDeadLetterHandleNewException(boolean deadLetterHandleNewException)
public boolean isUseOriginalMessage()
public void setUseOriginalMessage(boolean useOriginalMessage)
public boolean isUseOriginalBody()
public void setUseOriginalBody(boolean useOriginalBody)
public boolean isAsyncDelayedRedelivery()
public void setAsyncDelayedRedelivery(boolean asyncDelayedRedelivery)
public ScheduledExecutorService getExecutorService()
public void setExecutorService(ScheduledExecutorService executorService)
public String getExecutorServiceRef()
public void setExecutorServiceRef(String executorServiceRef)
public org.apache.camel.Processor getOnPrepareFailure()
public void setOnPrepareFailure(org.apache.camel.Processor onPrepareFailure)
public org.apache.camel.Processor getOnExceptionOccurred()
public void setOnExceptionOccurred(org.apache.camel.Processor onExceptionOccurred)
protected org.apache.camel.processor.errorhandler.RedeliveryPolicy createRedeliveryPolicy()
protected org.apache.camel.spi.CamelLogger createLogger()
protected ScheduledExecutorService getExecutorService(org.apache.camel.CamelContext camelContext)
Apache Camel