Camel in Action - New chapters in MEAP and special discount code

As Jonathan already have announced there are two new chapters available for the Camel in Action book.

I will quote from Jonathan what chapter 2 covers:
Chapter 2 is basically all about routing - a pretty fundamental topic for Camel! I cover route creation in Java and Spring, as well as several EIPs. Since it is such an early chapter its pretty hand-holding throughout - you don't need to know Spring or EIPs beforehand, for instance. 
The other new chapter is chapter 4 (Yes we have rearranged the chapters a bit.). It covers how to use beans with Camel. You may think there isn't material to mandate a topic about beans? Well Camel does go through great lengths to ensure using beans is easy and painless. But under the covers a lot is happening and this chapter discloses what and how. We wrote the code so we damn well talk about how it works :). The goal is to help you better understand and leverage the many features Camel provides for using beans. Camel has clever parameter binding which allows you to have loose coupling between Camel and your beans. It also have a arsenal of parameter and method annotations which has its merits as well. The chapter is also written in a more engaging style allowing you to try out and test as we goes. 

Beware Manning have not yet updated the table of contents in the book website. I assume they will do this later today to reflect the latest rearrangement.

We are also happy to announce that Manning have provided us with a special discount code for this MEAP update. You can get 30% discount for any of the Camel in Action versions (ebook, print book or combo). Use checkout code camel30 from the Camel in Action website.

As always we love feedback and suggestions on the book forum.


Apache Camel - Yet another contribution added to Camel

Stephen Gargan decided to contribute an useful extension to Camel he had done. He created a JIRA ticket CAMEL-2206 and attached patches.

He have created a new EIP called Sampling which allows you to sample a Message during a period. For example suppose you receive a lot of noisy messages and you just need one sample. This is what this pattern does. Note the Aggregator EIP could also do this but it would be a bit more complex to setup using correlation expression and aggregation strategy and whatnot. With the sampler its a dedicated throttler to sample one message out of many.

This morning I reviewed his latest patch and decided it was great quality and spent the time it took to get it into camel-core.

I also wrote initial documentation for it.

Stephens contribution is just one of many for Camel. In Camel 2.1 we already have 5 new components by which I believe 3 of them are contributed from the community, 1 from our new committer Martin Krasser and the last from my employer Progress.

And top that with all the great feedback we get on the mailinglist, irc chat and JIRA tickets by which some have patches. Also thanks to all the people who engage and help test issues based on SNAPSHOT builds. Without you the Camel community was not what it is today. Keep up the good work.


Apache Camel 2.1 - Update on releaseplan

Its almost 3 months since Apache Camel 2.0 was released so its definitely time for a new release and that is why Apache Camel 2.1 is now feature complete. At this time of writing we are waiting for a couple of SNAPSHOT dependencies to be released over at our friends from Apache ServiceMix.

So hopefully in mid next week Hadrian will be able to start building the release kit for Apache Camel 2.1. However before that happens the Apache Camel 1.6.2 release should have gone GA. The vote is still in progress but so far only +1 votes. Assuming everything runs by the book then we will have a release kit at the end of next week which goes through the voting process at Apache. If all again is well then 2.1 will be GA early December. Maybe a bit faster depending on how well it goes for Hadrian to build the release kits.

When Apache Camel 2.1 is GA it will also be included out of the box in the upcoming Apache ServiceMix 4.1. So our friends at SerivceMix is also eagerly waiting for the Camel.

If you want to take a look whats included in Apache Camel 2.1 then checkout the release notes which we write during development.


Camel 2.1 - RoutePolicy a new feature

Apache Camel 2.1 is coming along really nice. Just got one of the last features in today, but that feature is for another blog post.

In Camel 2.1 we have introduced the notion of a route policy. It is used for controlling routes at runtime in a dynamic fashion. You assign a route policy to one or multiple routes which then at runtime will invoke a callback on the RoutePolicy interface. This interface provides hook to control the route such as suspending or resuming it. However you can implement the logic of choice.

By default we ship with a ThrottlingInflightRoutePolicy which is a dynamic throttler based on the current number of inflight exchanges. So you can configure it to throttle at thresholds such at 500 in flight exchanges and a low water mark at 40% etc.

To see all this in action we have added a new Route Throttling Example you can try out and learn how to use this in your projects.

And the ThrottlingInflightRoutePolicy is also JMX enabled so you can change its thresholds at runtime as well. Talk about dynamic :)

There are much more details on those links in this blog. And I have to advert for my book - Camel in Action, where we will provide more details of this feature.


How well does your integration stack respond to your tickets

This blog title could easily be the 2nd part in a blog series. However it is not. Just wanted to a catchy title :) But it would be interesting to check upon the state in the JIRA on terms of responsiveness. However I leave that up for others or I may take a look at this sometime in the future.

What I want to tell is that this morning I did my usual habits and thus also checked upon the Apache Camel JIRA tickets.

This morning Jörn Kottmann reported that setting the timeout on the FTPClient was not possible in ticket CAMEL-2160.

I checked upon this and agreed that it should be easier to configure in Camel and thus began improving this. About 2 hours later I committed to changes and updated the wiki page as well.

The ticket was reported 2 hours before I started working on it, so in total the ticket was open for about 4 hours.

This is a good example how well we often respond to peoples tickets in the Camel community.
I am sure we have similar examples in the past as well, this is not a isolated case.

So how well does your integration stack respond to your tickets? At Camel we strive to respond and in timely manner.

I challenge you to find a ticket which has not been touched at all in the Camel JIRA tracker.


How buggy is your integration stack?

This morning I had another blog topic planned but as usually I start by a cup of coffee and check the news, mails and tweets.

I thought Dan Kulp's blog post, How buggy is your SOAP stack was really good. It inspired me to check upon the situation with Apache Camel. I recommend reading his blog entry first before reading mine.
I will keep the investigations on Camel solely as people can do their own investigation on other integration projects.

As of this morning, november the 5th 2009 these are the numbers from Apache Camel JIRA:
  • 2139 tickets in total
  • 159 outstanding tickets (7% of total)
And looking at the 159 outstanding we have:
  • 147 improvements, new features, etc. (all except bugs)
  • 12 bugs
So in total we have reported at total of 12 bugs in Camel out of 159 outstanding issues. That is yet again around 7-8% of the outstanding tickets which is a bug.

Lets go over those 12 bugs and check what they cover

CAMEL-1769: It boils down to the Camel web console when it shows the routes rendered in Groovy it has trouble rendering complex expressions. This is not a bug which affects runtime as the groovy render is used to view the routes.

CAMEL-1788: Flatpack does not work with OSGi. Really not a Camel bug. The flatpack library is rather old and not OSGi ready. Loading its resource file on the classpath does not work well in OSGi land. The reported have reported this to the Flatpack issue tracker. We could in fact close this as its not a problem in Camel.

CAMEL-1974: Charles Moulliards excellent OSGi tutorial had some cosmetic typos and it could benefit to upgrade to latest Karaf standard. He is currently working on this.

CAMEL-1893: The camel-cxf code appears to under a rare situation to set the HTTP status code twice using different case. William Tam have been assigned this ticket.

CAMEL-1898: Hadrian is looking into the build process having a problem with generating the pdf manual during this process. It can however be generated manually thereafter.

CAMEL-1913: camel-jetty and multipart data. This is kinda an improvement.

CAMEL-1941: The tracer does not trace doTry .. doCatch .. doFinally correctly. This only affects diagnostics trace logging. Routing your messages using doTry ... et all works fine.

CAMEL-2001: Relates to the transactedInOut option on the camel-jms component. Its a bit confusing what its useable for. We are discussing this on the mailinglist whether to remove this option. And/or improve the wiki documentation about it.

CAMEL-2021: Guillaume Nodet is working on improving OSGi in Camel. Currently there is an issue with mixed versions running in Karaf.

CAMEL-2059: Relates to its not too easy to do custom error handling with transacted routes. I will look into this when I start writing the transaction chapter in my book. Which is in fact the next chapter I will write.

CAMEL-2129: camel-cxf has an misleading exception message when a call times out. Willem Jiang and Christian Schneider have already fixed this. Code is committed. So this ticket will be closed when Willem does this later today.

CAMEL-2137: Reported yesterday. Related to using Camel in ServiceMix 3.x with JBI.

Notice that the bugs listed here are all fairly new. CAMEL-1769 is created on june 28th 2009.
As of today there has been 698 bugs reported to Camel and of which only 12 is open, that is less than 2% open of all reported bugs.

We have rigorous many unit tests in Camel 2.x at this time we have > 4000 unit tests. That also helps keeps the bug count low.

Then we have a couple of discussions going on the mailinglist which may be a bug in Camel. Lets go over the ones I can remember working with recently.

This is an end user who consumes mail from a mail server which contains a mail that is using a weird charset which is not supported in the JDK itself. We are working with him to add a feature that tries to change the mail message to remove that charset to see if we can then have the SUN Mail API process the mail.

See CAMEL-2001 above

An end user is using camel-rss to read some feeds and it appears to skip some feeds. We wonder what the issue is whether its the ROME framework that does the actual RSS work.

This is an end user using Camel 2.0.0 who wants to do custom error handling and have precisely information which endpoint failed in case of an error. This feature is already implemented out of the box in 2.1. But the end user wants to use 2.0.0. Have advised him a solution that could work in 2.0 which by adding unit tests also proves. However on his end there is still an issue when its the FTP endpoint that fails. Unit tests in Camel itself shows that it works.

There may be a couple of more issues ongoing on the mailinglist. But the end users haven't reported back etc.

I think the state in Camel is excellent.

I end this blog by answering the blog title:

How buggy is your integration stack? Camel its not buggy.


Getting started with Apache Camel webinar part 2

This is a blot post on the 2nd part of a webinar series about getting started with Apache Camel.
If you missed the first part then I recommend checking this blog post first.

Scott Cranton, Progress, continues in this 2nd part of the webinar by looking at the different deployment options using Apache Camel.

He shows among others the following different deployment options:
  • Standalone Java Application
  • Web Application
  • Spring Application
  • ActiveMQ
  • OSGi in Apache Karaf / Apache ServiceMix
The webinar is listed at the webinar page at http://fusesource.com under webinars.
And its titled - Getting Started with Camel deployments.

During the presentation Scott talks about how Camel compares to other integration products. He mention a link on my blog, which is this one.

And may I add that I personally think its very important, when you compare/investigate products, that you spend equally time looking at the community surrounding the products. As as we say at Apache - Community over Code! I talk about this in more details at my interview at dzone a while back. Another source worth checking out is the links to articles at the Camel site.

Well go grab a big cup of coffee and get ready and watch Scott in action with the 2nd part.


Camel in Action - Straight to the top of the Manning bestselling chart

Manning recently published Camel in Action available from their MEAP program.

Now a week later they published the updated list of the bestsellers, and yes Camel in Action tops that list. That is fantastic response from the community that there is indeed a demand for such a type of book. For us the authors its a tremendous boost in morale and makes the hard and late hours writing more enjoyable.

This blog entry is also a kind a reminder for myself in the future that I had a book on the top of a chart.

I guess by next week the chart has another book on the top, and who knows if Camel in Action is even in the top 10.