Friday, February 29, 2008

More on spring integration


Like I mentioned in my previous post, I in fact had a shot at spring integration. And I asked my buddy Lahiru to have a work on it. And unsurprisingly he found no time to get familiar with the model.

This is a one major reason why I favor spring integration even though it is far away from being matured.
I don't find any other proper open source EIP solutions alive. Two possible solutions which come across are ActiveMQ and Apache Camel. The former is nothing more than a messaging solution(Wonder how many use its EIP ) and later is something we can make use of (Its again from activemq!). But I don't need a reseller when you are selling directly to me !



So why I prefer spring integration over these solutions ? Here are my points.
1) The AOP support.
Just imagine the beauty of designing the AOP based integration solution. It will be a treat to do and follow.
2) What most of us are doing with Mule (or other opensource ESB) now ? We just use spring every where in it. 9 out of 10 times this is spring on Mule. So being persisted with one framework (which is of course spring! ) will be much more easier for the developers.
3) Spring documentation.
Many times I have mentioned this in my blog. Spring documentation and examples give us no time to understand the solutions easily. I haven't see any other documentations which can get closer to this. Spring addresses its documentation is a user's point of view where most of other open source documentations are done on the developer's(I mean the developers involved in the particular open source product) point of view.

4) The IOC model.
The same I mention again. It will be easy to plug in the third party adapters with less fuss. I think it is pretty obvious advantage.

So what I am looking for in the near future on this.

1) WS support
Desperately need this. I think they will have it before the 1.0 release. SOA is becoming a marketing term these days and it is vital for the designers to have the WS support. So it is so important that spring integration must be released with WS support. But even now it will not be difficult to have a such adapter anyway.

2) Facility to make hot configuration.
When it comes to production environment, application providers will see easy way of plugging their applications. So a kind of JMX based admin console would be handy. Then again exposing a bean MBean is very easy in spring and you can still self cook.

Now few hiccups on using Mule which is a tested ESB solution and you can still use it for EIP. To be honest, I had a bit of confused wrong view on ESB against EIP and tried Mule for the purpose of EIP. Surely you can do. But its like using hammer to smash a mosquito. Mule is intended to be used for ESB. Though it pretty tough call to use it for typical SDP solutions, you can still use it. But I differ for using it solely for EIP. Because you will put unnecessary efforts to make it working (Actually I did) and its documentation will never be helping that much.

But I am pretty confident that a good EIP framework can turn out be a good ESB solution. When you do that, you will have your own flavor and you will have nothing more than what you need. Spring integration has its potential. I wish they have a spring integration (EIP framework) and separate ESB framework so people will be able to make use of them according to their needs.

So the morale of the post having two points.
1) Like Americal Idol judge Rendy says "Spring integration, Check it out baby, check it out ! "
2) If you have any butterflies regarding to EIP, ESB and SOA, work on it. Read hell lot of documents and get the clear picture of them. I still am working on !!!

1 comment:

James Strachan said...

While Spring Integration is cool; I just wanted to correct a few points WRT Camel.

Camel is part of the ActiveMQ project but you can use it without ActiveMQ - its just a spring based EIP library.

Based on your points...

1) You can still use AOP with Camel
2) Camel is based on Spring too; so you can still use anything you like in Spring
3) Sure, Spring documentation is traditionally great, you got me there
4) Its still Spring for IOC

Based on your requirements

1) if you want WS then you need full JAX-WS support - with Camel you have via Apache CXF
2) you get this for free using the ServiceMix MicroKernel - change a spring.xml or Java class in a route and Camel auto-reloads all the EIP routes

If you really want EIP - take a look at Camel; its got a huge list of implemented Enterprise Integration Patterns as well as a huge number of transports, plugins and protocols plus pretty soon it'll work great with Spring Integration too...