Thursday, November 28, 2019

Apache Camel 3 is out!!

Apache Camel 3.0.0 is out today! Why is this a big deal? Well, it's the first major Camel version released in TEN years. Yes, really :-) Camel 2 was released on August 25, 2009!

Apache Camel 2.x remains a rock solid integration framework used all around the world and will certainly live on for many years to come. But, for some changes (and to stick with semantic versioning) we really needed a major version bump. You can imagine over 10 years a project can accumulate a lot of "would be nice to do IF we could break API..." type issues :-) But don't be scared, the team managed to keep the migration as painless as possible.

So what did change? Claus has a nice diagram of the major changes but there was definitely a focus on making camel-core smaller by breaking it up into modules (it was getting massive and size is becoming increasingly important in a cloud native world) and switching to a more performant reactive routing engine. All told, since last year when we branched for Camel 3 development, over 1000 issues were resolved. It was a busy year for all involved!

Next up are the releases of the other projects in the Camel ecosystem: Camel-K (run Camel routes directly on Kubernetes) and Camel-Quarkus (Camel components as Quarkus extensions). Stay tuned.

Thanks and congratulations to all involved in the release! Cheers!

Friday, January 19, 2018

Camel in Action, Second Edition is Complete!

Camel in Action Website
We did it again +Claus Ibsen :-) Camel in Action, 2nd edition is printing as I type this blog and will be in book stores in a few weeks. Time to celebrate!

Our theme this time around is more - more of everything to help you get started with Apache Camel and more for seasoned integration vets too. Well, this has kinda been the approach in Apache Camel since the last book as well. Let's look at some stats from the Camel versions used in each book edition:

Camel 2.5.0 Camel 2.20.1
>80 components >280 components
482,779 LOC 1307016 LOC
23 named contributors 497 named contributors

So yeah, Camel is a lot bigger this time round and so our book had to be too :-) It's amazing how much the project has grown TBH. The component count has more than tripled, LOC near that as well and the number of contributors has just blown up. Now, granted back in the early days of Camel we used SVN which didn't allow named contributors to be counted until they were actual Apache Camel committers themselves (GitHub PRs to the rescue!!). Still, I estimate the actual number of contributors has doubled at the very least.

It's not just components that have been added to Camel either. This time we needed to cover more topics like: microservices, RESTful web services, containers (think docker/kubernetes), clustering, reactive apps, security, and even IoT. Like last time we had a guest author contribute a chapter about a new emerging technology. Big thanks to Henryk Konsek for contributing the chapter on IoT. Neither myself or Claus has any experience in IoT so we probably wouldn't have covered it if we didn't get an expert on board :-)

A huge thanks to Claus for being such a pleasure to work with (albeit being a bit hard to keep up with ;-) ). Looking forward to next time round!

And finally, let me leave you with one of my favourite lines from our book:
"To the Apache Camel community - may this book be a helpful companion on your journeys with Camel"

Thursday, October 6, 2016

JBoss Fuse 6.3 is out!

JBoss Fuse 6.3 just went GA, get it while it's hot :-) With this release we didn't do anything too crazy and had a big focus on stability of the platform and bug fixes. In fact there are thousands of bug fixes over Fuse 6.2. We do still provide a few notable project upgrades however:

  • Apache Camel 2.17
  • Apache CXF 3.1
  • Jetty 9

As well as API updates:
  • JMS 2.0
    • You may think this is a crazy big upgrade for a minor version but it's not so bad :-) We only updated Fuse to use the latest JMS spec JAR, which is version 2.0. In the broker we stick to using the JMS v1 compatible APIs so nothing breaks. We needed to do this so Fuse could connect to JMS v2 only brokers like WebSphere MQ 8. Support for JMS v2 features will likely be in Fuse 7.
  • Servlet 3.1

So those are some bigger things to consider when upgrading your projects to Fuse 6.3. A full migration guide is available as well. A lot of the brand spanking new stuff in this release comes in via Camel. For instance, you may find some of the new Camel components useful:
  • camel-paho - For MQTT messaging using Eclipse Paho client
  • camel-pdf - For creating PDF documents
  • camel-slack - allows you to connect to an instance of Slack and delivers a message contained in the message body via a pre established Slack incoming webhook.
  • camel-jolt - for JSON to JSON transformation
  • camel-aws-ec2 - Component providing support to Amazon Web Services EC2
  • camel-undertow - To use Undertow as HTTP server or client.
  • camel-git - A generic Git component
  • camel-sjms - SJMS Batch is a specialized component for highly performant, transactional batch consumption from a JMS queue
  • camel-http-common - A common base component for reuse among all the various HTTP components we have.
  • camel-swagger-java - A pure Java based Swagger component.
  • camel-elsql - An extended SQL Component that uses ElSql for defining SQL queries
  • camel-jbpm - Sends messages through kie-remote-client API to jBPM.
  • camel-aws - AWS kinesis streams component added
  • camel-aws - DynamoDB streams component added
  • camel-braintree - for interacting with Braintree Payments.
  • camel-test-cdi - ease testing of Camel CDI applications
  • camel-etcd - Integrating Camel with Etcd key value store
  • camel-kubernetes - Integrates Camel with Kubernetes
  • camel-jcache - support JCache / JSR107 caching.
  • camel-nats - for interacting with Nats messaging platform
  • camel-servicenow - for interacting with ServiceNow
  • camel-spark - bridges Apache Spark computations with Camel endpoints
  • camel-sql - Now supports calling stored procedures using the new sql-stored component.

Another change this time is the Maven repo. Previously you may have used or to download Fuse artifacts. With this release, we have migrated to

You will notice too that the Fuse Eclipse tooling has undergone a visual makeover. Look at this new flow style for Camel routes:

Pretty sweet :-) Lars goes over other changes in more detail here.

Oh and you can download everything from here:

The site updates are still in progress (prolly another few hours to go) so make sure to click the 6.3.0 link and not the big red download button which still points to 6.2.0 :-)

Happy integrating!

Wednesday, October 5, 2016

Camel in Action v2 Update

Manning just published a new MEAP of Camel in Action this week so I figured I'd give a little update on our loooong journey with the 2nd edition :-)

The latest MEAP contains one new chapter, in addition to some fixes in other chapters. The basic outline for the "Developing Camel projects" chapter is:
  • Creating Camel projects with Maven
  • Creating Camel projects in the Eclipse IDE
  • Debugging with Camel
  • Creating custom components 
  • Creating custom interceptors
  • Creating custom data formats
  • Using the API component framework
A lot of this still applied from the first edition with the exception of debugging, custom data format creation, and using the super cool API component framework.

Claus is busy working on a more interesting chapter titled simply "Microservices". Yes, we are devoting a whole chapter to this buzzword :-) Really, it was unavoidable as Camel has been growing to have 1st class support for great frameworks like Spring Boot and Wildfly Swarm. Also microservices is just a little bit popular right now ;-)

So what's next? Well, we only have a handful of chapters left to write and hope to have it all handed in by the end of the year. So you can expect a print copy early next year after Manning polishes our work. 


Tuesday, June 23, 2015

JBoss Fuse 6.2 is out!

Hot off the presses today is JBoss Fuse 6.2. For those who don't know, Fuse is an open source ESB focused on making integration easier. It is made up of a bunch of popular opensource projects like Apache Camel, Apache CXF, Apache ActiveMQ, Apache Karaf, HawtIO, and Fabric8.

OK, so what's new since Fuse 6.1?

Camel 2.15

Camel (my fav project ;-) has had quite a stable API for years now. Most of the change comes from new components being added to connect to all sorts of new things. This release was no exception as there are almost 40 new components to choose from:

* camel-ahc-ws
* camel-atmosphere-websocket
* camel-beanstalk
* camel-box
* camel-cassandraql
* camel-chunk
* camel-docker
* camel-dozer
* camel-dropbox
* camel-github
* camel-google-calendar
* camel-google-drive
* camel-google-mail
* camel-gora
* camel-hdfs2
* camel-hipchat
* camel-jgroups
* camel-jira
* camel-kafka
* camel-kura
* camel-linkedin
* camel-metrics
* camel-netty4
* camel-netty4-http
* camel-olingo2
* camel-openshift
* camel-optaplanner
* camel-pgevent
* camel-rest
* camel-sap
* camel-schematron
* camel-scr
* camel-spark-rest
* camel-splunk
* camel-spring-boot
* camel-swagger
* camel-swf
* camel-test-spring40
* scheduler

Another notable addition is the REST DSL which allows you to easily define REST services within a Camel route.

Something really cool for folks who like to write Camel components is the API component framework. This takes a lot of the drudgery out of creating Camel components that mainly just call 3rd party APIs. The box, linkedin, google-*, and salesforce components were all created with this tool in a fraction of the time. Check it out!

Karaf 2.4

We still haven't bit the bullet on moving off the very stable Karaf 2.x line - it just works. Still, it doesn't mean there were no new features this time. Not a flashy change but a biggy:

Role based access control (RBAC) support is here!

Back in Fuse 6.1 days and before you had one user that could do everything. Obviously this doesn't fit for all deployments. Now we have the same set of roles as JBoss EAP: Monitor, Operator, Maintainer, Deployer, Auditor, Administrator, and SuperUser. You can selectively give access to Karaf shell commands and JMX MBeans.

Fabric8 Insight

Insight is a centralized logging and metrics collection facility for fabric8 clusters. We introduced it as a tech preview back in 6.1 but now it is fully GA. The backend is implemented with elastic search and there is a nice console accessible within hawtio. You'll have to try it out to fully appreciate the difference a centralized logging + console makes in tracking down problems in a big cluster.

Eclipse tooling updates

The tooling went through a major overhaul. Lars was on a mission to make your life easier as shown in the video below:

JBoss Fuse Tooling - Usability Improvements from JBoss Developer on Vimeo.

Another cool thing was sneaked into the Eclipse tooling as well: a data mapper! While this is still in the early days of development (and tech preview for 6.2), it is already looking quite nice. Here's a video of it in action!

Fuse 6.2 - Data Transformation Overview from JBoss Developer on Vimeo.

HawtIO 1.4

A lot of little things round out the feature set in this new version of HawtIO. Some highlights:
  - RBAC support
  - Camel metrics
  - JMS message searching and editing
  - Improved Camel tracer and debugger

Fuse integration package

A separate download from the Fuse distro, the integration pack provides glue for interacting with JBoss BRMS & BPMS. Yes, you can now officially use these products together in a supported way :-)

ActiveMQ 5.11

  - Hardened MQTT/AMQP/LevelDB support
  - new AMQP clients (JMS, C++, python)


Version 3 brings a lot of changes. Some highlights:

- Full support for JAX-RS 2.0
- New streaming WS-Security impl
- Netty HTTP server/client
- Websocket transport


Another big change for this release is that Switchyard is now part of JBoss Fuse. Up until now it was a separate product at JBoss. Now that Switchyard runs on Karaf you can load it in Fuse like any other feature.

What is Switchyard? It's a layer above Camel essentially, focused on building structured, maintainable services and applications using the concepts and best practices of SOA. Very useful if you have a set of well defined services with contracts and you need to route between them.

Switchyard in Fuse 6.2 is tech preview right now but we plan on full GA support in a not too distant release.

OK, that was a mouthful and I only skimmed the surface :-) To find out more go to:

Wednesday, May 8, 2013

Talk on ServiceMix at CamelOne 2013

It's getting close now to CamelOne 2013, the conference all about open source integration and messaging. I've been fortunate enough to have been a part of previous CamelOne events over the years and lemme tell you, it's been great. We try to keep fluff low, with lots of hands on technical talks.

Like other years, this year I'm planning on giving a talk on Apache ServiceMix titled "Enterprise Integration with Apache Camel and ServiceMix". For those who don't know, Apache ServiceMix is an open source container combining features from Apache ActiveMQ, Camel, CXF, and Karaf. ServiceMix and similar Karaf-based containers like JBoss Fuse are a great choice for folks wanting to do enterprise integration with Camel.

For the talk I'll be giving an update on the ServiceMix project, discussing best practices for developing and running Camel-based integration solutions in ServiceMix, and of course I'll use live demos throughout to demonstrate the concepts.

The conference runs for 2 days June 10-11, 2013 and registration details can be found at Hope to see you there! :-)

Wednesday, January 9, 2013

Fuse ESB Enterprise 7.1 Webinar

Last year just before the Christmas holidays we released Fuse ESB Enterprise 7.1. There have been quite a few changes since the 7.0.2 release we did; in fact, over 2000 tickets were resolved! I'm doing a webinar next week to cover some of the new user facing changes:

January 17 @ 10:00AM EST - Getting Started with Fuse ESB Enterprise 7.1

Some highlights of the changes include:

- New versions of Apache Camel, CXF, ActiveMQ, Aries and Karaf
- Java 7 support (just in time for the Java 6 EOL ;) )
- Security overhaul in Fabric

I'll have a live demonstration as well of course showing you how to code with Fuse IDE and deploy your app to the ESB.

Hope to see you there!