Thursday, May 14, 2015

My first experiences with Camel and IIB9

This will be a quick post on my first experiences with Apache Camel and IIB9.

Apache Camel is really easy to install. In fact there is no installation required. Instead you simply need to download the camel-core.jar file and start using the API in your code (either manually or using Maven). Of course with Camel this means you need to know Java, and likely other APIs and Frameworks such as Spring, Maven, Eclipse, etc... So a good knowledge of the Java ecosystem is recommended if you are using Camel, but it is not required. I was able to get Camel up in running in less than 5 minutes with a Hello World example when I first used it 7+ years ago, and the process hasn't changed since then.

In comparison, IIB9 consists of many installations (IBM WebSphere MQ, MQ Explorer, IBM Integration Bus, FixPacs, IBM Integration Toolkit, Licenses, Integration Bus Explorer). This is expected because IIB9 is a full ESB. If you were deploying Camel onto an ESB (such as ServiceMix) then obviously you would need to download, install, and configure it as well. Installing ServiceMix is also as simple as downloading the tar file and unpacking it onto your computer. Similarly ActiveMQ if you needed message orientated middleware. Since IIB9 is a licensed product I spent many days downloading and installing the suite of applications. Although the IBM passport site provided everything I needed it was a lot of button clicks and searching for the correct download links. I would recommend if you are downloading this for your team that you host these files on a central Samba server so that other developers don't have to go through the same downloading headaches.

After installing IIB9 I had to create a Queue Manager and Integration Node and server. This is required in order to perform any Integration Bus development, since running the code requires deploying it onto an integration server. In some cases you might only need to install the IBM Integration Toolkit if your IBM Integration Bus and MQ is hosted on a remote server in your IT organization.

A few problems I had with IIB9 was the toolkit used an older version of Eclipse from 2012, which meant that support for many of the new plugins was a bit problematic to install. For example, it took a little while to find and get the EGit plugin working in the toolkit. A hiccup, but not a roadblock by any means.

Developing for the first time...

As a Java developer I personally found Camel to very easy to get started with. Since Camel is just Java code the process was no different than learning other APIs like I have in the past. The Camel website was very simple to navigate and finding tips and tricks on how to develop various routing and mediation logic was as simple as opening up Google, Stack overflow or the Apache Camel website. There are also lots of code examples on Github that can be downloaded.

When starting IIB9 it was fairly easy to get up and running. All I had to do was open the IIB9 toolkit and start drawing my message flows. My issue with IIB9 is that it seems to historically be very ESQL-centric. If you trace the roots of IIB9 back to its origins, I'm guessing that ESQL was used primarily as a platform independent functional language on top of MQSeries Integrator. From my experience when I searched for information on how to implement something in IIB9 it usually provides the coding as ESQL. Unless you are a seasoned ESQL developer you will often find yourself Googling information on how to perform various operations, or trying to figure out the ESQL syntax. You can develop code in Java however it seems most of the online examples and seasoned IIB9 developers are doing it in ESQL. Compare this with Camel which finding a coding example in Java easier since it has a much larger user base. While I do have a good background in other SQL related products (PostgreSQL, MySQL, etc..) I found searching for ESQL stuff to be very frustrating. Search results on ESQL often turned up results on SQL-Server, Oracle, which had no relation to IIB9. Also, there seems to be no books on Amazon specifically related to ESQL on IIB9. So unfortunately I always had to go to the IBM Knowledge base which often times was difficult to dig through finding the example I was looking for. The knowledge center is good but relying on a single resource for help is not always great. Needless to say the MQSeries help forums are very useful and the community is fantastic. Also if you decide to code in ESQL your custom logic will be locked in to IBM and it won't be re-usable if you ever decide to migrate to another integration product. If you code in Java I'm guessing some of that code could be ported over in the future if necessary. However this might not be a concern for some businesses.

One thing I should mention is that from my experience I always find most open source products (especially 100% Java products) to be much more simple to get going than the big players such as IBM, Microsoft, Oracle, etc... But the cons of a simple installation often means you need to spend a lot of time configuring the product to your liking. For example, IIB9 has a lot of security pre-built into it, which can be good for server installs but often a pain in the ass for developers because it often can be too restrictive. A good example of this is when I used Camel with ActiveMQ and subscribed to a JMS Queue, the queue would automatically be created. In comparison in WebSphere MQ out of the box requires you to manually create the queue and configure the authorization and authentication in may cases since security is built-in. So, in conclusion, from my experience, out-of-the-box Camel and the Apache products in general seem to be more developer-centric/friendly than IBM and other big vendors. But this is expected and I wouldn't see this as necessarily a bad thing, just means I need to learn more on these products to become more comfortable with them.

I hope in the next post I can discuss how to develop routing and mediation logic in both Apache Camel and IIB9.

Update - June 18, 2015

I found this post to be very useful on getting started with IIB

https://developer.ibm.com/integration/blog/2015/05/06/ibm-integration-bus-get-started-in-ten-minutes/

No comments: