2010-05-30

Apache Camel and BPEL

As one of the founders of Apache Camel, James Strachan announced last year, we will switch the Camel routing engine to be 100% BPEL based. BPEL have just proven to be superior as it locks down the number of choices and freedom you may otherwise have with Camel. And on top of that you can tell management and decision makers that Camel is standardized on one of the few acronyms they may have heard about.

With this decision in mind, Jonathan and I have decided to scratch the Camel in Action book and start all over again and have it titled BPEL in Action. Existing MEAP subscribers is asked kindly to delete their received pdf files and patiently wait 2 years for us to re-write the 14 chapters.

Okay its not the 1st of April, but this is of course not going to happen. However there is a slight grain of truth in there. There has been people in the Camel community who have been asked about native PBEL support in Camel. So with that in mind we have started a camel-ode component, which leverages the Apache ODE BPEL framework. The source code is in trunk and you are more than welcome to help out of you are interested. The code is currently a prototype and it definitly need some more love to turn it into a beautitful Camel component. I am personally way to deep into the Camel book to be able to spend my spare time on finishing the camel-ode component. So please help us out. Maybe your organization already uses BPEL and thus would be much interested to have it supported out of the box in Camel. 

If you can't wait for BPEL in Camel then FUSE ESB 4.2 now provides PBEL support. 

2010-05-13

Apache Camel 2.3 - How to ignore exceptions

Error handling is notoriously hard and Camel have extensive support to configure and handle situations differently when a failure occur.

One such feature is the onException which allows you among others to define policies what to do when a given set of exception occurs. For example you can define individual redelivery settings, to say that ConnectionException should try up till 5 times with a backoff multiplier of 2.

In cases where we give up (exhaust) you can let Camel route the messages which allows you to do some custom processing when we failed. In these situations you can also indicate you want to handle the exception. That means the exception is removed from the Exchange and you can provide a custom failure message, to a waiting caller. For example if you do request/reply over TCP where you need to return a custom format in case of failure.

But there are situations where you just want to ignore and continue if a given exception was thrown. And up till now that was only possible to do using the doTry .. doCatch in Camel. However in Camel 2.3 we now have a new option on onException called continued, which allows you to tell Camel, that it should ignore the exception and just continue routing to the next processor in the route.

We picked the name continued because the similar option was named handled. And when using continued its automatic handled as well. And you can only configure one of them.

You can read more about this at the Camel wiki page, at the section Handle and continue exceptions.

Another feature which I have meant to write about for some time is the Event Notifer, which allows you to subscribe to events in Camel. For example you can be notifier about routes being started and stopped etc. Also fine grained events about Exchanges being routed as well. For example when an Exchange is being sent to an endpoint. Suppose we want to log all those events and how long time it took to sent it to the endpoints. I have created an example in the cookbook page at Camel. You can find it here.

PS: If you do not grasp the Camel error handling, then the chapter 5 in the Camel in Action book has received great reviews and people generally understand the error handling much better after reading it.

2010-05-04

FUSE community day - Here I come

I am proud to announce that I am attending the next FUSE community day as a speaker.

I will speak about Apache Camel at the FUSE community day, which is held on May 25th 2010 in Frankfurt, Germany. We start at 9:00 am and have a full packed day with great speakers.
At 4:30 pm its time for "evaluation" where you can join us for a drink and a "one-on-one" chat with the many great minds at FUSE and network/mingle with the other participants.

You can see the agenda which is listed on the FUSE site.
Get the latest news on Apache ServiceMix, ActiveMQ, CXF, Camel.
Hear from committers, founders like Rob Davies, James Strachan and Claus Ibsen and users who have successfully implemented Apache in projects.
Meet and network with peers at this free educational community day.

Date
25th of May

Time
9:00AM to 4:30PM

Location
Radisson Blu Hotel, Franklinstrasse 65, 60486 Frankfurt am Main

Who Should Attend
Developers, architects, engineers and IT managers

How to register
Use this link