This post I will be comparing
Apache Camel and
IBM Integration Bus. This blog series won't be focused on marketing buzz words but rather it will dive deep into a comparison between the two offerings. Today's blog post will provide a 30,000 foot view from a developers perspective.
Apache Camel
There are lots of descriptions on what Apache Camel is. Here
is my take on it...
Apache Camel is an open source Java API consisting of a set of ready-to-use
Enterprise Integration Patterns (EIP) that can be configured to execute complex routing and mediation logic to meet a wide variety of business integration needs. For example, splitting a file, or dynamically routing a message
based on its content, aggregation, etc. If an EIP is not available custom code can be developer as a
Processor. In my experience Camel has been shown to significantly reduce development costs in wide variety of areas such as systems integration.
Camel also provides a set of
components that can be configured to interact with 3rd party APIs, systems, and protocols. For example, Camel has a set of components for interfacing with
Files,
TCP/IP protocol, Amazon Web Services, Java Messaging Service (JMS),
JDBC, and more. There are over a hundred components available, and more components are being contributed every year from the community. In my opinion this is where Camel really outperforms all other integration offerings.
If your components consume or produce messages in various formats such as XML, binary, JSON, etc, Camel has really nice support for this using
type converters. It can automatically detect when conversion between types is required via a type converter registry. This allows developers to easily convert between various object types with very little effort.
Camel also has a powerful
Domain Specific Language (DSL) that can be developed in Java, XML, Scala, Groovy.
Although Camel is not an ESB it can be deployed onto and ESB such as
Apache ServiceMix. This allows you to deploy Camel routes across the enterprise or in the cloud. I will talk in more detail later on this.
Camel was invented by
James Strachan and has been around
since 2007 and the community is rapidly growing. It is currently maintained by Apache and one of their PMCs is
Claus Ibsen. Both are really great guys. I've had the pleasure sharing a beer with them at a previous Apache Camel conference.
IBM Integration Bus
I'm fairly new to IBM Integration Bus, so there might be cases where I write statements that could be inaccurate. If I do, please be courteous and let me know in the comments section below so I can make the appropriate corrections.
Here we go...
IBM Integration Bus (IB9) is a full fledged
Enterprise Service Bus. IB9 has been around for a long time, originally as MQ Series Integrator, and Message Broker and recently Integration Bus.
Wikipedia has more details on its origins and history.
IB9 provides an easy to use and very powerful
toolkit which is based on Eclipse that developers can draw message flows to describe their routing and mediation logic.
Message Flows contain inputs and outputs. There are a number of out of the box input nodes such as File, HTTP, Databases, FTP, TCP, and more. Message flows can be
visualized by teams to help provide context of complex routing and mediation logic which is something that programming code cannot always do.
Similar to Camel, IB9 offers patterns that can be configured to execute complex routing and mediation logic to meet a wide variety of business integration requirements. Custom code can be implementing in a
compute node using languages such as Enterprise SQL (ESQL), Java, PHP and .NET.
In addition to patterns, IB9 has a built in support for parsing text and binary data using
DFDL and also has a nice tool for
mapping data from one XML document to another.
Since IB9 is a full fledged ESB, it allows developers to deploy their routing and mediation logic onto integration nodes which host integration servers across the enterprise. This is an extremely powerful offering as it makes it easy for teams to hot deploy their integration solutions very easily without having to worry about painful class loading issues that driven me mad in IBM WebSphere Application Server. As mentioned, Camel is not an ESB it can be deployed on an ESB such as Apache ServiceMix and other containers. I will touch on this in later posts.
IB9 has seamless integration with IBM WebSphere MQ, which makes it a very attractive offering to people who already use MQ in their business. In fact, from my understanding, IB9 requires MQ Queue Managers as part of its deployment and coordination across integration nodes. So in retrospect its almost required that you need some kind of MQ running in order to use IB9. From my understanding this is not the case in IB10. Like IB9 Camel has seamless integration with Apache ActiveMQ. Once again this will be part of later discussions.
There are many more features I will discuss about IB9 later on as it is quite comprehensive.
More to come...
In future blog posts I will talk more about Camel and IB9 and how they stack up to each other, while diving deep and comparing their features. I'll try not to be bias but I will certainly offer my opinion on what I like and don't like about each offering and share my experiences on each.
In this series of blog posts I hope to touch on (in no particular order) a wide variety of topics including but not limited to:
- Installation & Setup
- My first experiences with Camel and IIB9
- Documentation
- Apache Camel Routes vs IBM Integration Bus Message Flows / Sub Flows
- Apache Camel Components vs IBM Integration Bus Input/Outputs
- Apache Camel EIPs vs IBM Integration Bus Patterns and Compute Nodes
- Apache Camel Tooling vs IBM Integration Bus Toolkit
- Apache Camel JVM offering vs IBM Integration Bus ESQL/Java offering
- Data Mapping
- REST / SOAP
- Micro Services
- Cloud
- Database
- Black box, white box, unit testing
- Deployment & Migration
- Source Control and Versioning
- Enterprise Operations & Management
- Training & Support
- Cost
- My personal likes/dislikes
Stay tuned...
Updated May 1, 2015
On a side note. I know Apache Camel and IBM Integration Bus are apples and oranges and many folks will be questioning why I am comparing the two. This is point is really to showcase the differences in how developers use and develop integration solutions on the two offerings. I will try to provide more comparisons of IB9 with Camel and its sister projects such as ServiceMix, ActiveMQ and other open source projects. This will give people a more ESB-to-ESB comparison.