I’m trying to wrap my brain around JMS and have been reading up on some very helpful sources and examples. I’m now trying to see the “big picture” here and put all the theory behind JMS into a practical context where real enterprise technologies are used.

So here we have four elements: (1) JMS – a Java API for MOM, (2) ActiveMQ – one of the many JMS implementations, (3) EIP – an intriguing and mysterious beast I am only beginning to understand, and finally, (4) Apache Camel, an open source implementation of that beast.
I am trying to now relate these components together to see JMS (and, in general, enterprise-class messaging) in action.
I guess the first thing I’m looking for is a simple and concise definition for what EIPs are. They seem to be a whole set of design patterns for how MOMs should behave, but since I’m already fuzzy on the concept of messaging to begin with, this is just a fuzzier definition being added on top of an already-fuzzy understanding of some pretty hardcore concepts.
Even if I don’t “get” what EIPs are, I do “get” that frameworks like Camel, Mule and ServiceMix implement them and allow server-side components (“endpoints”) to message each other efficiently.
Most important to this question is my understanding of how these four components relate to one another. I think understanding this will help me connect most of the dots; well, the important ones anyway.
So in the diagram above I labeled all 6 possible relationships and refer to them below:
- JMS:ActiveMQ – I understand ActiveMQ to be an implementation of JMS, much like Hibernate is an implementation of JPA. Is this correct?
- ActiveMQ:Camel – Camel has the ability to push messages to any JMS implementation, such as ActiveMQ. In this case ActiveMQ is a camel endpoint. Correct?
- EIP:Camel – Camel is an implementation of EIPs. Understanding what EIPs are in the first place is also important to my understanding of this entire setup.
- EIP:JMS – Although there may not be a direct connection between these two, it seems as though messaging is at the core of EIP, and JMS is Java’s foundation for messaging. Is this a fair assessment?
- I left relations between EIP:ActiveMQ and JMS:Camel in case there are any “big concepts” that I should be aware of between these systems.
Any help in putting a simple-to-understand definition to EIP and in understanding how all these components relate to each other is greatly appreciated. Thanks in advance!
Hope that helps.