Leveraging Open Source Integration with WSO2 Enterprise Service Bus

Preview:

DESCRIPTION

This presentation at the AFITC 2009 (Air Force Information Technology Conference, August 24 - 27, 2009), Montgomery, Alabama by Sumedha Rubasinghe covered how you can deploy enterprise integration faster and easier with the WSO2 ESB.

Citation preview

Leveraging Open Source Integration with

WSO2 Enterprise Service Bus

Sumedha Rubasinghe2009 Air Force Information Technology Conference

Montgomery, Atlanta

2

The Need Introduction Features Important Concepts Extendibility Performance Use cases Getting started & Help

Agenda

3

4

5

6

7

8

Busbar

9

10

Introducing Mattson ...

Hi.. Mattson here.. I am an architect

11

So.. What is WSO2 ESB?

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

13

wait..What is Apache Synapse?How is it related to WSO2ESB?

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

15

Screenshots

16

Screen shots

17

Screen shots

18

In what type of scenariosCan I use WSO2 ESB?

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

20

Tell me some of the main features of WSO2 ESB

21

WSO2 ESB Features

Message Routing Message Transformation & Mapping Scheduled Tasks Orchestration Protocol Switching Transaction Support Eventing

22

Message Routing

Act as a simple Proxy

23

Message Routing

Content based routing

24

Message Transformation & Mapping

XSLT

25

Message Transformation & Mapping

XQuery

26

Message Transformation & Mapping

E4X

27

Message Transformation & Mapping

Support for different file formats– EDI

– flat files

– CSV

– COBOL/Record

28

Tasks

Allow the ESB to initiate work on a timed basis Cron/simple interval Write your own tasks

29

Orchestration

Aggregate

30

Orchestration

Disaggregate

31

Orchestration

Callout

32

Orchestration

If/Then/Else

33

Orchestration

BPEL Feature plug-in– Adds BPS capabilities into ESB

34

interesting...

35

Protocol Support

36

Protocol Support

File, (S)FTP, HTTP(S), REST, Hessian, JSON SOAP JMS

– MQSeries, AMQP/ Apache Qpid,Apache ActiveMQ

– Transactional support Email, XMPP,FIX,TCP

37

Rule based Mediation Drools

38

Many more features ... Load balancing Fail-over handling Caching / Throttling Registry based Clustering WS-Reliable Messaging FIX CEP (Complex Event Processing) and many more....

39

What if I want more? Can I extend WSO2 ESB?What if I want more? Can I extend WSO2 ESB?

Yes.. you can..Just write a mediator..

40

Mediator ..!!what is that?

41

Important concept - Mediator• Basic component of ESB

• Mediates messages going through

• Core mediators

– Send, Drop, Log, Property

• Filter mediators– Filter, Switch, Validate, Throttle, In, Out

• Transformation mediators– XSLT, Header, Fault, XQuery

• Advanced mediators– Clone, Cache, Aggregate, DBLookup, Callout

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

43

Important concept – Sequence

• Special mediator– List of mediators to be executed in an order

• Pipeline pattern

• Special sequences– main

– fault

44

Important concept – operation modes

• Act as a proxy

• Main Sequence– If none of the proxy services matches the

request pattern

45

I would like to have fewmore mediator examples..

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

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

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

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

50

Extending WSO2 ESB

Registry as a repository– Loading configuration from external registry

New Transports

51

So how does all of these fittogether?...What happens with-in WSO2ESB?

52

Architecture

53

Runtime

54

Deployment

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

56

Performance http://wso2.org/library/3740

57

Non-Blocking IO

Thread2

Incoming req

Sock

et o

pen

Thread1 Socke

t op

en

Requestprocessing

Responseprocessing

Outgoing resp

Outgoing req

Incoming resp

Synapse

TIME

TIME

TIME

TIME

This model means:1. Synapse threads never blocked during normal processing2. Number of sockets open >> number of threads

58

Monitoring

Monitor System statistics Running logs Message Tracing Dynamically configurable Logger Exposes statistics via JMX Dashboard – Google Gadgets

59

I would like to see someUse cases where all of these are applied...

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) through the mail transport

61

Use Case 1

62

Use Case 1 - configuration

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

64

Use Case 2

65

Use Case 2 - Configuration

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

67

Use Case 3

68

Use Case 3 - Configuration

69

Use Case 3 - Configuration

70

Use Case 3 - Configuration

71

Use Case 3 - Configuration

72

Use Case 3 - Configuration

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 to client

74

Use Case 4

75

Use Case 4 - Configuration

76

Use Case 5 - FIX to HTTP transport

http://wso2.org/library/3837

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

78

Use Case 7

79

WSO2 Product Platform

80

That's lot of information...Now I would like to try these out myself. How do I get started?

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

82

Help.. I messed it up...

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

84

I would like to have some URLs for reference.

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

86

Summary

•Hypothetical Enterprise•Brief Introduction on WSO2 ESB•Features•Important concepts– Mediators– Sequence

•Extendibility•Use cases•Getting started & Help

87

Thank yousumedha@wso2.com

(on behalf of WSO2 ESB team)

Recommended