TeamStation AI System Report LATAM IT Salaries 2024
Open Source Integration with WSO2 Enterprise Service Bus
1. Leveraging Open Source Integration
with
WSO2 Enterprise Service Bus
Sumedha Rubasinghe
2009 Air Force Information Technology Conference
Montgomery, Atlanta
2. Agenda
The Need
Introduction
Features
Important Concepts
Extendibility
Performance
Use cases
Getting started & Help
2
12. WSO2 Enterprise Service Bus
A fast,Light weight, easy-to-use Enterprise
Service Bus product
Open source product with commercial support
(if required)
Released with business friendly Apache License
2.0
Based on Apache Synapse
Customizable to match the needs of your
Enterprise
12
14. Apache Synapse & WSO2 ESB
Leading project developed by Apache
community
Some of the key committers with in WSO2
WSO2 ESB is built on top of Apache Synapse
Synapse provides the core mediation
capabilities
WSO2 ESB uses Synapse's configuration
language
14
18. In what type of scenarios
Can I use WSO2 ESB?
18
19. Usage scenarios
Link legacy files to messaging based systems
Transform CSV or EDI formats to XML
Act as a high-performance XML Gateway
Content-based routing and creating virtual
services
Integrate FIX based trading systems with XML
and non-XML backends
Log, trace and audit live systems
19
20. Tell me some of the
main features of WSO2 ESB
20
42. Important concept – Send Mediator
• Used to send out the messages
• Used in almost all the cases
• Wrapped an endpoint
– if no endpoint is specified, anonymous 'To'
address will be taken as the EPR
42
43. Important concept – Sequence
• Special mediator
– List of mediators to be executed in an order
• Pipeline pattern
• Special sequences
– main
– fault
43
44. Important concept – operation modes
• Act as a proxy
• Main Sequence
– If none of the proxy services matches the
request pattern
44
45. I would like to have few
more mediator examples..
45
46. Extendibility – Java Mediator
• Class implementing the Mediator interface
– Or AbstractMediator class
– Custom mediator is executed through the
ClassMediator in ESB
– Corresponding setter methods in the custom class
will be set before executing the custom mediator
if any properties are specified
46
47. Extendibility - POJOCommand
• Extends the mediation capabilities using the
well known command pattern
– Class implementing the Command interface or
a POJO with a void execute() method
– execute() method will be invoked using the
Command interface or by using reflection
– Sets the properties before execution and
retrieves the properties after execution
47
48. Extendibility – Script Mediator
• Enables scripting for extending mediation
• Supports all the Apache BSF scripting languages
– JRuby, Jython, Groovy, Java Script
• Embed the script inline or can be referred to a
separate script file with the function name to
be executed
48
49. Extendibility – Spring Mediator
• Spring configurations to extend the mediation
• Spring bean must implement the Mediator
interface
• Refer to the spring application context using
the key
• The Spring bean is managed by the spring
context at mediation time
49
50. Extending WSO2 ESB
Registry as a repository
– Loading configuration from external registry
New Transports
50
51. So how does all of these fit
together?...
What happens with-in WSO2
ESB?
51
55. Performance
Completely asynchronous architecture internally
Streaming support for messages
100% error free and zero memory leaks under heavy load
Up to 4500tps out-of-the-box for proxying
– Intel(R) Xeon(TM) 3.20GHz 2MB Cache
– Dual Core - 2 CPU system
– 2GB RAM
– 1Gb Ethernet
http://wso2.org/library/3740
55
57. Non-Blocking IO
Synapse
Incoming req
Request
Thread1 processing Outgoing req
Socket open
Socket open
TIME
TIME
TIME
TIME
Incoming resp
Response
Thread2 processing
Outgoing resp
This model means:
1. Synapse threads never blocked during normal processing
2. Number of sockets open >> number of threads
57
58. Monitoring
Monitor System statistics
Running logs
Message Tracing
Dynamically configurable Logger
Exposes statistics via JMX
Dashboard – Google Gadgets
58
59. I would like to see some
Use cases where all of
these are applied...
59
60. Use Case 1
• Problem
– I want to send a notification email whenever there
is a request to a particular service which satisfies a
set of conditions over the request
• Solution
– Filter the messages over the request and evaluate
the conditions
– If the conditions evaluate to true then clone the
message
– Send the request to the desired endpoint while
forwarding a copy (may be after transformation) 60
through the mail transport
63. Use Case 2
• Problem
– I have a service exposed over HTTP transport and
now I want the same service to be accessed through
JMS
• Solution
– Expose a proxy service with JMS (and what ever
transport) and switch the transport to HTTP (if not
http)
– Invoke the actual service with HTTP transport
– Switch the transport back to JMS of the response
message 63
66. Use Case 3
• Problem
– I want the ESB to invoke several services of the
same type for a request, evaluate all the responses
and respond me with the best one
• Solution
– Clone the message and send the requests to
different endpoints
– Get the responses from all services and aggregate
the responses
– Select the best out of the aggregated responses and
respond to the client
66
73. Use Case 4
• Problem
– I have a non secure service and now I want to
expose this service with security
• Solution
– Expose a proxy service
– Add security to that proxy service and specify the
policy on which you want to enforce security
– Invoke the actual service without security by
removing security headers in the request comes to
the proxy
– Add security for responses from the actual service 73
to client
76. Use Case 5 - FIX to HTTP transport
http://wso2.org/library/3837
76
77. Use Case 6 - Eventing
•http://wso2.org/library/articles/fusion-eventing-soa
•http://wso2.org/library/articles/fusion-eventing-soa-part-2-eventing-using-
synapse-wso2esb 77
80. That's lot of information...
Now I would like to try these out
myself. How do I get started?
80
81. How to get started?
Download binary distribution from
http://wso2.org/projects/esb/java
Latest is v2.1.0
Unzip
• Run bin/wso2server.sh (on Unix) or
bin/wso2server.bat (on Windows)
• Management console
– https://localhost:9443/carbon
– admin/admin
81
83. How to get help?
Online forum
Active community of external users
Ample free documentation on wso2.org
If needed, we provided commercial support on
– Getting started
– Deployment
– Custom development
– Production support
83
84. I would like to have some
URLs for reference.
84
85. Useful references
WSO2 Oxygen Tank for Web Service Developers
– http://wso2.org
WSO2 ESB project page
– http://wso2.org/projects/esb
Performance testing
– http://wso2.org/library/3740
– http://wso2.org/library/2259
– http://wso2.org/library/1721
Apache Synapse
– http://synapse.apache.org
85