views:

553

answers:

2

As a seasoned Spring user I was assuming that Spring Integration would make the most sense in a recent project requiring some (JMS) messaging capabilities (more details). After some days working with Spring Integration it still feels like a lot of configuration overhead given the amount of channels you have to configure to bring some request-response (listening on different JMS queues) communications in place.

Therefore I was looking for some background information how Camel is different from Spring Integration, but it seems like information out there are pretty spare, I found:

Question is: what experiences did you make on using the one stack over the other? In which scenarios would you recommend Camel were Spring Integration lacks support? Where do you see pros and cons of each? Any advise from real-world projects are highly appreciated.

+2  A: 

We choose Camel over Sprint-Integration because the fluent API is really nice. We actually use it in Spring projects and use spring to configure part of it. The programming API's are clear and there is a large set of sensible components.

We did a small scale shootout and basically at that time for our requirement Camel won. We use it mainly to transfer internal datafiles to/from external parties which usually requires format conversions sending it using ftp/sftp/... or attaching it to an email and sending it out.

We found the edit-compile-debug cycle reduced. Using groovy to experiment setting up routes are added bonusses.

Spring-Integration is a great product too, and I am quite sure it would satisfy our needs too.

Peter Tillemans
Thanks Peter for sharing your points, did you ever try to use the JMS capabilities of Camel, it seems like the respective components are also quite flexible and have the same richness as Spring Integration? By "small scale shootout" you refer to better performance numbers?
ngeek
Shootout : it was mainly developer performance. Our performance needs are not very high. Yes we use a lot of JMS as basis. Both ActiveMQ and JBossMQ are used for messaging.
Peter Tillemans
+2  A: 

I really depends on what you want to do. If you need to extend something to build your own messaging solution Spring Integration has the better programming model. If you need something that supports many protocols without custom code, Camel is ahead of Spring Integration.

Having a small scale shootout is a very good idea, just make sure you're trying to do the type of things that you'd typically be doing in the project.

--disclaimer: I'm a Spring Integration committer

iwein