[
https://issues.apache.org/jira/browse/CAMEL-4978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13202280#comment-13202280
]
Andrey Kazantsev commented on CAMEL-4978:
-----------------------------------------
Claus
Thanks for your answer and time!
I agree that introducing new property for *onException* is not a good idea. I
think current design of *onException* with redelivery is ambiguous. Take a look
at it definition:
<onException redeliveryPolicyRef="redeliveryPolicy">
<exception>java.io.IOException</exception>
<to ref="someEndpoint" />
</onException>
It seems that when exception occurs, message is sent to _someEndpoint_.
However, if *redeliveryPolicyRef* is defined message will be re-delivered, and
actions, defined in *onException* are executed only when redelivery attempts
are exhausted.
Also, if we want to prepare message before redelivery, we define *onRedelivery*:
<onException onRedeliveryRef="someProcessor"
redeliveryPolicyRef="redeliveryPolicy">
<exception>java.io.IOException</exception>
<to ref="someEndpoint" />
</onException>
But why we can't define *onRedelivery* in *redeliveryPolicyRef*? This parameter
has sense only in case if *redeliveryPolicyRef* is set.
I think my proposal will look very destructive to current error handling
design, but it seems to be much clear. Here ir is.
*onException* is used for overriding error-handling for some exceptions, with
possible redeliveries. So we should move all settings related to redelivery out
of *onException* to *RedeliveryPolicy*. In this case all actions, described in
*onException* will be executed _every time exception occurs_. In the same time,
*RedeliveryPolicy* will have two properties: *onRedeliveryRef* and
*onRedeliveryFailRef*. First one is called before every redelivery (the same
meaning as now), and second one is called when redelivery attempts are
exhausted - those actions, currently described in *onException*.
What do you think?
> Dead Letter Channel: add onError with correspondence to onRedelivery
> --------------------------------------------------------------------
>
> Key: CAMEL-4978
> URL: https://issues.apache.org/jira/browse/CAMEL-4978
> Project: Camel
> Issue Type: Improvement
> Components: camel-core
> Affects Versions: Future
> Reporter: Andrey Kazantsev
> Priority: Minor
> Labels: features
>
> When an error occurs there can be situation when some actions should be
> performed before next redelivery attempt. These actions can be custom logging
> (in case of Dead Letter Channel we don't have control on logger name and
> format), creating incident request in internal company system, etc.
> Current version of Dead Letter Channel provides support for specifying
> processor which is called when next redelivery attempt is performed. However,
> if delay between attempts is long, this can be too late.
> I think we can implement support for specifying processor which will be
> called when error occurs, e.g., onError property. Then this processor with
> information from provided Exchange can take appropriate actions. For example,
> it can save this message for further investigation, while Dead Letter Channel
> will keep going on redelivering it.
> If this feature is worth to be implemented, I can prepare a patch. I
> implemented a work-around in my current project using onRedelivery, but I
> don't like it because of latency in redelivery interval.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira