Riding the Mule
... and now for something complete different
This week I went on a training course called Mule for Developers run by one Antoine Borg. Mule, if you're not familiar with it, is an open source ESB (enterprise service bus) and a bit more. It basically helps you route messages from one place to another, synchronously or asynchronously, with various stages of transformations and different transports.
I loved the course and I really like Mule. It's very flexible and powerful, yet is based around a few simple concepts: messages arrive on endpoints, optionally pass through some transformers, and are then passed to a service. The services are POJOs (Plain Old Java Objects), which just means that dispatch happens through reflection so you don't need to implement any particular API. Mule picks a method to invoke on your object that matches the payload of the message, and passes the return value of the method on to the outbound endpoint. A variety of routing and filtering options means that you can declaratively decide where messages go. Connectors exist for things like databases, files, JMS queues and web services. It's also possible to wrap an entire message flow across multiple systems in a single transaction, provided there's a transaction manager capable of orchestrating those systems.
The course, hosted by Skills Matter in London, did a good job of covering things like debugging techniques, unit testing and the important APIs. Although it described Mule 1.4, I found it relatively easy to replicate the examples in Mule 2.0, which was released only a week ago or so.
I hope to get a chance to use Mule soon. I could even see myself using it with non-Java technologies if I had to integrate with heterogeneous external systems. It can both host and invoke RESTful web services, for example. Writing custom transformers and services is pretty straightforward, too.
I have a few complaints, though. Although the community behind Mule seems pretty strong, it does smell a bit of "consultingware". To get access to the bulk of the documentation you need to sign up for a free account on mulesource.org. So far, I've got two automated emails asking if I'm interested in the "enterprise" version with support (I'm not). The mailing list is in GMANE, but seems to be read-only. And the documentation is pretty sparse. Luckily, there's a book planned for release in the summer, which I'm sure will improve things a lot.