I recently attended a local Java User's Group on Spring
Integration, on June 25, 2015.
Sam Alexander, the Enterprise Architect with Healthesystems
was the presenter. He was a very knowledgable and engaging speaker.
He was also very patient with the numerous questions that I asked. :-)
Although I have worked with multiple projects under the
Spring umbrella since 2005 (Spring Core, Spring Data, Spring Security, Spring
Web MVC), I had zero exposure to Spring Integration.
My notes from the presentation:
·
Spring Integration is in the same space as
Apache Camel. It is not an Enterprise Integration tool, it is really
meant to help you write better code.
·
It uses a Messaging style architecture.
Here are some diagrams I drew during Sam’s presentation, converted from my
handwritten notes to Visio.
·
Keys are immutable but values can change.
·
There are many ways to construct a Message.
Channels
There are 2 types of channels: Pollable, Subscribable
·
Pollable – Point-to-point, buffer/queue capacity
·
Subscribable – No buffer, multiple endpoint receivers
Adapters
Adapters integrate with other systems. They can talk
with Streams, File, JMS, MongoDB, even Twitter.
Filters
Can use SpEL (Spring Integration Language), XPath, XML
Schema for validation.
Transformers
Transformers handle serialization/deserialization somewhat
differently than JMS. There are numerous out-of-box Transformers.
Service Activators
Trigger a Service when a message arrives.
Gateway
Conclusion
Spring Integration is not an ESB (Enterprise Service Bus),
not a BPM (Business Process Management) product.
Spring Integration is about Data Flow and Data Management,
as opposed to ESBs which are for disparate applications.