I've added a few more items to our Enterprise Integration Patterns page... http://cwiki.apache.org/CAMEL/enterprise-integration-patterns.html
in particular I've added support for Dead Letter Channel http://cwiki.apache.org/CAMEL/dead-letter-channel.html I reused the RedeliveryPolicy class from ActiveMQ so we can configure redelivery counts, exponential backoffs, collision avoidence and so forth. I've enabled this by default (as it makes the most sense to always be able to retry on errors and if not send to a dead letter channel). Its pretty easy to override the default ErrorHandlerBuilder on the builders; this error handler is then inherited in child builders. So you could specify an error handler for all routes, or overload just for a specific step etc Its described here: http://cwiki.apache.org/CAMEL/error-handler.html Right now each Processor in the tree gets wrapped in an error handler (unless you explicitly set the NoErrorHandler) and I've made the Dead Letter Channel the default out of the box. Does this sound reasonable to folks? e.g. if a filter works, but the child processor fails, only that child processor will currently be restarted. So it kinda depends on what the user is doing at which level in the tree of processors as to how much or little we should; am wondering if we should just have a dead letter handler on the root (which works best for transactional resources) then none on the branches or leaves. Maybe we could be more clever with the default; say for transactional clients, we only use an error handler in the root and bubble up all other exceptions so the entire thing is restarted; for non-transactional clients we use an error handler at each layer in the tree? Can anyone think of better defaults - or are these defaults confusing? -- James ------- http://radio.weblogs.com/0112098/
