ServiceMix vs Mule ESB
As our applications have grown, we have created one off interfaces to external systems. Each has been a carefully crafted hack. We’ve known all along that this is not sustainable in the long term; but like all shops we didn’t have the business case to spend time creating something more elegant. That changed today, the collective weight of all the interfaces finally caught up with us. So we are going to pay off our technical debt and implement an ESB.
We start looking by looking at a variety of them. Most cater to some form of web services, so they are out (most of our interfaces are not web services per se). I ran across ServiceMix from Apache and it looked promising. It is very easy to download and follow the examples and tutorial to get up and running. I really like the hotdeploy functionality. There is a lot of maven support to create projects and different configuration files for what they call a service unit.
However, once I got beyond the tutorial example, I hit a brick wall. Or more importantly ServiceMix put a smack down on me that I haven’t gotten up from yet. For my first test I wanted to create a service that took an http post file, did a transformation on it and saved the result to the filesystem. Easy enough. Turns out this is really tough to figure out. I’m sure if I was more familiar with ServiceMix this could be created in a few minutes. But after a day and a half of reading source code and googling I couldn’t figure it out. The docs on the website leave a lot to be desired – at least for new users.
So I turned my attention to other options. Next up was Mule ESB. I’m not done; however I can tell this is what we will implement. The docs are good. I was able to get the sample up and running (in Eclipse) in about 10 minutes. After taking my time and reading a lot and working through the tutorials/examples, I was able to create my first service that executed my first use case in about 4 hours. I could have done it quicker; but I wanted to take my time and understand more than just the simple items.
Mule also provides the Mule IDE which helps create new services and the icing on the cake is we can run Mule ESB services in Eclipse — which means debugging just became a whole lot easier.
Next up will be finishing (error handling, etc) my first service and then configuring Mule to run as a standalone application (not via Eclipse).