FuseSource has launched

A little late to the party, I got time to write a blog entry of this important event. The announcement actually happend on monday the 25th october 2010.

Rob has explained the background along with Larry's interview and Dana's podcast much better than I could have.

From a personal perspective I'm really excited about the future of FuseSource; we're growing fast, have some amazing customers & a great team including the folks who created Apache ActiveMQ, Apache Camel and Apache ServiceMix; and now we have autonomy so we can stay nimble & fast like a startup while we innovate and iterate to help our customers solve their integration problems with open source; all the while having the security of being backed by a large company. This is gonna be fun! :)


Camel in Action - One year anniversary

Exactly one year ago we announced the Camel in Action book and had it put out for pre-sale at Manning using their MEAP program.

Today the manuscript is complete and we are in the process of type setting the first chapters. So far chapter 1 and 2 has been type set. The other chapters will follow day by day.

I am currently battling with some minor updates for chapter 13 based on new features and improvements introduced in Apache Camel 2.5. Which btw is expected to be released in the near term. The release is to be cut this weekend.

Today I spoke with the publisher and they told me that so far the MEAP sales is at 1578. This is a great high number and gives a strong message to the community that there is a great interrest in Apache Camel. As you may know I have previously blogged that Camel in Action is a best seller already.

To celebrate this they gave us a discount coupon code you can use when ordering the book camel40au. Yes the code gives 40% discount.


Camel in Action - First typeset

The Camel in Action book is well underway. The first chapter has just been typeset and there are 5-6 other chapters in the pipeline as well.

Its in fact only chapter 13 which has to be updated on my end before its ready for type setting as well. And there are some chapters which are currently in proofing before they are ready for type setting.

Its hard to believe its just one year ago the book was put up for sale. Jonathan and I have been buys writers.


Paris and easier Camel route debugging

I am sitting at the airport in Paris killing a couple of hours before my flight home.
As usually the wifi is not free of charge, so I decide to save the 10 euro / hour and write a blog entry instead.

The Fuse Community Day in Paris was a great event. I enjoyed meeting with people who I have been working together with online, but haven't had the chance to meet yet.

I was told the audience liked my Camel presentation despite I had to give it in English. Most of the speakers spoke in French.

Nevertheless its really great to meet end users and hear about the troubles with Camel and what they like etc. I was talking to Christian Mueller from Atos Worldline and he would like to be able to easier debug Camel routes.

I totally agree and said we have introduced the Debugger SPI in Camel 2.5, which he could leverage. Albeit the API was geared towards tooling such as the FuseSource Rider that James Strachan is working on.

So the story is that here at the airport I have made it very easy when using the Camel Test Kit to debug Camel routes by leveraging the Debugger API.

Given this route:

        .transform(body().prepend("Hello "))

And having this unit test method:

    public void testRoute() throws Exception {
        // set mock expectations

        // send a message
        template.sendBody("direct:start", "World");

       // assert mocks

Its now possible to single step debug the route using by adding the following code, in the top of the test method:

    // you can debug camel routes easily as shown below:
    debug(new BreakpointSupport() {
        public void beforeProcess(Exchange exchange, Processor processor, ProcessorDefinition definition) {
            // this method is invoked before we are about to enter the given processor
            // from your Java editor you can just add a breakpoint in the code line below
            log.info("Before " + definition + " with body " + exchange.getIn().getBody());

For example if we run the test the code above will log each step as shown:
    [main] DebugJUnit4Test  INFO  Before To[mock:a] with body World
    [main] DebugJUnit4Test  INFO  Before Transform[{prepend(body, Hello )}] with body World
    [main] DebugJUnit4Test  INFO  Before To[mock:b] with body Hello World

So if you want to debug the route from your Java editor, all you have to do is to add a breakpoint in that code above and run in debug mode. Here is a screenshot from my editor showing this:

As you can see we hit the breakpoint in the Java editor and you can now inspect the Exchange.

The BreakpointSupport class has a number of methods you can override as callbacks at events.
- beforeProcess method is invoked before we enter a processor
- afterProcess method is invoked just after a processor

You can read more about this at the javadoc for the org.apache.camel.spi.Breakpoint interface.

I also though of instead beforeProcess and afterProcess as protected methods directly in the CamelTestSupport class allows you to easily debug by just overriding those method. Maybe we can have both solutions? I will start a discussion on the Camel mailing list about this.

Happy debugging!


Help us by taking the Camel Survey!

The Apache Camel PMC launched yesterday a survey intended to get a better understanding of how Camel is used, what the major issues are in getting started with Camel (and even for experienced users) and what improvements and new features you would like to see in the next releases.

The survey is anonymous and the results will be made public. Committers will use the survey results to help finalizing the 3.0 roadmap and prioritizing tasks. The Camel 3.0 release is planned for early Q1 2011.

So please take the survey (http://s.apache.org/camel-survey) if you didn't already!

Many thanks,
The Apache Camel PMC