mule esb introduction

24
Introduction to ESBs: Mule

Upload: mohammed625

Post on 14-Apr-2017

282 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Mule esb introduction

Introduction to ESBs:Mule

Page 2: Mule esb introduction

Agenda

• What is an ESB?• Java Business Integration (JBI)• Mule Architecture• Mule in the Real World

Page 3: Mule esb introduction

Source Material

• [Ric] Mark Richards, “The Role of the Enterprise Service Bus”, NFJS, Oct 23, 2006. http://www.infoq.com/presentations/Enterprise-Service-Bus

• [Mul] Mule Architecture Guide. http://mule.mulesource.org/display/MULE/Architecture+Guide

• September [mule-user archive]

Page 4: Mule esb introduction

Problems Addressed by ESBs• Integration of existing systems• Refactorable in real time• Flexibility to change as requirements change• Decentralized (service-location transparency)• Scalable (point solutions to full enterprise)• Sharing of services across enterprise• Ability to separate Business Services from

Service Implementations• Leverages standards

Page 5: Mule esb introduction

Definition(s)

Gartner Group

Giant exercise in Separation of Concerns

[Ric]

Page 6: Mule esb introduction

Definitions (more)

www.datapower.co

m

[Ric]

Page 7: Mule esb introduction

ESB Features

• Routing• Message Transformation• Message Enhancement• Protocol Transformation• Service Mapping

Message Processing Process Choreography Service Orchestration Transaction Management Security

[Ric]

Page 8: Mule esb introduction

An ESB Blueprint

General case

Client calls Choreographer Client calls Mediator

vs

[Ric]

Page 9: Mule esb introduction

Java Business Integration (JBI)• JSR-208 Standard• Defines service engines (SE – choreographers,

transformers, security, etc) and binding components (BC – xml, http, etc)

• Concerned with how internal customers (not external services) interact with service providers

COTS

[Ric]

Page 10: Mule esb introduction

JBI Example

• XSLT – message transformation• PXE – choreography• Groovy – scripting

[Ric]

Page 11: Mule esb introduction

JBI Case Study: Service Mix

Service Mix

Binding Components

Service Engines

[Ric]

Page 12: Mule esb introduction

Mule Architecture

[Mule]

Page 13: Mule esb introduction

Mule Flow View

• Channel – a method of connecting between two points (not part of Mule)

• Connector – a transport provider (e.g., http, jms, soap, smtp, etc) implementing message receive and message dispatch

• Transformer – converts message structure/format (e.g., http to xml)

• Router – moves messages amongst UMOs and connectors

[Mule]

Page 14: Mule esb introduction

Mule Connector View

http://myapp.com pop3://[email protected]→xml xml→pop3

myUMO (xml→xml)

[Mule]

Page 15: Mule esb introduction

Mule Transports

• AS400 DQ• EJB• E-mail• File• FTP• HTTP• IMAP• JDBC

JMS Multicast POP3 Quartz

RMI Servlet SMTP SOAP

SSL Stream TCP UDP VFS VM WSDL XMPP

Page 16: Mule esb introduction

UMO Execution

• Requires a component resolver (e.g., Spring or Pico) for– Instantiation of UMOs– Configuration of UMOs

• Event processing– Asynchronous– Synchronous– Request-Response

[Mule]

Page 17: Mule esb introduction

Mule Programming Model

Application logic

Application glue

Mule glue

[Mule]

Page 18: Mule esb introduction

Mule Routers

[Mule]

Page 19: Mule esb introduction

Selective Consumer (inbound)• Applies one or more filters to incoming payload, then

branch based on filter

<inbound-router>

<catch-all-strategy className="org.mule.routing.ForwardingCatchAllStrategy">

<endpoint address="jms://topic:error.topic"/></catch-all-strategy>

<router className="org.mule.routing.inbound.SelectiveConsumer">

<filter expression="msg/header/resultcode = 'success'"

className="org.mule.routing.filters.xml.JXPathFilter"/></router>

</inbound-router>

Page 20: Mule esb introduction

Filtering Outbound (outbound)<outbound-router>

<catch-all-strategy className="org.mule.routing.ForwardingCatchAllStrategy"><endpoint="jms://error.queue"/></catch-all-strategy>

<router className="org.mule.routing.outbound.FilteringOutboundRouter"><endpoint address="smtp://[email protected]"/><filter expectedType="java.lang.Exception"className="org.mule.routing.filters.PayloadTypeFilter"/></router>

<router className="org.mule.routing.outbound.FilteringOutboundRouter"><endpoint address="jms://string.queue"/><filter className="org.mule.routing.filters.logic.AndFilter"><left-filter expectedType="java.lang.String"className="org.mule.routing.filters.PayloadTypeFilter"/><right-filter pattern="the quick brown (.*)"className="org.mule.routing.filters.RegExFilter"/></filter></router>

</outbound-router>

Page 21: Mule esb introduction

Nested Router• Allows synchronous callouts that can be intercepted and routed

<mule-descriptor name="InvokerComponent" implementation="org.mule.foo.Invoker"><inbound-router>

<endpoint address="jms://Invoker.in"/></inbound-router>

<nested-router><binding interface="org.mule.foo.HelloInterface">

<endpoint address="axis:http://192.168.2.14:81/services/HelloWebComponent?method=helloMethod" remoteSync="true"/>

</binding></nested-router>

<outbound-router><router

className="org.mule.routing.outbound.OutboundPassThroughRouter"><endpoint address="jms://Invoker.out"/>

</router></outbound-router>

</mule-descriptor>

Page 22: Mule esb introduction

Dog Days with Mule

• September [mule-user archive]– How to get a hold of Endpoint object from the

component? {mule}– Failed to throw UserDefined Exception {jaxws}– Failed to invoke lifecycle “start” using CXF in JBOSS

{cxf}– Problem in loading xsd files {mule}– Problems with RemoteDispatcher {mule}– Inject MuleClient Singleton with Spring {mule}– Mule transaction support {mule}

Page 23: Mule esb introduction

ESB Features

• Routing• Message Transformation• Message Enhancement• Protocol Transformation• Service Mapping

Message Processing Process Choreography Service Orchestration Transaction Management Security

XX

√√√√

Page 24: Mule esb introduction

Take Away Messages• Mule’s generality results in great flexibility, but at the cost of

great complexity for users

• Mule is the focal point of ambiguity and difficulties with many standards-based packages

• Mule delivers (to a degree) on:– Integration, flexibility, decentralized operation, scalability

• Mule doesn’t deliver (so much) on:– Runtime refactoring, conceptualization