implementing advanced integration patterns with wso2 esb
DESCRIPTION
Enterprise Integration is a means of linking the different components of an SOA system. The success of an SOA solution heavily depends on proper enterprise integration. However this is easier said than done. There are many complex requirements to this process one of which is the need to interconnect heterogeneous systems which use different message formats and protocols and these systems needs to work together to achieve the final outcomeTRANSCRIPT
Udayanga WickramasingheSoftware EngineerWSO2 ESBJanuary 2012
Implementing advanced integration patterns with WSO2 ESB
Overview
• Introduction
• Demo1 – Service Chaining
• Demo 2 – EIP Split/Aggregate/Clone
• Demo3 – EIP Store Forward
SOA & ESB
• SOA The underlying structure supporting communication
between services• ESB
ESB is considered as the backbone of a robust SOA It integrates all the internal systems as well as external
systems of the enterprise
REST
.NET
Java
Java
SAP
WebLogic
SOAP
J2EE
EAI (Enterprise Application integration)
Introducing WSO2 ESB...
• Based on WSO2 Carbon (Modular Middleware) and Apache Synapse
• Designed to be asynchronouso Based on Synapse core with non blocking I/O
• Open source with commercial supporto Apache Software License v2.0
• Rich collection of built-in features supporting
any integration scenario or EIP
• Customizable by adding/removing features
Heterogeneous service integration
• Comprehensive WS Specs and SOAP support
• HTTP/S with REST/POX
• Adapters for various Industry Standards
• SAP
• Financial Information eXchange (FIX)
• Health Level 7(HL7)
• VFS (File/FTP/SFTP)
• JMS
• SMTP
• SMS
WSO2 ESB Components – In a nutshell..
• Message and Service Mediation
Managing and transforming messages
Mediating messages coming into a specific proxy service
hosted on ESB
• Mediators
Simplest functional component.
Performs a predefined action on a given message
• Sequences
Sequential arrangement of mediators
• Proxy Services
Hosting proxy services inside ESB
Protocol switching and QoS
• Endpoints
A logical representation of an actual endpoint, or else a
collection of endpoints wrapped within some logic.
EIP Patterns with ESB
• Splitter
• Aggregator
• Message Translator
• Content Enricher
EIP Patterns with ESB
• Wire Tap
• Content Based Router
• Message Filter
• Message Store
EIP Patterns with ESB
Demo #1 - Service Chaining
• Invoke multiple backend services in a chain fashion for a single client request
• Response of first backend invocation can be used as request of second backend invocation.. And so on…
• Conditional chaining based on responses of backed services
Service 1
Service 2
Service 3
Request - Response
Request - Response
Request - Response
Account Balance Transfer scenario
User Validator
User ID
Valid/Invalid
Accounts Service
User ID
Accounts belongsto user
Transfer Processor
Transaction Info
Status
Transfer Request
Response
•Check user validity
•Check Account ownership
•Perform transfer
Demo #2 - Message Splitting and Aggregation
• Request consists of multiple elements which can process individually
• Collect and store individual messages until a complete set of related messages has been received.
• Create a single message distilled from the individual messages
Split
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header/><soapenv:Body>
<s:symbols xmlns:s="http://demo.wso2.org"><s:symbol>ABC</s:symbol><s:symbol>PQR</s:symbol><s:symbol>XYZ</s:symbol>
</s:symbols></soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body>
<s:symbol xmlns:s="http://demo.wso2.org">ABC</s:symbol></soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body>
<s:symbol xmlns:s="http://demo.wso2.org">XYZ</s:symbol></soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body>
<s:symbol xmlns:s="http://demo.wso2.org">PQR</s:symbol></soapenv:Body>
</soapenv:Envelope>
Aggregate
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header/><soapenv:Body>
<s:symbols xmlns:s="http://demo.wso2.org"><s:symbol>ABC</s:symbol><s:symbol>PQR</s:symbol><s:symbol>XYZ</s:symbol>
</s:symbols></soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body>
<s:symbol xmlns:s="http://demo.wso2.org">ABC</s:symbol></soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body>
<s:symbol xmlns:s="http://demo.wso2.org">XYZ</s:symbol></soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body>
<s:symbol xmlns:s="http://demo.wso2.org">PQR</s:symbol></soapenv:Body>
</soapenv:Envelope>
Scatter-Gather ( Clone and Aggregation )
Ticketing ServiceA
From,To
RatesRequest Best Rate
Best Rate Response
•Check rates
•Aggregate
•Calculate Best Rate
Ticketing ServiceB
Ticketing ServiceC
Demo#3 - Dead Letter Channel
• Push failed message into a message store if sending failed• Automatic/Manual retry using Forwarding message processor• Resembles to “dead letter channel” EIP• Featuring connecting to file system (transport switching)
Q&A
Selected Customers
WSO2 engagement model
• QuickStart
• Development Support
• Development Services
• Production Support
• Turnkey Solutions
• WSO2 Mobile Services Solution
• WSO2 FIX Gateway Solution
• WSO2 SAP Gateway Solution
Thank You.