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:
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
- 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.
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.
2 comments:
True, IB9 still requires IBM MQ to be installed since it uses it internally for deployment and for some of the nodes.
In IB10 the requirement is dropped but some of the nodes (aggregation, timer) will still require MQ. Hopefully this is changed in a future version..
As a long time Intergration Bus (formerly message broker) user and a new Apache Camel user I really look forward to these series.
Thanks Gustav. I look forward to any feedback. I'm still learning Integration Bus and other IBM products so there will be areas where I might be in-accurate and will need a kick in the ass.
Post a Comment