Hi The default error handler is now changed in Camel 2.0.
On Wed, Apr 1, 2009 at 11:58 AM, Claus Ibsen <claus.ib...@gmail.com> wrote: > On Wed, Apr 1, 2009 at 11:51 AM, Roman Kalukiewicz > <roman.kalukiew...@gmail.com> wrote: >> I would definitely support #1. >> >> #3 is not so good as a default one because it can cause some side effects >> like when you use in-out JMS endpoint. If nothing listens to the queue, then >> you will end up with 6 messages in request queue instead of one (assuming >> you don't use transactions). >> >> BTW Last time when I was looking at it there was no easy way to do #3 even >> if you want it (to have redeliveries, but send an exception in case they >> fail). > Yeah #3 should really be let TransactionErrorHandler support onException. > Allowing you to catch certain exceptions and let it be handled so > there are no rollback. > > >> >> Roman >> >> 2009/3/31 Claus Ibsen <claus.ib...@gmail.com> >> >>> Hi >>> >>> As we work on the Camel 2.0 I would suggest that we start a discussion >>> what should be the preferred error handler defaults in Camel 2.0. >>> What we currently have is the DLC is default and it does 6 retries >>> with 1 sec apart and then just log an ERROR and ends the exchange. >>> >>> We have 3 different error handler types >>> - no error handler (= disabled) >>> - DeadLetterChannel (= default in 1.x) >>> - TransactionErrorHandler (= using Spring TX) >>> >>> As people can use Camel in different runtimes and with different needs >>> for error handling we cannot have a default that fits all situations. >>> >>> We could for instance do >>> >>> 1) >>> Disable error handling by default. >>> >>> This would be the least surprises for end users. If there is some >>> exception then it would be propagated back to the caller. >>> We could even optimize the logic in Camel to avoid adding the >>> interceptor that adds the noErrorHandler. >>> >>> +1 from me >>> >>> >>> 2) >>> Keep it as is >>> big -1 from me. We have the luxury of being able to change defaults >>> before 2.0 is released. So we should do it!!! >>> >>> >>> 3) >>> Use DeadLetterChannel but add a feature so it avoids failure handling >>> it by default. So it will be able to do retries but if it fails all >>> together >>> it will propagate the exception back to the caller as if the have been >>> no error handler at all. >>> >>> This feature could also be useable for end users in other situations, >>> eg retry IOExceptions and in case of a all attempts failed then >>> propgate the excpetion back to the caller. >>> >>> What should the option name be: >>> - moveToDeadLetterQueue=false >>> - handled=false (like the handled we have at onException) >>> >>> +1 as well. We can even do #1 and #3 >>> >>> >>> 4) >>> For TX its mostly all the Spring XML garbage that is needed to setup >>> TX that can be a bit hard to get configure correct. >>> So the JMS component have a transacted=true option to allow to do this >>> itself or discover if there is a Spring TX manager already. >>> >>> Maybe we can default to use transactionErrorHandler if we can find a >>> Spring TX manager. But this would only work for certain transports >>> that support TX, and that is mostly only JMS and JDBC. >>> >>> So what should happens for routing not involving those, eg camel-cxf, >>> over file to a mail etc? >>> Could be confusing, if Camel uses TX for certain routes and the other >>> for the other routes. >>> >>> So what we have now with the transacted=true option is good as end >>> users need to explicit declare this option. >>> We could maybe add this for the JDBC based components as well: JPA, JDBC, >>> SQL. >>> >>> >>> Any thoughts? >>> >>> >>> >>> -- >>> Claus Ibsen >>> Apache Camel Committer >>> >>> Open Source Integration: http://fusesource.com >>> Blog: http://davsclaus.blogspot.com/ >>> Twitter: http://twitter.com/davsclaus >>> >> > > > > -- > Claus Ibsen > Apache Camel Committer > > Open Source Integration: http://fusesource.com > Blog: http://davsclaus.blogspot.com/ > Twitter: http://twitter.com/davsclaus > Apache Camel Reference Card: > http://refcardz.dzone.com/refcardz/enterprise-integration > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus Apache Camel Reference Card: http://refcardz.dzone.com/refcardz/enterprise-integration