SlideShare a Scribd company logo
Spring Integration
as Integration Patterns
provider
Blynov Viacheslav
Dnepropetrovsk
24 June 2014
224 June 2014
3
Spring Integration Goals
 Provide a simple model for implementing complex enterprise integration
solutions.
 Facilitate asynchronous, message-driven behavior within a Spring-based
application.
 Promote intuitive, incremental adoption for existing Spring users.
Spring Integration Introduction
24 June 2014
4
Spring Integration Features
 Implementation of most of the Enterprise Integration Patterns
– Endpoint
– Channel
– Aggregator
– Filter
– …
 Integration with External Systems
– REST/HTTP
– FTP
– Twitter
– JMS
– …
 The framework has extensive JMX support
– exposing framework components as MBeans
– adapters to obtain attributes from MBeans, invoke operations, send/receive notifications
Spring Integration Introduction
24 June 2014
5
Spring Integration Endpoints
 AMQP
 Spring Application Events
 File System
 FTP
 Gemfire
 HTTP/REST
 JDBC
 JMX
 JPA
 Mail
 MongoDB
 Redis
 RMI
 TCP
 Twitter
 UDP
 XMPP
Spring Integration Introduction
24 June 2014
624 June 2014
Main Components
7
Main Components
 Message
 Message Channel
 Message Endpoint
– Transformer
– Filter
– Router
– Splitter
– Aggregator
– Service Activator
– Channel Adapter
– Gateway
Spring Integration Main Components
24 June 2014
8
Spring Integration Main Components
24 June 2014
Message
 Message is a generic wrapper
for any Java object combined
with metadata used by the
framework while handling that
object
9
Spring Integration Main Components
24 June 2014
Message Channel
 Point-To-Point Channel
 Publish/Subscribe Channel
 Pollable Channels
 Message-Driven Channels
10
Spring Integration Main Components
24 June 2014
Message Endpoint
Encapsulates communication-
specific details:
 converts/extracts business data
to/from message
 sends/receives messages
to/from message channel
11
Spring Integration Main Components
24 June 2014
Transformer
 Message Transformer is
responsible for converting a
Message's content or structure
and returning the modified
Message
12
Spring Integration Main Components
24 June 2014
Filter
 Message Filter determines
whether a Message should be
passed to an output channel at
all
13
Spring Integration Main Components
24 June 2014
Splitter
 Splitter is another type of
Message Endpoint whose
responsibility is to accept a
Message from its input channel,
split that Message into multiple
Messages, and then send each
of those to its output channel.
14
Spring Integration Main Components
24 June 2014
Service Activator
Service Activator is a generic endpoint for connecting a service
instance to the messaging system.
The input Message Channel must be configured, and if the service
method to be invoked is capable of returning a value, an output
Message Channel may also be provided.
15
Spring Integration Main Components
24 June 2014
Gateway
The Gateway encapsulates messaging-specific code (e.g.,
the code required to send or receive a message) and separates it
from the rest of the application code. The Messaging
Gateway exposes a business function to the rest of the application
so that instead of requiring the application to set properties like
Message.
1624 June 2014
Example
17
Task
 We receive JMS messages with some CompoundObject in JSON format
 CompoundObject is-a list of some Objects
 We need to extract all Objects from CompoundObject and save them to database
(possibly performing some other business logic)
 Those Objects which are considered “good” (verified against some rule) should
be sent via JMS to another queue in JSON format
Spring Integration Example
24 June 2014
18
Spring Integration Example
24 June 2014
 We need to add the following dependencies in pom.xml
19
Spring Integration Example
24 June 2014
 Specify JMS connection factory
20
Spring Integration Example
24 June 2014
 Configure Spring Integration context
21
Spring Integration Example
24 June 2014
 Configure Spring Integration context
CompObjectDTO parseCompoundObject(String
payload)
22
Spring Integration Example
24 June 2014
 Configure Spring Integration context
CompObjectDTO parseCompoundObject(String
payload)
List<ObjectDTO> splitCompound(CompObjectDTO dto)
23
Spring Integration Example
24 June 2014
 Configure Spring Integration context
CompObjectDTO parseCompoundObject(String
payload)
List<ObjectDTO> splitCompound(CompObjectDTO dto)
Object convertToEntity(ObjectDTO dto)
24
Spring Integration Example
24 June 2014
 Configure Spring Integration context
CompObjectDTO parseCompoundObject(String
payload)
List<ObjectDTO> splitCompound(CompObjectDTO dto)
Object convertToEntity(ObjectDTO dto)
Object saveEntity(Object obj)
25
Spring Integration Example
24 June 2014
 Configure Spring Integration context
CompObjectDTO parseCompoundObject(String
payload)
List<ObjectDTO> splitCompound(CompObjectDTO dto)
Object convertToEntity(ObjectDTO dto)
Object saveEntity(Object obj)
boolean isGoodObject(Object obj)
26
Spring Integration Example
24 June 2014
 Configure Spring Integration context
CompObjectDTO parseCompoundObject(String
payload)
List<ObjectDTO> splitCompound(CompObjectDTO dto)
Object convertToEntity(ObjectDTO dto)
Object saveEntity(Object obj)
boolean isGoodObject(Object obj)
ObjectDTO convertToDTO(Object obj)
27
Spring Integration Example
24 June 2014
 Configure Spring Integration context
CompObjectDTO parseCompoundObject(String
payload)
List<ObjectDTO> splitCompound(CompObjectDTO dto)
Object convertToEntity(ObjectDTO dto)
Object saveEntity(Object obj)
boolean isGoodObject(Object obj)
ObjectDTO convertToDTO(Object obj)
String serializeObjectDTO(ObjectDTO obj)
28
Spring Integration Example
24 June 2014
Receiving messages via HTTP REST
29
Another option: JMS backed message channels
Channel adapter are intended for applications that are integrating with
other external systems. There are cases where both the producer and consumer
for a given JMS Destination are intended to be part of the same application,
running within the same process.
<int-jms:channel id="jmsChannel" queue="exampleQueue"/>
<int-jms:publish-subscribe-channel id="jmsChannel" topic="exampleTopic"/>
 Support of transactions (“transaction-manager” atrribute)
 Support for connection (session, consumer) cache
 Concurrency (number of concurrent sessions/consumers to start for each listener)
Spring Integration Example
24 June 2014
30
Task 2
 An exteranl system feeds us with stream of JSON objects putting them to JMS
queue
 We need to make some calculations (business logic) using these objects in the
order as they come
 Depending on calculationd results we could change the persistent state of our
domain objects
 Incoming objects should be saved to our DB
 Finally, the results of calculation should be sent in JSON format to another JMS
queue
Spring Integration Example
24 June 2014
31
Basic Flow
Spring Integration Example
24 June 2014
Receive objects
Validation
convertion to entity
Calculation
Analyze and save
results
Send to outbound
JMS
Save entities to DB
32
Router
Spring Integration Example
24 June 2014
• Payload Type Router
• Header Value Router
• Recipient List Router
• XPath Router (Part of the XML Module)
• Error Message Exception Type Router
• (Generic) Router
33
Problem
Spring Integration Example
24 June 2014
The incoming messages could arrive very
frequently
34
Aggregator
Spring Integration Example
24 June 2014
• Message Store
• Correlation Strategy (delaults to grouping be MessageHeader.CORRELATION_ID)
• Release Strategy
• Expiration policy
35
Back to task 2: receive and aggregate
Spring Integration Example
24 June 2014
36
Back to task 2: receive and aggregate
Spring Integration Example
24 June 2014
boolean canReleaseMessages(List<IncObject>)
List<IncObject> aggregate(List<IncObject>)
Object getCorrelationKey(IncObject)
37
Back to task 2: routing
Spring Integration Example
24 June 2014
38
Back to task 2: via publish-subscribe channel
Spring Integration Example
24 June 2014
39
Task summary
 Built on the top of other Spring modules (e. g. Spring JMS)
 Every element of the chain – just a simple POJO
 High cohesion
 Easy to cover with unit-tests
 “Convention over configuration” – bean with name “connectionFactory” will be
found automatically
 Change the whole business flow only by configuration
Spring Integration Example
24 June 2014
4024 June 2014
Spring
Integration VS
Apache Camel
41
 Both projects aim to fill similar need: light-weight integration library with full
implementations of EIP
 Apache Camel introduces DSL (Java, Scala, Groovy). Spring Integration - only
XML
 Apache Camel supports longer list of technologies
 Apache Camel offers rich support for both integration and unit-testing. Spring
Integration supports just generic Spring Test
 Apache Camel Community is larger, documentation is better
Spring Integration Spring Integration VS Apache Camel
24 June 2014
42
Apache Camel Java DSL Example
final JaxbDataFormat jaxbDataFormat = new JaxbDataFormat();
jaxbDataFormat.setContextPath(“test.ns.oxm");
jaxbDataFormat.setPartClass(“test.ns.oxm.ABSPartnerChangesEventType");
from("activemq:incoming.partner")
.log("log:test.log")
.choice() .when(header("EVENTTYPE").isEqualTo(“TESTVALUE")).to("direct:createPartner“)
.when(header("EVENTTYPE").isEqualTo(“TESTVALUE2")).to("direct:updatePartner");
from("direct:createPartner")
.errorHandler(noErrorHandler())
.unmarshal(jaxbDataFormat)
.beanRef(“partnerChangeHandler", "createPartner");
from("direct:updatePartner")
.errorHandler(noErrorHandler())
.unmarshal(jaxbDataFormat)
.beanRef(“partnerChangeHandler", "updatePartner");
Spring Integration Spring Integration VS Apache Camel
24 June 2014
43
Recent changes
 Spring EL support (3.0.2)
 HTTP request mapping (based on Spring MVC infrastructure) (3.0.2)
 Enhanced support for MongoDB, Redis and JPA (3.0.2)
 @EnableIntegration, @IntegrationComponentScan (4.0.2)
 Requires Spring 4.0 (4.0.2)
Spring Integration Example
24 June 2014
4424 June 2014
Questions?

More Related Content

PPTX
Integration Patterns With Spring integration
PDF
Spring Madrid User Group - Spring Integration in Action
PDF
Spring Integration and EIP Introduction
PPTX
Spring integration
KEY
S2GX 2012 - Introduction to Spring Integration and Spring Batch
PPTX
Spring integration
PDF
Russell 2012 introduction to spring integration and spring batch
PPTX
Sprintintegration ajip
Integration Patterns With Spring integration
Spring Madrid User Group - Spring Integration in Action
Spring Integration and EIP Introduction
Spring integration
S2GX 2012 - Introduction to Spring Integration and Spring Batch
Spring integration
Russell 2012 introduction to spring integration and spring batch
Sprintintegration ajip

Similar to «Spring Integration as Integration Patterns Provider» (20)

PDF
quickguide-einnovator-11-spring-integration
PPTX
Вячеслав Блинов: "Spring Integration as an Integration Patterns Provider"
PDF
Spring Integration: from XML to Java DSL
PPTX
JDC2008 - Enterprise Integration and Service Oriented Design
PDF
(Oleg zhurakousky)spring integration-scala-intro
PDF
Spring Integration Essentials Chandan Pandey
PPT
Spring integration
PPTX
Srping integration
PDF
Enterprise Integration Patterns with Spring integration!
PDF
ZCouncil-SLC-March-2020-Introduction_to_IBM_App_Connect_Enterprise.pdf
PPT
Spring Integration
PDF
Spring integration
PPTX
Messaging with Spring Integration
PPTX
Introduction to Kafka with Spring Integration
PDF
Styles of Applicaton Integration Using Spring
PDF
Spring integration
PDF
Developing real-time data pipelines with Spring and Kafka
ODP
Mihalache catalin eip with spring integration
KEY
Spring integration motivation and history
PPT
Simplify your integrations with Apache Camel
quickguide-einnovator-11-spring-integration
Вячеслав Блинов: "Spring Integration as an Integration Patterns Provider"
Spring Integration: from XML to Java DSL
JDC2008 - Enterprise Integration and Service Oriented Design
(Oleg zhurakousky)spring integration-scala-intro
Spring Integration Essentials Chandan Pandey
Spring integration
Srping integration
Enterprise Integration Patterns with Spring integration!
ZCouncil-SLC-March-2020-Introduction_to_IBM_App_Connect_Enterprise.pdf
Spring Integration
Spring integration
Messaging with Spring Integration
Introduction to Kafka with Spring Integration
Styles of Applicaton Integration Using Spring
Spring integration
Developing real-time data pipelines with Spring and Kafka
Mihalache catalin eip with spring integration
Spring integration motivation and history
Simplify your integrations with Apache Camel
Ad

More from IT Weekend (20)

PPTX
Quality attributes testing. From Architecture to test acceptance
PPTX
Mobile development for JavaScript developer
PPTX
Building an Innovation & Strategy Process
PDF
IT Professionals – The Right Time/The Right Place
PDF
Building a Data Driven Organization
PPT
7 Tools for the Product Owner
PPTX
Hacking your Doorbell
PPTX
An era of possibilities, a window in time
PPTX
Web services automation from sketch
PPTX
Why Ruby?
PDF
REST that won't make you cry
PPTX
Как договариваться с начальником и заказчиком: выбираем нужный протокол общения
PPTX
Обзор программы SAP HANA Startup Focus
PPTX
World of Agile: Kanban
PPTX
Risk Management
PPTX
Cutting edge of Machine Learning
PPTX
Parallel Programming In Modern World .NET Technics
PPTX
Parallel programming in modern world .net technics shared
PPTX
Maximize Effectiveness of Human Capital
PDF
“Using C#/.NET – “Controversial Topics & Common Mistakes”
Quality attributes testing. From Architecture to test acceptance
Mobile development for JavaScript developer
Building an Innovation & Strategy Process
IT Professionals – The Right Time/The Right Place
Building a Data Driven Organization
7 Tools for the Product Owner
Hacking your Doorbell
An era of possibilities, a window in time
Web services automation from sketch
Why Ruby?
REST that won't make you cry
Как договариваться с начальником и заказчиком: выбираем нужный протокол общения
Обзор программы SAP HANA Startup Focus
World of Agile: Kanban
Risk Management
Cutting edge of Machine Learning
Parallel Programming In Modern World .NET Technics
Parallel programming in modern world .net technics shared
Maximize Effectiveness of Human Capital
“Using C#/.NET – “Controversial Topics & Common Mistakes”
Ad

Recently uploaded (20)

PPTX
Big Data Technologies - Introduction.pptx
PDF
Empathic Computing: Creating Shared Understanding
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Cloud computing and distributed systems.
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
Big Data Technologies - Introduction.pptx
Empathic Computing: Creating Shared Understanding
MYSQL Presentation for SQL database connectivity
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Cloud computing and distributed systems.
Reach Out and Touch Someone: Haptics and Empathic Computing
Encapsulation_ Review paper, used for researhc scholars
Spectral efficient network and resource selection model in 5G networks
Dropbox Q2 2025 Financial Results & Investor Presentation
Chapter 3 Spatial Domain Image Processing.pdf
Programs and apps: productivity, graphics, security and other tools
NewMind AI Weekly Chronicles - August'25 Week I
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Review of recent advances in non-invasive hemoglobin estimation
Digital-Transformation-Roadmap-for-Companies.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Network Security Unit 5.pdf for BCA BBA.
Advanced methodologies resolving dimensionality complications for autism neur...

«Spring Integration as Integration Patterns Provider»

  • 1. Spring Integration as Integration Patterns provider Blynov Viacheslav Dnepropetrovsk 24 June 2014
  • 3. 3 Spring Integration Goals  Provide a simple model for implementing complex enterprise integration solutions.  Facilitate asynchronous, message-driven behavior within a Spring-based application.  Promote intuitive, incremental adoption for existing Spring users. Spring Integration Introduction 24 June 2014
  • 4. 4 Spring Integration Features  Implementation of most of the Enterprise Integration Patterns – Endpoint – Channel – Aggregator – Filter – …  Integration with External Systems – REST/HTTP – FTP – Twitter – JMS – …  The framework has extensive JMX support – exposing framework components as MBeans – adapters to obtain attributes from MBeans, invoke operations, send/receive notifications Spring Integration Introduction 24 June 2014
  • 5. 5 Spring Integration Endpoints  AMQP  Spring Application Events  File System  FTP  Gemfire  HTTP/REST  JDBC  JMX  JPA  Mail  MongoDB  Redis  RMI  TCP  Twitter  UDP  XMPP Spring Integration Introduction 24 June 2014
  • 6. 624 June 2014 Main Components
  • 7. 7 Main Components  Message  Message Channel  Message Endpoint – Transformer – Filter – Router – Splitter – Aggregator – Service Activator – Channel Adapter – Gateway Spring Integration Main Components 24 June 2014
  • 8. 8 Spring Integration Main Components 24 June 2014 Message  Message is a generic wrapper for any Java object combined with metadata used by the framework while handling that object
  • 9. 9 Spring Integration Main Components 24 June 2014 Message Channel  Point-To-Point Channel  Publish/Subscribe Channel  Pollable Channels  Message-Driven Channels
  • 10. 10 Spring Integration Main Components 24 June 2014 Message Endpoint Encapsulates communication- specific details:  converts/extracts business data to/from message  sends/receives messages to/from message channel
  • 11. 11 Spring Integration Main Components 24 June 2014 Transformer  Message Transformer is responsible for converting a Message's content or structure and returning the modified Message
  • 12. 12 Spring Integration Main Components 24 June 2014 Filter  Message Filter determines whether a Message should be passed to an output channel at all
  • 13. 13 Spring Integration Main Components 24 June 2014 Splitter  Splitter is another type of Message Endpoint whose responsibility is to accept a Message from its input channel, split that Message into multiple Messages, and then send each of those to its output channel.
  • 14. 14 Spring Integration Main Components 24 June 2014 Service Activator Service Activator is a generic endpoint for connecting a service instance to the messaging system. The input Message Channel must be configured, and if the service method to be invoked is capable of returning a value, an output Message Channel may also be provided.
  • 15. 15 Spring Integration Main Components 24 June 2014 Gateway The Gateway encapsulates messaging-specific code (e.g., the code required to send or receive a message) and separates it from the rest of the application code. The Messaging Gateway exposes a business function to the rest of the application so that instead of requiring the application to set properties like Message.
  • 17. 17 Task  We receive JMS messages with some CompoundObject in JSON format  CompoundObject is-a list of some Objects  We need to extract all Objects from CompoundObject and save them to database (possibly performing some other business logic)  Those Objects which are considered “good” (verified against some rule) should be sent via JMS to another queue in JSON format Spring Integration Example 24 June 2014
  • 18. 18 Spring Integration Example 24 June 2014  We need to add the following dependencies in pom.xml
  • 19. 19 Spring Integration Example 24 June 2014  Specify JMS connection factory
  • 20. 20 Spring Integration Example 24 June 2014  Configure Spring Integration context
  • 21. 21 Spring Integration Example 24 June 2014  Configure Spring Integration context CompObjectDTO parseCompoundObject(String payload)
  • 22. 22 Spring Integration Example 24 June 2014  Configure Spring Integration context CompObjectDTO parseCompoundObject(String payload) List<ObjectDTO> splitCompound(CompObjectDTO dto)
  • 23. 23 Spring Integration Example 24 June 2014  Configure Spring Integration context CompObjectDTO parseCompoundObject(String payload) List<ObjectDTO> splitCompound(CompObjectDTO dto) Object convertToEntity(ObjectDTO dto)
  • 24. 24 Spring Integration Example 24 June 2014  Configure Spring Integration context CompObjectDTO parseCompoundObject(String payload) List<ObjectDTO> splitCompound(CompObjectDTO dto) Object convertToEntity(ObjectDTO dto) Object saveEntity(Object obj)
  • 25. 25 Spring Integration Example 24 June 2014  Configure Spring Integration context CompObjectDTO parseCompoundObject(String payload) List<ObjectDTO> splitCompound(CompObjectDTO dto) Object convertToEntity(ObjectDTO dto) Object saveEntity(Object obj) boolean isGoodObject(Object obj)
  • 26. 26 Spring Integration Example 24 June 2014  Configure Spring Integration context CompObjectDTO parseCompoundObject(String payload) List<ObjectDTO> splitCompound(CompObjectDTO dto) Object convertToEntity(ObjectDTO dto) Object saveEntity(Object obj) boolean isGoodObject(Object obj) ObjectDTO convertToDTO(Object obj)
  • 27. 27 Spring Integration Example 24 June 2014  Configure Spring Integration context CompObjectDTO parseCompoundObject(String payload) List<ObjectDTO> splitCompound(CompObjectDTO dto) Object convertToEntity(ObjectDTO dto) Object saveEntity(Object obj) boolean isGoodObject(Object obj) ObjectDTO convertToDTO(Object obj) String serializeObjectDTO(ObjectDTO obj)
  • 28. 28 Spring Integration Example 24 June 2014 Receiving messages via HTTP REST
  • 29. 29 Another option: JMS backed message channels Channel adapter are intended for applications that are integrating with other external systems. There are cases where both the producer and consumer for a given JMS Destination are intended to be part of the same application, running within the same process. <int-jms:channel id="jmsChannel" queue="exampleQueue"/> <int-jms:publish-subscribe-channel id="jmsChannel" topic="exampleTopic"/>  Support of transactions (“transaction-manager” atrribute)  Support for connection (session, consumer) cache  Concurrency (number of concurrent sessions/consumers to start for each listener) Spring Integration Example 24 June 2014
  • 30. 30 Task 2  An exteranl system feeds us with stream of JSON objects putting them to JMS queue  We need to make some calculations (business logic) using these objects in the order as they come  Depending on calculationd results we could change the persistent state of our domain objects  Incoming objects should be saved to our DB  Finally, the results of calculation should be sent in JSON format to another JMS queue Spring Integration Example 24 June 2014
  • 31. 31 Basic Flow Spring Integration Example 24 June 2014 Receive objects Validation convertion to entity Calculation Analyze and save results Send to outbound JMS Save entities to DB
  • 32. 32 Router Spring Integration Example 24 June 2014 • Payload Type Router • Header Value Router • Recipient List Router • XPath Router (Part of the XML Module) • Error Message Exception Type Router • (Generic) Router
  • 33. 33 Problem Spring Integration Example 24 June 2014 The incoming messages could arrive very frequently
  • 34. 34 Aggregator Spring Integration Example 24 June 2014 • Message Store • Correlation Strategy (delaults to grouping be MessageHeader.CORRELATION_ID) • Release Strategy • Expiration policy
  • 35. 35 Back to task 2: receive and aggregate Spring Integration Example 24 June 2014
  • 36. 36 Back to task 2: receive and aggregate Spring Integration Example 24 June 2014 boolean canReleaseMessages(List<IncObject>) List<IncObject> aggregate(List<IncObject>) Object getCorrelationKey(IncObject)
  • 37. 37 Back to task 2: routing Spring Integration Example 24 June 2014
  • 38. 38 Back to task 2: via publish-subscribe channel Spring Integration Example 24 June 2014
  • 39. 39 Task summary  Built on the top of other Spring modules (e. g. Spring JMS)  Every element of the chain – just a simple POJO  High cohesion  Easy to cover with unit-tests  “Convention over configuration” – bean with name “connectionFactory” will be found automatically  Change the whole business flow only by configuration Spring Integration Example 24 June 2014
  • 41. 41  Both projects aim to fill similar need: light-weight integration library with full implementations of EIP  Apache Camel introduces DSL (Java, Scala, Groovy). Spring Integration - only XML  Apache Camel supports longer list of technologies  Apache Camel offers rich support for both integration and unit-testing. Spring Integration supports just generic Spring Test  Apache Camel Community is larger, documentation is better Spring Integration Spring Integration VS Apache Camel 24 June 2014
  • 42. 42 Apache Camel Java DSL Example final JaxbDataFormat jaxbDataFormat = new JaxbDataFormat(); jaxbDataFormat.setContextPath(“test.ns.oxm"); jaxbDataFormat.setPartClass(“test.ns.oxm.ABSPartnerChangesEventType"); from("activemq:incoming.partner") .log("log:test.log") .choice() .when(header("EVENTTYPE").isEqualTo(“TESTVALUE")).to("direct:createPartner“) .when(header("EVENTTYPE").isEqualTo(“TESTVALUE2")).to("direct:updatePartner"); from("direct:createPartner") .errorHandler(noErrorHandler()) .unmarshal(jaxbDataFormat) .beanRef(“partnerChangeHandler", "createPartner"); from("direct:updatePartner") .errorHandler(noErrorHandler()) .unmarshal(jaxbDataFormat) .beanRef(“partnerChangeHandler", "updatePartner"); Spring Integration Spring Integration VS Apache Camel 24 June 2014
  • 43. 43 Recent changes  Spring EL support (3.0.2)  HTTP request mapping (based on Spring MVC infrastructure) (3.0.2)  Enhanced support for MongoDB, Redis and JPA (3.0.2)  @EnableIntegration, @IntegrationComponentScan (4.0.2)  Requires Spring 4.0 (4.0.2) Spring Integration Example 24 June 2014