2017-10-12

Apache Camel 2.20 released - What's new

Apache Camel 2.20 has been released today and as usual I am tasked to write a blog about this great new release and what's the highlights.


The release has the following highlights.

1) Java 9 technical preview support

We have started our work to support Java 9 and this release is what we call technical preview. The source code builds and runs on Java 9 and we will continue to improve work for official support in the following release.

2) Improved startup time

We have found a few spots to optimise the startup time of Apache Camel so it starts 100 - 200 milli seconds faster.

3) Optimised core to reduce footprint

Many internal optimisations in the Camel routing engine, such as reducing thread contention when updating JMX statistics, reducing internal state objects to claim less memory, and reducing the number of allocated objects to reduce overhead on GC etc, and much more.

4) Improved Spring Boot support and preparing for Spring Boot 2

We have improved Camel running on Spring Boot in various ways.

We also worked to make Apache Camel more ready and compatible with the upcoming Spring Boot 2 and Spring Framework 5. Officially support for these is expected in Camel 2.21 release.

5) Improved Spring lifecycle

Starting and stoping the CamelContext when used with Spring framework (SpringCamelContext) was revised to ensure that the Camel context is started last - when all resources should be available, and stopped first - while all resources are still available.

6) JMS 2.0 support

The camel-jms component now supports JMS 2.0 APIs.

7) Faster Map implementation for message headers

If you include camel-headersmap component on the classpath, then Camel will auto detect it on startup and use a faster implementation of case-insenstive map (used by camel message headers).

8) Health-Check API

We have added experimental support for a new health-check API  (which we will continue to work on over the next couple of releases).  The health checks can be leveraged in in cloud environments to detect non healthy contexts.

9) Cluster API

Introduced an experimental Cluster SPI (which we will continue to work on over the next couple of releases) for high availability contexts, out of the box Camel supports: atomix, consul, file, kubernetes and zookeeper as underlying clustering technologies through the respective components.

10) RouteController API

Introduced an experimental Route Controller SPI (which we will continue to work on over the next couple of releases) aimed to provide more fine-grained control of routes, out of the box Camel provides the following implementations:

  • SupervisingRouteController which delays startup of the routes after the camel context is properly started and attempt to restart routes that have not been starter successfully.
  • ClusteredRouteController which leverages Cluster SPI to start routes only when the context is elected as leader.

11) More components

As usual there is a bunch of new components for example we have support for calling AWS lambda functions in the camel-aws component. There is also a new json validator component, and camel-master is used with the new Cluster API to do route leader election in a cluster. There is 13 new components and 3 new data formats. You can find more details in the Camel 2.20 release notes.

We will now start working on the next release 2.21 which is scheduled in start of 2018. We are trying to push for a bit quicker release cycle of these bigger Camel releases, so we can go from doing 2 to 3 releases per year. This allows people to quicker pickup new functionality and components etc.

Also we want to get a release out that officially support Java 9, Spring Boot 2 and all the usual great stuff we add to each release, and what the community contributes.



2017-10-09

Apache Camel route coverage tooling on the way

Last weekend I found some time to hack on new tooling for doing Apache Camel route coverage reports. The intention is to provide APIs and functionality out of the box from Apache Camel that other tooling vendors can leverage in their tooling. For example to show route coverage in IDEA or Eclipse tooling, or to generate SonarType reports, etc.

I got as far to build a prototype that is capable of generating a report which you run via the camel-maven-plugin. Having a prototype built in the came-maven-plugin is a very good idea as its neutral and basically just plain Java. And make its possible for other vendors to look at how its implemented in the camel-maven-plugin and be inspired how to use this functionality in their tooling.

I wanted to work on the hardest bit first which is being able to parse your Java routes and correlate to which EIPs was covered or not. We do have parts of such a parse based on the endpoint validation tooling which already exists in the camel-maven-plugin, which I have previously blogged about. The parser still needs a little bit more work however I do think I got it pretty far over just one weekend of work. I have not begun adding support for XML yet, but this should be much easier to do than Java, and I anticipate no problems there.

I recorded a video demonstrating the tooling in action.

I forgot to show in the video recording, that you can change the Camel routes, such as inserting empty lines, adding methods to the class etc, and when you re-run the camel-maven-plugin it will re-parse the route and output the line numbers correctly.

Anyway enjoy the video, its about 12 minutes long, so go grab a cup of coffee or tea first.



The plan is to include this tooling in the next Apache Camel 2.21 release which is scheduled in January 2018.

The JIRA ticket about the tooling is CAMEL-8657

Feedback is much welcome, and as always we love contributions at Apache Camel, so you are welcome to help out. The current work is upstream on this github branch. The code will be merged to master branch later when Apache Camel 2.20.0 is officially released.

When I get some more time in the future I would like to add support for route coverage in the Apache Camel IDEA plugin. Eclipse users may want to look at the JBoss Fuse tooling which has support for Apache Camel, which could potentially also add support for route coverage as well.

2017-09-24

Camel in Action 2nd edition goes into production phase

We are moving forward with the Camel in Action 2nd edition book. Manning just informed us that they have moved the book into production phase.

All chapters and appendixes except for Ch21 have now completed the copyedit and review cycle and have moved into the proofreading and indexing stages of production.

The proofing is done by a professional, whom has not seen the material before (new fresh set of eyes). Once the proofreading and indexing stages are complete, the final Word manuscript chapters will be sent on to the typesetter for layout, along with prepped graphics from the illustrator.

When we react this stage Jonathan and myself have chances to review PDFs of the formatted book pages, to ensure all the code examples are formatted correctly and so on.

At present time Jonathan and I are now working on the front matter, and writing our preface and what else. We are also reaching out to the foreword writers to ensure they hand in their material (Gregor Hohpe and James Strachan are yet to return their forewords).

And when Henryk Konsek has provided his updates, then chapter 21 can move along and also be part of the book.

So it starts to look really good and we can start to see the finish line. Its been a long run this time which has taken us almost double the time to complete the 2nd edition than what we did for the 1st edition. But that is possible expected, we are getting older, and the book is also almost twice the size.

To celebrate this, Manning has the book as deal of the day. This means you get 50% discount if you order the book on September 24th using the couple code: dotd092417au

The book can be ordered from Manning website at: https://www.manning.com/books/camel-in-action-second-edition

2017-09-21

Getting Started with Apache Camel and Java by Bennet Schulz

I just want to spread the word that Bennet Schulz yesterday posted a great short blog how to get started with Apache Camel with just Java. It shows you the basics of creating a new Camel project and with your first Camel route and how to run that with just plain Java.


The blog is very good and I recommend new users to Apache Camel to read it, its short and a 5 minute read.


2017-09-11

Upcoming Kubernetes and Apache Camel presentations in Aarhus Denmark

I have just been confirmed for attending and speaking at another Javagruppen event which takes place on October 11th from 16:30 to 19:00 in Aarhus Denmark.



The event is a "Gå Hjem Møde" which means it starts towards the end of the work day. We have two speakers. At first Helge Tesgaard will talk about getting started with highly available Kubernetes cluster. Then I follow up with my talk about agile integration with Apache Camel on Kubernetes.

After the event, then you are welcome to join for a coffee, beer or drink where some of us will head to the city to catch a few before heading home.

You can find more details about the event and how to register to attend.


2017-09-03

YouTube video of my - Containerised Integration with Apache Camel - talk from Melbourne in August 2017

My talk at the Melbourne Kubernetes User Group was recorded and posted online on YouTube. I want to say thanks to Ben Griffin and Des Drury for organising this event and recording the talk.


I had a great time on my APAC tour and presented at 6 full day workshops and 3 after hours meetups.

The link to the video: https://www.youtube.com/watch?v=Xkg_AGLV32A&feature=youtu.be

2017-08-03

The Camel guy going on APAC tour this August

Tomorrow I will be leaving for a tour in the APAC region where I am going to spread the words about agile integration using Apache Camel and Kubernetes and OpenShift.

I have plotted my destinations in the map below


The first stop is Tokyo where I will arrive on this Saturday August 5th (11 hour flight). I will then be jet-lagged and a bit tired so I will take it easy on Saturday.  On Sunday I plan to polish my presentations, and then visit some spots in Tokyo.

Monday and Tuesday are full day workshops. Red Hat has posted information about these workshops on the registration page for the Sydney and Melbourne events in case you are interested. I am not aware of any registration page for Tokyo which was quickly fully booked so we had to do a 2nd day as well.

On Wednesday I do have some time in the morning and afternoon to see a bit more of Tokyo before I will travel to Sydney (10h flight) where I arrive August 10th Thursday morning. In the evening I will attend and speak at the Sydney meetup. So if you are in this area you are very welcome to come by, as I love chatting with fellow developers and possible Camel users.  Then we have the full day workshop on Friday 11th.

On Saturday the 12th is my first leisure day where I have booked the bridgeclimb tour at 10am. If I am up early in the morning I will go see the opera house (as it was designed by a Danish architect) and the viewpoint of the harbour from the botanic garden. In the afternoon I will go to The Rocks for a cup of coffee and/or beer(s). I am in talks with a few Camel users from a Sydney office whom want to meet there for some drinks. You are welcome to join us there, you can reach out to me on my email or twitter etc.

On Sunday I travel to Melbourne. On Monday 14th I plan to run the F1 circuit track in Albert Park. If all goes well then I will run several rounds so I can do a half marathon distance. The following day we have a full day workshop in Melbourne. At this time of writing there is a potential meetup in Melbourne happening as well on the evening of Tuesday 15th. They are currently finding a venue.

On Wednesday I travel to Wellington where we have two full day workshops on Thursday and Friday.

Saturday 19th I have a full day in Wellington where I plan to walk the city and see various stuff. And see if I can recall some of the places I visited 15 years ago when I backpacked New Zealand and Australia.

I then fly to Auckland on Sunday 20th August and have a mini vacation there until Wednesday where I travel to USA (12 hour flight). If you are from around Auckland and want to have a cup of coffee or a drink somewhere then you are welcome to reach out to me via my email or twitter etc.

In USA I will visit an old friend whom I have not see in about 15 years, when he relocated to Seattle when he got a job at Microsoft. Among others he is taking me to my first live american football game where we are going to see Seattle Seahawks.

I will travel back to Denmark on Monday 28th and arrive back home in the afternoon on the 29th.
And then its back to Camel land and work from the 30th August.

My travel plan is as follows (where there is an empty space means traveling):

2017-08-04: 
2017-08-05: Tokyo
2017-08-06: Tokyo
2017-08-07: Tokyo
2017-08-08: Tokyo
2017-08-09: 
2017-08-10: Sydney
2017-08-11: Sydney
2017-08-12: Sydney
2017-08-13: 
2017-08-14: Melbourne
2017-08-15: Melbourne
2017-08-16: 
2017-08-17: Wellington
2017-08-18: Wellington
2017-08-19: Wellington
2017-08-20: 
2017-08-21: Auckland
2017-08-22: Auckland
2017-08-23: 
2017-08-24: Seattle
2017-08-25: Seattle
2017-08-26: Seattle
2017-08-27: Seattle
2017-08-28: 
2017-08-29: Denmark