Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 1
Mule - A Detailed Look at anEnterprise Service Bus
Tom Bender
Tendril Networks
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 2
Introduction• Adoption of SOA Architecture?
• Commercial, Open Source, Rolled your own?
• Adoption of ESB Solution?
• Commercial, Open Source, Rolled your own?
• What are your goals in attending this session?
• What, Why and Where of ESB?
• What makes Mule so cool?
• Mule ESB Coding Samples?
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 3
Introduction
Tom Bender
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 4
Introduction
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 5
Introduction
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 6
Introduction
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 7
Introduction
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 8
Introduction
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 9
Introduction
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 10
Introduction
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 11
Introduction
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 12
Introduction
Systems Architect
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 13
Introduction
Industrial Machine Vision
Ann Arbor, Michigan
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 14
Introduction
Financial Quantitative ExpertTrading Systems
Los Angeles, CA
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 15
Introduction
Expert Constraint Systems
Sales Force Automation
Golden, CO
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 16
Introduction
Consultant
Boulder, CO
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 17
Introduction
Local Commerce
Jabber IM
Denver, CO
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 18
Introduction
Satellite Scheduling Systems
Geospatial InformationSystems
Longmont, CO
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 19
Introduction
802.15.4
Wireless Sensor & ActuatorNetworks
Boulder, CO
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 20
Introduction
• Dave Chappelle?
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 21
Introduction
• Dave Chappelle David Chappell
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 22
Agenda
Definition of Terms
Introduction to Mule
A Closer Look at Mule
Inside Mule, A Look at SEDA
Workflow Examples using Mule ESB
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 23
Technology Quote
"Perfection is achieved, not when there is nothing more toadd, but when there is nothing left to take away." - Antoine de Saint-Exupery
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 24
Definition of Terms
Service:
is a coarse-grained, discoverable, and self-contained software entity that
interacts with applications and other services through a loosely coupled,
often asynchronous, message-based communication model.
Service Oriented Architecture:a collection of services with well-defined interfaces and a shared
communications model is called a service-oriented architecture (SOA). A
system or application is designed and implemented as a set of interactions
among these services.
Enterprise Service Bus:provides a light weight, loosely coupled, event-driven SOA with a highly
distributed universe of named routing destinations across a multi-protocol
message bus.
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 25
Definition of Terms
Workflow:
A workflow management system (WFMS) is a software component that
takes as input a formal description of business processes and maintains the
state of processes executions, thereby delegating activities amongst people
and applications. - Tom Baeyens, jBPM Founder
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 26
Principles of SOA
“Four Tenets of SOA” as proposed by Don Box:
Boundaries are Explicit
Services are Autonomous
Services share Schema and Contract, not Class
Compatibility is based upon Policy
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 27
Properties of an ESBLight Weight
Loosely Coupled
Event-Driven
Transactional
Securable
Distributed Network Topologies
Abstract Endpoints
Intelligent Routing
Message Transformation (inbound/outbound)
Reliable Messaging / QoS
Multi-Protocol Message Bus
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 28
ESB Adoption:Partitioning and Encapsulating SOA
Integration Approaches
Application andIntegration Logic
separated
Application andIntegration logicnot separated
Hub-and-SpokeIntegration
DistributedIntegration
TraditionalEAI
ESB
ApplicationServers
Custom Code/MOM
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 29
Introduction to Mule
Brief Description
Community
Resources
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 30
Introduction to Mule
DescriptionMule is an event-based architecture.
Actions within a Mule network are triggered by either eventsoccurring in Mule or in external systems.
Events always contain some sort of data, the payload.
The payload is used and/or manipulated by components and a set ofproperties that are associated to the processing of the event.
These properties are arbitrary and can be set at any time from whenthe event is created.
The data in the event can be accessed in its original state or in itstransformed state.
The event will use the transformer associated with the Endpoint thatreceived the event to transform its payload into a format that thereceiving component understands.
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 31
Introduction to Mule
Mule is a light-weight messaging framework.
Highly distributable object broker
Pluggable Connectivity for multiple transports and protocols
Multiple Messages Exchange Types
Web Services using Axis or Glue
Multiple Topology Configurations
Declarative Transactions including XA
Staged Event Driven Architecture
Dynamic, Declarative, content-based and rule-based Routing
Message Transformation
Event Routing based on Enterprise Integration Pattern
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 32
Introduction to Mule
CommunityCommitters
• Ross Mason, [email protected]
• Guillaume [email protected]
• Brian [email protected]
• Stéphane Vanmeerhaeghe
Contributors• http://mule.codehaus.org/docs/team-list.html
• http://mule.codehaus.org/Team
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 33
Introduction to Mule
Resources
Web Site
Documentation
IRC
Source Code
Bug Database/JIRA
Mailing List Archive
Example Code
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 34
Introduction to Mule
Web Sites
• http://mule.codehaus.org
• http://www.muleumo.org
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 35
Introduction to MuleDocumentation
Mule Documentation Home
• http://mule.codehaus.org/docs/
Mule User Guide
• http://docs.codehaus.org/display/MULE/User+Guide
Mule Cookbook
• http://docs.codehaus.org/display/MULE/Mule+Cookbook
Mule Client
• http://docs.codehaus.org/display/MULE/Mule+Client
Mule Message Routers
• http://mule.codehaus.org/Message+Routers
Mule Properties Configuration
• http://mule.codehaus.org/Configuring+Properties
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 36
Introduction to MuleMule Docs (Continued)
JBoss Integration
• http://mule.codehaus.org/JBoss+Integration
Spring as a Component Factory
• http://mule.codehaus.org/Using+Spring+as+a+Component+Factory
RSS FeedsSite
• http://docs.codehaus.org/spaces/rss.action?key=MULE&newPages=false
News• http://docs.codehaus.org/spaces/blogrss.action?key=MULE
RSS
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 37
Introduction to Mule
IRC
Information on IRC Options• http://mule.codehaus.org/IRC
IRC Channel
• irc://irc.codehaus.org/#mule
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 38
Introduction to Mule
Source Code
Mule Releases
• http://mule.codehaus.org/Download
CVS
• http://mule.codehaus.org/CVS+Info
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 39
Introduction to Mule
Bug DatabaseJIRA
• http://jira.muleumo.org/
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 40
Introduction to Mule
Mailing Listhttp://archive.codehaus.org/mule/
• announce, despots, dev, scm, user
GMANE SearchUser
• http://search.gmane.org/?group=gmane.comp.java.mule.user
Dev• http://search.gmane.org/?group=gmane.comp.java.mule.devel
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 41
A Closer Look at Mule
UMOUMO
ComponentComponent
UMO Component
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 42
A Closer Look at Mule
Application UMOUMO
ComponentComponentApplicationApplication
Wiring Applications with Mule
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 43
A Closer Look at Mule
ChannelChannelApplication UMOUMO
ComponentComponentApplicationApplication
Wiring Applications with Mule
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 44
A Closer Look at Mule
ChannelChannelApplication
Me
ssa
ge
Re
ce
ive
rM
essa
ge
Re
ce
ive
r
Co
nn
ecto
rC
on
ne
cto
r
Tra
nsfo
rme
rT
ran
sfo
rme
r
UMOUMO
ComponentComponentApplicationApplication
Wiring Applications with Mule
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 45
A Closer Look at Mule
ChannelChannelApplicationInboundInbound
RouterRouterUMOUMO
ComponentComponentApplicationApplication
Wiring Applications with MuleM
essa
ge
Re
ce
ive
rM
essa
ge
Re
ce
ive
r
Co
nn
ecto
rC
on
ne
cto
r
Tra
nsfo
rme
rT
ran
sfo
rme
r
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 46
A Closer Look at Mule
ChannelChannelApplicationInboundInbound
RouterRouterUMOUMO
ComponentComponent
OutboundOutbound
RouterRouterApplicationApplication
Wiring Applications with MuleM
essa
ge
Re
ce
ive
rM
essa
ge
Re
ce
ive
r
Co
nn
ecto
rC
on
ne
cto
r
Tra
nsfo
rme
rT
ran
sfo
rme
r
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 47
A Closer Look at Mule
ChannelChannelApplicationInboundInbound
RouterRouterUMOUMO
ComponentComponent
OutboundOutbound
RouterRouterApplicationApplication
Wiring Applications with MuleM
essa
ge
Dis
pa
tch
Me
ssa
ge
Dis
pa
tch
Co
nn
ecto
rC
on
ne
cto
r
Tra
nsfo
rme
rT
ran
sfo
rme
r
Me
ssa
ge
Re
ce
ive
rM
essa
ge
Re
ce
ive
r
Co
nn
ecto
rC
on
ne
cto
r
Tra
nsfo
rme
rT
ran
sfo
rme
r
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 48
A Closer Look at Mule
ChannelChannelApplicationInboundInbound
RouterRouterUMOUMO
ComponentComponent
OutboundOutbound
RouterRouterApplicationApplication
Wiring Applications with Mule
ChannelChannel
Me
ssa
ge
Re
ce
ive
rM
essa
ge
Re
ce
ive
r
Co
nn
ecto
rC
on
ne
cto
r
Tra
nsfo
rme
rT
ran
sfo
rme
r
Me
ssa
ge
Dis
pa
tch
Me
ssa
ge
Dis
pa
tch
Co
nn
ecto
rC
on
ne
cto
r
Tra
nsfo
rme
rT
ran
sfo
rme
r
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 49
A Closer Look at Mule
ChannelLogical address in the messaging system
Mule ChannelWires components
Supports many channel options known as TransportProviders
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 50
A Closer Look at Mule
Message Receiver
Receives data from the Application.
Supports Multiple Transport Providers
• Jms, soap, http, tcp, xmpp, smtp, file, etc.
Additional Information
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 51
A Closer Look at Mule
ConnectorSends and receives data over a channel
A message receiver is coupled with a connector and Transformercomprising a Transport Provider
The connector is responsible for sending data to a resource andmanaging a listener on the connector to receive data from aresource. (e.g. JmsConnector)
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 52
A Closer Look at Mule
ConnectorMessageReceiver
• Used to listen on an endpoint to the underlying protocol.
MessageDispatcher• Is used to dispatch events to the underlying protocol.
• Message Dispatchers are poolable threads that can be used to dispatchevents or perform a receive on the underlying protocol to retrieve anavailable event if there is one.
• The UMOMessageDispatcher interface defines 3 important methods:
dispatch() - sends data to the external system asynchronously.
send() - sends data to the external system synchronously andreturns any response from the external system as a UMOEvent.
receive() - will request an event from the underlying technology andreturns the result. This method has a timeout parameter.
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 53
A Closer Look at Mule
ConnectorAdditional Information
• http://mule.codehaus.org/Architecture+Guide#ArchitectureGuide-connectors
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 54
A Closer Look at Mule
TransformerTransformers are used to convert source data to an object type required bythe UMO Component.
Transformers can be configured on Endpoints that receive data to ensurethat the expected object type is always received by an UMO Component.
Transformers configured on an Outbound endpoint ensure that theendpoint receives the the correct object type before dispatching the event.
Multiple transformers can be chained together to allow for finer grainedtransformer implementations that are easier to reuse.
To configure an Endpoint to use more than one transformer, just specify aspace separated list of transformers in the config file
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 55
A Closer Look at Mule
TransformerInbound Transformer
Outbound Transformer
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 56
A Closer Look at MuleEndpoint
a logical, configuration entity that is attached to components or externalnetwork resources and used to control where events are sent and receivedin Mule
• Endpoint URI - an address that is used to reference a resource or service eitherlocally or remotely. This must be a valid URI.
• Connector - used to connect to the underlying transport. Often the connector isnot explicitly set, instead the connector for the endpoint is found based on thescheme of the Endpoint URI.
• Filter - a filter to apply to messages being received on the endpoint. See theTransports Guide for information about filtering support for a specific transport.
• Transaction - Transactions can begin or commit when an event is received orsent.
• Properties - These can be set to override certain properties on the connector forthis endpoint instance. For example, when using a smtp endpoint you may wantto overload the from address.
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 57
A Closer Look at MuleEndpoint Configuration
POP3/SMTP
• pop3://user:[email protected]
• smtp://user:[email protected]
JMS Topic or Queue
• jms://topic:myTopic
HTTP
• http://mycompany.com/mule
File
• file:///tmp/data/in
VM
• vm://MyUMO
SOAP
• axis:http://mycompany.com/mule/services/MyUMO
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 58
A Closer Look at Mule
Endpoint ConfigurationAdditional Information
• http://mule.codehaus.org/Configuring+Endpoints
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 59
A Closer Look at Mule
Elements of a Transport ProviderConnector, is responsible for connecting to the underlying resource
Message Receiver, is used to receive events from the system
Connector Dispatchers, are responsible for passing data to the system
Transformers are Transport specific transformers used to convert inboundand outbound data
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 60
A Closer Look at MuleMessage Routers
Controls how events are sent and received by components in thesystem
Inbound Routers that are invoked when an event is received
Outbound Routers that are invoked when an event is beingdispatched
Response Routers that are invoked when a registered event isreceived
Router TypesInbound
Outbound
Response
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 61
A Closer Look at MuleInbound Routers
Idempotent Receiver (528)
Selective Consumer (515)
Aggregator (268)
Resequencer (283)
Forwarding Consumer
Outbound RoutersFiltering Outbound Router (70)
Recipient List (249)
Multicast Router
Chaining Router
Message Splitter (259)
Filtering List Message Splitter (70), (259)
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 62
A Closer Look at Mule
Response Routers
Response Aggregator
• Aggregation of responses from parallel requests prior to sendingresponse to caller
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 63
A Closer Look at Mule
Inbound Router
Controls how and which events are received by theattached UMO component
Filter, aggregate and re-sequence events
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 64
A Closer Look at Mule
Outbound Router
Controls how and which components receive thedispatched event.
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 65
A Closer Look at Mule
Message RoutersCatch All Strategies
• No available routing path
• Associate provider and route to common endpoint
Additional Information• Mule Document: http://mule.codehaus.org/Message+Routers
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 66
A Closer Look at Mule
FiltersFilters provide the logic by which to invoke a particularrouter.
• Multiple Filter Types
Filters can be combined using logic filters.• AndFilter
• OrFilter and
• NotFilter.
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 67
A Closer Look at MuleFilter Types
Payload Type Filter
RegEx Filter
Wildcard Filter
XPath Filter
Logic Filters
Message Property Filter
ExtensibilityCustom Filters
Additional Informationhttp://mule.codehaus.org/Filters
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 68
A Closer Look at Mule
Interceptors
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 69
A Closer Look at Mule
Configuration
Mule DTD Reference• http://mule.codehaus.org/docs/mule-configuration.dtd.html
Mule DTD• http://mule.codehaus.org/docs/mule-configuration.dtd.org.html
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 70
A Closer Look at Mule
Configuration
http://mule.codehaus.org/Configuration+Options
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 73
A Closer Look at Mule<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mule-configuration PUBLIC "-//SymphonySoft //DTD mule-configurationXML V1.0//EN" "http://www.symphonysoft.com/dtds/mule/mule-configuration.dtd">
<mule-configuration id="fileProviderSampleProperties" version="1.0">
<connector name="FileConnector"className="org.mule.providers.file.FileConnector">
<properties>
<property name="pollingFrequency" value="1000"/>
<property name="outputPattern" value="${DATE}.xml"/>
<property name="binaryMode" value="false"/>
</properties>
</connector>
<model name="fileProviderSample">
<mule-descriptor name="ProcessUMO"
inboundEndpoint="file://inbound/myFiles"
outboundEndpoint="file://outbound/myFiles"
implementation="org.mule.samples.fileProvider.Component">
</mule-descriptor>
</model>
</mule-configuration>
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 74
A Closer Look at Mule
Configuration
Pooling Profile
• Pooling behavior of the Mule UMO Components
• Scoped to …
<mule-model/>
All Components
<mule-descriptor/> contained in the Model
Specific Component
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 75
A Closer Look at Mule
Configuration
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 76
A Closer Look at Mule
Configuration
Threading Profiles
• Controls thread pool behavior in Mule
org.mule.config.ThreadingProfile
• Pool Executor
Doug Lea’s Concurrency APIs / JDK 1.5
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 77
A Closer Look at Mule
Configuration
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 78
A Closer Look at Mule
Configuration
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 79
A Closer Look at Mule
Configuring Programmatically
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 80
A Closer Look at Mule
Alternate Configuration Builders
Spring Integration• Using Spring as a Component Factory
• Configuring the Mule Server From a Spring Context
• Configuring a Spring context using Mule XML
• Mule Events in Spring
Additional Information on Spring Integration• http://mule.codehaus.org/Spring+Integration
Inversion of Control / Dependency Injection Containers
• Pico
• Plexus
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 81
A Closer Look at Mule
Mule Manager
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 82
A Closer Look at Mule
The Model
Encapsulates and manages runtime behavior ofa Mule Server Instance.
The details describing this instance arecontained in the Mule Configuration file.
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 83
A Closer Look at Mule
Two Control Mechanisms to determine howMule invokes a UMO component:
Entry Point Resolver
Life Cycle Adapter
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 84
A Closer Look at Mule
Entry Point Resolverorg.mule.umo.model.UMOEntryPointResolver interface
Determines which method to invoke on an UMOcomponent when event is received
Extend EntryPointResolver
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 85
A Closer Look at Mule
Entry Point ResolverChecks to see if the component implements the Callable lifecycle interface, then theonCall(UMOEvent) method will be used to receive the event.
If the component has a transformer configured for it, the return type for thetransformer will be matched against methods on the component to see if there is amethod that accepts the transformer return type. If so this event will be used. Noteif there is more than one match, an exception will be thrown.
If there is a method on the component that accepts an org.mule.umo.UMOEvent. Ifso this event will be used. Note if there is more than one match, an exception will bethrown.
The last check determines if there are any methods on the component that accept ajava.util.Event. If so this event will be used. Note if there is more than one match,an exception will be thrown.
If none of the above find a match an exception will be thrown and the componentregistration will fail.
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 86
A Closer Look at Mule
Lifecycle AdapterDefault ConstructorDefault Constructor
InitialiseInitialiseOrg.mule.Org.mule.umoumo.lifecycle..lifecycle.initialisableinitialisable
StartStartOrg.mule.Org.mule.umoumo.lifecycle..lifecycle.StartableStartable
OnCallOnCallOrg.mule.Org.mule.umoumo..lifecylelifecyle.Callable.Callable
StopStopOrg.mule.Org.mule.umoumo.lifecycle.Stoppable.lifecycle.Stoppable
DisposeDisposeOrg.mule.Org.mule.umoumo.lifecycle.Disposable.lifecycle.Disposable
Called when the component is Called when the component is
resolvedresolved
Called when the component is Called when the component is
registered with the Mule Modelregistered with the Mule Model
Called when the server is started Called when the server is started
Called when an event is received forCalled when an event is received for
the component.the component. By configuring anBy configuring an
EntryPointResolver EntryPointResolver this method canthis method can
be resolved to any method on yourbe resolved to any method on your
object object
Called when the Mule server isCalled when the Mule server is
Stopped.Stopped. The server can beThe server can be
Restarted. Restarted.
Called when the Mule server isCalled when the Mule server is
Shutdown.Shutdown. Clear up any resources. Clear up any resources.
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 87
A Closer Look at Mule
EventsAsynchronous
• Many events can be processed by the same component at thesame time in different threads.
Synchronous• Entire request processed in a single thread of execution.
Request-Response• Request for an event, wait predefined timeout for response to
enable aggregation of intermediary responses.
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 88
A Closer Look at Mule
Asynchronous Events
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 89
A Closer Look at Mule
Synchronous Events
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 90
A Closer Look at MuleTransactions
Agnostic to the underlying transaction manager
Mule transactions are configured on inbound endpoints
XA TransactionsXA transactions can be used if you want to enlist multiple managedresources within the same transaction.
Three providers support XA transaction (i) VM (ii) JDBC (iii) JMS
JOTMTransaction support outside of application server.
Additional Informationhttp://mule.codehaus.org/Transaction+Management
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 91
A Closer Look at Mule
Securityauthenticate requests via endpoints using transport specific orgeneric authentication methods.
Securing MuleConfigure a Security Manager on the Mule Manager
• Setup one or more Security ProvidersAcegi Security
Configure the Security filter on the object to secure.
Additional Informationhttp://mule.codehaus.org/Mule+Security
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 92
A Closer Look at Mule
JNDIhttp://mule.codehaus.org/Jndi+Container
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 93
A Closer Look at Mule
Mule Clienthttp://mule.codehaus.org/Mule+Client
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 94
A Closer Look at MuleConfiguring JMS
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 95
A Closer Look at MuleConfiguring JMS
http://mule.codehaus.org/Configuring+Jms
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 96
A Closer Look at MuleConfiguring Properties
Most of the configuration elements in the Mule Xml configuration can have a<properties> element. This defines a set of bean properties that will be set on anobject using standard getters and setters. As such, the properties names themselvesmust follow the JavaBean naming convention where the 'get' or 'set' part of theproperty method is removed and the first character of the property name islowercase. So for a bean that has a methods getTestProperty() andsetTestProperty(...) the property name is testProperty.
<properties> <property name="testProperty" value="foo"/>
</properties>
If a property is of type boolean, int, long, double, byte or float it will beautomatically converted to the correct type. Properties can also be Maps,Lists arrays,System properties, objects from a configured IoC container andfactory objects. Each of these are described in more detail below.
Addl Info: http://mule.codehaus.org/Configuring+Properties
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 97
Inside Mule, A Look at SEDA
Staged Event Driven ArchitectureMatthew David Welsh• Harvard, Assistant Professor of Computer Science
• University of California, Berkeley (1999)Thesis: “An Architecture for Highly Concurrent, Well-Conditioned Internet Services”
• NBIO: Nonblocking I/O for Javajava.nio package
SEDA & NBIO on Sourceforge
http://sourceforge.net/projects/seda
• Additional Resourceshttp://www.eecs.harvard.edu/~mdw/proj/seda/
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 98
Inside Mule, A Look at SEDA
Staged Event Driven Architecture GoalsSupport massive concurrency
Simplify the construction of well-conditionedservices:
Enable introspection:
Support self-tuning resource management:
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 99
Inside Mule, A Look at SEDA
Staged Event Driven Architecturedecompose complex, event-driven applications into a set of stagesconnected by queues.
avoids the high overhead associated with thread-based concurrencymodels, and decouples event and thread scheduling fromapplication logic.
By performing admission control on each event queue, the servicecan be well-conditioned to load, preventing resources from beingovercommitted when demand exceeds service capacity.
SEDA employs dynamic control to automatically tune runtimeparameters (such as the scheduling parameters of each stage), aswell as to manage load, for example, by performing adaptive loadshedding.
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 100
Inside Mule, A Look at SEDA
Staged Event Driven ArchitectureAn Architecture for Highly Concurrent, Well-ConditionedInternet Services
• http://www.eecs.harvard.edu/~mdw/papers/mdw-phdthesis.pdf
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 101
ESB Related Standards :Impacts and Considerations
JSR 208 - Java Business IntegrationBPEL - Business Process ExecutionLanguageXPDLContrast and Compare XPDL & BPEL
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 102
ESB Related Standards:Impacts and Considerations
Java Business Integration
JBI provides the core standards required to build SOA-based integration server software. It focuses onstandardising the interoperation semantics (andassociated bindings and interfaces) between what it callsservice engines and a normalized message router, whichlinks the engines together.
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 103
ESB Related Standards:Impacts and Considerations
JBI ComponentsService Engine
• The term Service Engine (SE) is used to refer to the portion of the JBIenvironment (or framework) that is responsible for exposing anapplication programming model to developers.
• JBI does not define an application programming model but ratherdefines a set of SPIs that enable the development of standard WebService “containers” that can seamlessly utilize multiple communicationinfrastructure ranging from HTTP/SOAP [ref.] to JMS/MOM [ref.] andincluding specialized AS1/AS2 EDI [ref.] communications stacks.
Binding Component• A Binding Component may choose to implement one or more
communications protocols thus offering connectivity services to SEs andthereby enabling SEs to expose their services to local and remoteconsumers as well as enabling the consumption of remote and localWeb Services.
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 104
ESB Related Standards:Impacts and Considerations
JMX & Web basedAdmin tools
JBI Environment
SE Life cycle& Services
ReconfigurationDeployment
ControlMonitoring
BC Life cycle& Services
Service Engine (SE) Framework
Normalized Message Service
Binding Comp (BC) Framework
WSDL-basedService Providers & Consumers
WS-IBC
\OtherBCs
BPELSE
\OtherSEs
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 105
ESB Standards:Impacts and Considerations
Mule-JBI UpdateThe Mule team are currently working on Mule-JBI
• a JBI (JSR-208) implementation that reuses the core mulearchitecture
Alpha Release available September 2, 2005; Beta TBA• All Mule components, transports, routers and transformers can
execute in any JBI container
Mule-JBI 1.0 will support the current alpha functionality,in addition to:
• allow 3rd-party JBI components to be managed in the Mulecontainer.
• Existing Mule users will be able to integrate with JBI containersincluding Mule-JBI.
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 106
ESB Related Standards:Impacts and Considerations
Workflow Management Coalition (“WfMC”)Founded in August, 1993
Non-profit, international organization of workflow stakeholders
Mission
• Increase the value of customers’ investment with workflow technology
• Decrease the risk of using workflow products
• Expand the workflow market through increasing awareness for workflow
Standards
• Wf-XML
• XPDL - Process Definition Language
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 107
ESB Standards:Impacts and Considerations
Executional processes versus a WFMS:
State of Workflow - Tom Baeyens jBPM
A recent trend in the BPM community is the convergence ofspecifications about executional business processes. The approachpromoted by XLANG, WSFL and BPML converged into BPEL. BPEL isbased on interactions (message exchanges). BPEL is defined in thecontext of a service-oriented architecture. One of the prerequisites isthat the services to be addressed are described in a WSDL declaration.BPEL then specifies an XML grammar that can be seen as aprogramming language to combine control flow with calls to theservices defined in WSDL.
http://www.jboss.com/products/jbpm/stateofworkflow
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 108
ESB Standards:Impacts and Considerations
State Based Workflow vs Executional BusinessProcess
State based WFMSs are centered around the notion of state (oractivity). The workflow engine maintains the state and calculatesthe transitions from one state to the next.
On the other hand, executional business processes like BPEL arecentered around the definition of reactions upon incoming message.A set of those reactions, along with some other bells and whistles,can be seen as a business process. That explains why BPEL issomewhat complementary to state based WFMSs. A BPELonMessage event handler, which is a reaction upon an incomingmessage, could be executed e.g. on transitions between states.
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 110
Building Enterprise Applicationswith Mule
Workflow Enterprise Integration PatternsItinerary-based Routing
• Message Splitter (259)
• Message Aggregator (268)
Content-based Routing• Composed Message Processor (294)
Message Splitter (259)
Content-based Router (230)
Context-based Routing• Dynamic Router (243)
Message Router (78)
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 111
Mule - A Detailed Look at anEnterprise Service Bus
Thank you
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 112
Building Enterprise Applicationswith Mule
Loan Broker (445)
Translator (85)
Aggregator (268)
Recipient List (249)
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 113
ReferencesMule Architecture Guide & Published Works, Symphony Soft
Ross MasonSEDA: An Architecture for Well-Conditioned, Scalable Internet Services
Matt Welsh, David Culler, and Eric Brewer. In Proceedings of the Eighteenth Symposium onOperating Systems Principles (SOSP-18), Banff, Canada, October, 2001.
http://www.eecs.harvard.edu/~mdw/papers/seda-sosp01.pdf
Software Engineering Institute, Carnegie Mellon
http://www.sei.cmu.edu/
Enterprise Service Bus
David A. Chappell - 2004
Super-Peer Architectures for Distributed Computing
Fiorano - 2003
The Evolution of Internet Scale Event Notification Services: Past, Present, and Future
Adam Rifkin and Rohit Khare
JBI Specification - JSR 208
Sun Microsystems
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 114
ReferencesLogicBlaze, ActiveMQ, ServiceMix
James Strachen
Constructing Software For Service Oriented Architecture , Attachmate
Jean-Jacques Dubray, Ph.D.
JBI, The Only Game in Town
Ronan Bradley - 2005
Microsoft Web Site
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnglobspec/html/wsspecsover.asp
Better, Faster, Lighter Java
Bruce Tate
Workflow Management Coalition Specification
The Workflow Reference Model
http://www.wfmc.org/standards/docs.htm
The State of Workflow
Tom Baeyens, jBPM Founder
http://www.jboss.com/products/jbpm/stateofworkflow
Colorado Software Summit: October 23 – 28, 2005 © Copyright 2005, Tendril Networks
Tom Bender — Mule – A Detailed Look at an Enterprise Service Bus Page 115
ReferencesFundamentals of Service Orientation, Attachmate
Jean-Jacques Dubray
Enterprise Integration Patterns, Addison Wesley
Gregor Hohpe & Bobby Woolf