SlideShare ist ein Scribd-Unternehmen logo
1 von 44
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?

Weitere ähnliche Inhalte

Ähnlich wie «Spring Integration as Integration Patterns Provider»

Lunch Learn - WCF Security
Lunch Learn - WCF SecurityLunch Learn - WCF Security
Lunch Learn - WCF SecurityPaul Senatillaka
 
Generic Repository Pattern in MVC3 Application with Entity Framework
Generic Repository Pattern in MVC3 Application with Entity FrameworkGeneric Repository Pattern in MVC3 Application with Entity Framework
Generic Repository Pattern in MVC3 Application with Entity FrameworkAkhil Mittal
 
Summarization Techniques for Code, Changes, and Testing
Summarization Techniques for Code, Changes, and TestingSummarization Techniques for Code, Changes, and Testing
Summarization Techniques for Code, Changes, and TestingSebastiano Panichella
 
class based component.pptx
class based component.pptxclass based component.pptx
class based component.pptxsaikatsamanta49
 
Spring andspringboot training
Spring andspringboot trainingSpring andspringboot training
Spring andspringboot trainingMallikarjuna G D
 
Guide to Generate Extent Report in Kotlin
Guide to Generate Extent Report in KotlinGuide to Generate Extent Report in Kotlin
Guide to Generate Extent Report in KotlinRapidValue
 
JBPM5 Community Training Course - Module #1 Introduction
JBPM5 Community Training Course - Module #1 IntroductionJBPM5 Community Training Course - Module #1 Introduction
JBPM5 Community Training Course - Module #1 IntroductionMauricio (Salaboy) Salatino
 
Automated Multiplatform Compilation and Validation of a Collaborative Reposit...
Automated Multiplatform Compilation and Validation of a Collaborative Reposit...Automated Multiplatform Compilation and Validation of a Collaborative Reposit...
Automated Multiplatform Compilation and Validation of a Collaborative Reposit...Ángel Jesús Martínez Bernal
 
Learning MVC Part 3 Creating MVC Application with EntityFramework
Learning MVC Part 3 Creating MVC Application with EntityFrameworkLearning MVC Part 3 Creating MVC Application with EntityFramework
Learning MVC Part 3 Creating MVC Application with EntityFrameworkAkhil Mittal
 
Msbi online training
Msbi online trainingMsbi online training
Msbi online trainingDivya Shree
 
Experiences with Migration from SPEM 2.0 to Essence 1.0 for the REMICS Method...
Experiences with Migration from SPEM 2.0 to Essence 1.0 for the REMICS Method...Experiences with Migration from SPEM 2.0 to Essence 1.0 for the REMICS Method...
Experiences with Migration from SPEM 2.0 to Essence 1.0 for the REMICS Method...Brian Elvesæter
 
Dependency injection in Java, from naive to functional
Dependency injection in Java, from naive to functionalDependency injection in Java, from naive to functional
Dependency injection in Java, from naive to functionalMarian Wamsiedel
 
MSBI Online Training in Hyderabad
MSBI Online Training in HyderabadMSBI Online Training in Hyderabad
MSBI Online Training in Hyderabadunited global soft
 
JDC2008 - Enterprise Integration and Service Oriented Design
JDC2008 - Enterprise Integration and Service Oriented DesignJDC2008 - Enterprise Integration and Service Oriented Design
JDC2008 - Enterprise Integration and Service Oriented DesignHossam Karim
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugToshiaki Maki
 
MuleSoft Manchester Meetup #3 slides 31st March 2020
MuleSoft Manchester Meetup #3 slides 31st March 2020MuleSoft Manchester Meetup #3 slides 31st March 2020
MuleSoft Manchester Meetup #3 slides 31st March 2020Ieva Navickaite
 

Ähnlich wie «Spring Integration as Integration Patterns Provider» (20)

Lunch Learn - WCF Security
Lunch Learn - WCF SecurityLunch Learn - WCF Security
Lunch Learn - WCF Security
 
Generic Repository Pattern in MVC3 Application with Entity Framework
Generic Repository Pattern in MVC3 Application with Entity FrameworkGeneric Repository Pattern in MVC3 Application with Entity Framework
Generic Repository Pattern in MVC3 Application with Entity Framework
 
Olap
OlapOlap
Olap
 
Summarization Techniques for Code, Changes, and Testing
Summarization Techniques for Code, Changes, and TestingSummarization Techniques for Code, Changes, and Testing
Summarization Techniques for Code, Changes, and Testing
 
class based component.pptx
class based component.pptxclass based component.pptx
class based component.pptx
 
Mulesoftppt
Mulesoftppt Mulesoftppt
Mulesoftppt
 
Spring andspringboot training
Spring andspringboot trainingSpring andspringboot training
Spring andspringboot training
 
Guide to Generate Extent Report in Kotlin
Guide to Generate Extent Report in KotlinGuide to Generate Extent Report in Kotlin
Guide to Generate Extent Report in Kotlin
 
JBPM5 Community Training Course - Module #1 Introduction
JBPM5 Community Training Course - Module #1 IntroductionJBPM5 Community Training Course - Module #1 Introduction
JBPM5 Community Training Course - Module #1 Introduction
 
Overview of Mule
Overview of MuleOverview of Mule
Overview of Mule
 
Automated Multiplatform Compilation and Validation of a Collaborative Reposit...
Automated Multiplatform Compilation and Validation of a Collaborative Reposit...Automated Multiplatform Compilation and Validation of a Collaborative Reposit...
Automated Multiplatform Compilation and Validation of a Collaborative Reposit...
 
Learning MVC Part 3 Creating MVC Application with EntityFramework
Learning MVC Part 3 Creating MVC Application with EntityFrameworkLearning MVC Part 3 Creating MVC Application with EntityFramework
Learning MVC Part 3 Creating MVC Application with EntityFramework
 
Msbi online training
Msbi online trainingMsbi online training
Msbi online training
 
Experiences with Migration from SPEM 2.0 to Essence 1.0 for the REMICS Method...
Experiences with Migration from SPEM 2.0 to Essence 1.0 for the REMICS Method...Experiences with Migration from SPEM 2.0 to Essence 1.0 for the REMICS Method...
Experiences with Migration from SPEM 2.0 to Essence 1.0 for the REMICS Method...
 
Dependency injection in Java, from naive to functional
Dependency injection in Java, from naive to functionalDependency injection in Java, from naive to functional
Dependency injection in Java, from naive to functional
 
MSBI Online Training in India
MSBI Online Training in IndiaMSBI Online Training in India
MSBI Online Training in India
 
MSBI Online Training in Hyderabad
MSBI Online Training in HyderabadMSBI Online Training in Hyderabad
MSBI Online Training in Hyderabad
 
JDC2008 - Enterprise Integration and Service Oriented Design
JDC2008 - Enterprise Integration and Service Oriented DesignJDC2008 - Enterprise Integration and Service Oriented Design
JDC2008 - Enterprise Integration and Service Oriented Design
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsug
 
MuleSoft Manchester Meetup #3 slides 31st March 2020
MuleSoft Manchester Meetup #3 slides 31st March 2020MuleSoft Manchester Meetup #3 slides 31st March 2020
MuleSoft Manchester Meetup #3 slides 31st March 2020
 

Mehr von IT Weekend

Quality attributes testing. From Architecture to test acceptance
Quality attributes testing. From Architecture to test acceptanceQuality attributes testing. From Architecture to test acceptance
Quality attributes testing. From Architecture to test acceptanceIT Weekend
 
Mobile development for JavaScript developer
Mobile development for JavaScript developerMobile development for JavaScript developer
Mobile development for JavaScript developerIT Weekend
 
Building an Innovation & Strategy Process
Building an Innovation & Strategy ProcessBuilding an Innovation & Strategy Process
Building an Innovation & Strategy ProcessIT Weekend
 
IT Professionals – The Right Time/The Right Place
IT Professionals – The Right Time/The Right PlaceIT Professionals – The Right Time/The Right Place
IT Professionals – The Right Time/The Right PlaceIT Weekend
 
Building a Data Driven Organization
Building a Data Driven OrganizationBuilding a Data Driven Organization
Building a Data Driven OrganizationIT Weekend
 
7 Tools for the Product Owner
7 Tools for the Product Owner 7 Tools for the Product Owner
7 Tools for the Product Owner IT Weekend
 
Hacking your Doorbell
Hacking your DoorbellHacking your Doorbell
Hacking your DoorbellIT Weekend
 
An era of possibilities, a window in time
An era of possibilities, a window in timeAn era of possibilities, a window in time
An era of possibilities, a window in timeIT Weekend
 
Web services automation from sketch
Web services automation from sketchWeb services automation from sketch
Web services automation from sketchIT Weekend
 
REST that won't make you cry
REST that won't make you cryREST that won't make you cry
REST that won't make you cryIT Weekend
 
Как договариваться с начальником и заказчиком: выбираем нужный протокол общения
Как договариваться с начальником и заказчиком: выбираем нужный протокол общенияКак договариваться с начальником и заказчиком: выбираем нужный протокол общения
Как договариваться с начальником и заказчиком: выбираем нужный протокол общенияIT Weekend
 
Обзор программы SAP HANA Startup Focus
Обзор программы SAP HANA Startup FocusОбзор программы SAP HANA Startup Focus
Обзор программы SAP HANA Startup FocusIT Weekend
 
World of Agile: Kanban
World of Agile: KanbanWorld of Agile: Kanban
World of Agile: KanbanIT Weekend
 
Risk Management
Risk ManagementRisk Management
Risk ManagementIT Weekend
 
Cutting edge of Machine Learning
Cutting edge of Machine LearningCutting edge of Machine Learning
Cutting edge of Machine LearningIT Weekend
 
Parallel Programming In Modern World .NET Technics
Parallel Programming In Modern World .NET TechnicsParallel Programming In Modern World .NET Technics
Parallel Programming In Modern World .NET TechnicsIT Weekend
 
Parallel programming in modern world .net technics shared
Parallel programming in modern world .net technics   sharedParallel programming in modern world .net technics   shared
Parallel programming in modern world .net technics sharedIT Weekend
 
Maximize Effectiveness of Human Capital
Maximize Effectiveness of Human CapitalMaximize Effectiveness of Human Capital
Maximize Effectiveness of Human CapitalIT Weekend
 
“Using C#/.NET – “Controversial Topics & Common Mistakes”
“Using C#/.NET – “Controversial Topics & Common Mistakes”“Using C#/.NET – “Controversial Topics & Common Mistakes”
“Using C#/.NET – “Controversial Topics & Common Mistakes”IT Weekend
 

Mehr von IT Weekend (20)

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

Kürzlich hochgeladen

Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024The Digital Insurer
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024SynarionITSolutions
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Principled Technologies
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 

Kürzlich hochgeladen (20)

Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

«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