SlideShare a Scribd company logo
1 of 40
M
D Copyright 2006-2009 Dan McCreary & Associates 1
The Enterprise Service Bus
Introduction using Mule
Introduction to Open-Source ESB
Authors: Dan McCreary and Arun Batchu
Date: 11/20/2006
Version: DRAFT 0.2
M
D Copyright 2006-2009 Dan McCreary & Associates 2
Agenda
• What is Mule?
• How do you use Mule?
• What are the core Mule concepts?
• Learning mule with File endpoints
M
D Copyright 2006-2009 Dan McCreary & Associates 3
Enterprise Service Backbone
• Mule is an open-source Enterprise Service
Backbone (ESB)
M
D Copyright 2006-2009 Dan McCreary & Associates 4
Mule is Has Advanced
Technologies
• SEDA
– Staged Event-Driven Architecture
• Java NIO
– Java New Input/Output
M
D Copyright 2006-2009 Dan McCreary & Associates 5
SEDA
• SEDA decomposes a complex, event-driven software application into a set
of stages connected by queues
• This design avoids the high overhead associated with thread-based
concurrency models, and decouples event and thread scheduling from
application logic
• By performing admission control on each event queue, the service can be
well-conditioned to load, preventing resources from being overcommitted
when demand exceeds service capacity
• SEDA employs dynamic control to automatically tune runtime parameters
(such as the scheduling parameters of each stage) as well as to manage
load, for example, by performing adaptive load shedding
• Decomposing services into a set of stages also enables modularity and code
reuse, as well as the development of debugging tools for complex event-
driven applications
M
D Copyright 2006-2009 Dan McCreary & Associates 6
Java NIO
• NIO is a collection of Java programming language APIs
that offer advanced features for intensive I/O operations
• NIO facilitates an implementations that can directly use the
most efficient operations of the underlying platform
• NIO includes:
– Buffers for data of primitive types
– Character set encoders and decoders
– A pattern-matching facility based on Perl-style regular expressions
(in package java.util.regex)
– Channels, a new primitive I/O abstraction
– A file interface that supports locks and memory mapping
– A multiplexed, non-blocking I/O facility for writing scalable
servers
M
D Copyright 2006-2009 Dan McCreary & Associates 7
Mule’s “Moves Things Around”
• Folder to folder
• Queue to queue
• Shared memory to shared memory
• Using different types of transports
• In a flexible way
M
D Copyright 2006-2009 Dan McCreary & Associates 8
XML Pipeline
• An XML pipeline is a series of operation
that are performed on one or more XML
files
• Examples include:
– validate
– transform
– prune (remove nodes)
– split (break a single XML file into many files)
– merge (join two or more files together)
M
D Copyright 2006-2009 Dan McCreary & Associates 9
CRV Example
• Flow of XML document through approval
processes
Submit
CRV
Deed
Matched
CRV
SSN
Stripped
CRV
Income
Tax
Audit
County
Audit
County
Approval
State
Audit
State
Approval
M
D Copyright 2006-2009 Dan McCreary & Associates 10
Decomposition
• Example of XML Operations used on CRV
Validate Split
Remove
SSN
Element
Store
Modify
Value
Add
Element
Modify
Value
Add
Element
M
D Copyright 2006-2009 Dan McCreary & Associates 11
Declarative Approach
• Focus on specifying "What" not "How"
• Empower business analysis to write
machine-readable specifications
• Hide the "How" behind services with clear
interfaces (SOA)
M
D Copyright 2006-2009 Dan McCreary & Associates 12
Core Mule Concepts
• Mule Manager
• Mule Model
• Universal Message Object (UMO)
• Endpoints
• External Applications
M
D Copyright 2006-2009 Dan McCreary & Associates 13
Universal Message Object (UMO)
• A UMO is a type of Java object that can
– receive events "from anywhere"
– send events
• UMO Components are usually your business
objects. They are components that execute
business logic on an incoming event
• UMO are standard JavaBeans (containers)
• There is no Mule-specific code in your
components
• Mule handles all routing and transformation of
events to and from your objects based on the
configuration of your component
M
D Copyright 2006-2009 Dan McCreary & Associates 14
Transport
• A transport or "provider", is a set of objects
that add support to Mule to handle a
specific kind of transport or protocol
• Examples
– the "Email Provider" enables Mule to send and
receive messages via the SMTP, POP and
IMAP protocols
M
D Copyright 2006-2009 Dan McCreary & Associates 15
Connector
• A connector is the object that sends and
receives messages on behalf of an endpoint.
• Connectors are bundled as part of specific
transports or providers.
• For example, the FileConnector can
read and write file system files.
M
D Copyright 2006-2009 Dan McCreary & Associates 16
Router
• A router is the object that do something
with messages once they have been
received by a connector, or prior to being
sent out by the connector
M
D Copyright 2006-2009 Dan McCreary & Associates 17
Filter
• A filter optionally filters incoming or outgoing
messages that are coming into or going out from a
connector.
• For example, the File Provider comes with a
FilenameWildcardFilter that restricts
which files are read by the connector based on file
name patterns. For example only files with the
.xml extension can be routed.
• Filters are used in conjunction with Routers.
M
D Copyright 2006-2009 Dan McCreary & Associates 18
Transformer
• A transformer optionally changes incoming
or outgoing messages in some way
• This is usually done to make the message
format useable by a downstream function
• Examples:
– the ByteArrayToString transformer converts
byte arrays into String objects.
M
D Copyright 2006-2009 Dan McCreary & Associates 19
Mule Event Flow
• The nine stages of a
mule event
– first 2 – inbound
– middle 4 –
component
– last 2 – outbound
Endpoint
(Message Receiver)
Endpoint
(Message Dispatcher)
Inbound Router
Outbound Router
Inbound Transformer
Outbound Transformer
Interceptor
Service Invocation
Interceptor
Inbound
Component
Outbound
Optional Step
M
D Copyright 2006-2009 Dan McCreary & Associates 20
Message Receiver Endpoint
• Some event triggers a
message flow
– A file being written into a
folder
– A message arriving on a
message queue
– A record in a database
– Data written to a socket
Endpoint
(Message Dispatcher)
Inbound Router
Outbound Router
Inbound Transformer
Outbound Transformer
Interceptor
Service Invocation
Interceptor
Endpoint
(Message Receiver)
M
D Copyright 2006-2009 Dan McCreary & Associates 21
Inbound Router
• The inbound router is the fist step in a
message. Functions typically
performed by an inbound router
– Filtering
– Remove duplicate messages
– Matching messages
– Aggregation (combining)
– Re-sequence data
– Forwarding
• See also
– IdempotentReceiver
– CorrolationAggregator
– CorrelationResequencer
Endpoint
(Message Dispatcher)
Inbound Router
Outbound Router
Inbound Transformer
Outbound Transformer
Interceptor
Service Invocation
Interceptor
Endpoint
(Message Receiver)
M
D Copyright 2006-2009 Dan McCreary & Associates 22
Interceptor
• Used to intercept message flow
into your service component
• Used trigger monitor/events or
interrupt the flow of the message
• Example: an authorization
interceptor could ensure that the
current request has the correct
credentials to invoke the service.
Endpoint
(Message Dispatcher)
Inbound Router
Outbound Router
Inbound Transformer
Outbound Transformer
Service Invocation
Interceptor
Endpoint
(Message Receiver)
Interceptor
M
D Copyright 2006-2009 Dan McCreary & Associates 23
Inbound Transformer
• If the inbound data is
not in the correct
format for the
service it must be
transformed at this
point
Endpoint
(Message Receiver)
Endpoint
(Message Dispatcher)
Inbound Router
Outbound Router
Outbound Transformer
Interceptor
Service Invocation
Interceptor
Inbound Transformer
M
D Copyright 2006-2009 Dan McCreary & Associates 24
Service Invocation
• The actual service is
performed
• In mule, this is generally a
Java object
• Service invocation can also
be a "pass through"
Endpoint
(Message Receiver)
Endpoint
(Message Dispatcher)
Inbound Router
Outbound Router
Outbound Transformer
Interceptor
Interceptor
Inbound Transformer
Service Invocation
M
D Copyright 2006-2009 Dan McCreary & Associates 25
Outbound Router
• Dispatching the data
to all the relevant
endpoints
Endpoint
(Message Receiver)
Endpoint
(Message Dispatcher)
Inbound Router
Outbound Transformer
Interceptor
Interceptor
Inbound Transformer
Service Invocation
Outbound Router
M
D Copyright 2006-2009 Dan McCreary & Associates 26
Built-in Router Classes
Inbound Outbound Response
Idempotent Receiver Filtering Outbound Router Response Aggregator
Selective Consumer Recipient List
Aggregator Multicasting Router
Resequencer Chaining Router
Forwarding Consumer Message Splitter
Filtering List Message
Splitter
Filtering Xml Message
Splitter
Exception Based Router
M
D Copyright 2006-2009 Dan McCreary & Associates 27
Outbound Transformer
• Any transformations that needs to be
done on the message after a service
has been performed on the message
can be executed before it is put into
the endpoint
• See Also
– EnvelopeInterceptor
Endpoint
(Message Receiver)
Endpoint
(Message Dispatcher)
Inbound Router
Interceptor
Interceptor
Inbound Transformer
Service Invocation
Outbound Router
Outbound Transformer
M
D Copyright 2006-2009 Dan McCreary & Associates 28
Test Environment
M
D Copyright 2006-2009 Dan McCreary & Associates 29
Omitted From Examples for Brevity
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mule-configuration PUBLIC "-//MuleSource
//DTD mule-configuration XML V1.0//EN"
"http://mule.mulesource.org/dtds/mule-
configuration.dtd">
M
D Copyright 2006-2009 Dan McCreary & Associates 30
Outline of Move All Files
<mule-configuration>
<model>
<mule-descriptor>
<inbound-router>
<endpoint
address="file:///c:/mule-class/in"/>
</inbound-router>
<outbound-router>
<router>
<endpoint
address="file:///c:/mule-class/out"/>
</router>
</outbound-router>
</mule-descriptor>
</model>
</mule-configuration>
M
D Copyright 2006-2009 Dan McCreary & Associates 31
Move All Files – Procedural Details
<mule-configuration id="Mule_File_Move" version=" 1.0">
<connector name="SystemStreamConnector"
className="org.mule.providers.stream.SystemStreamConnector"
/>
<model name="move-all-files">
<mule-descriptor name="move-file"
implementation="org.mule.components.simple.BridgeComponent"
>
<inbound-router>
<endpoint address="file:///c:/tmp/in"/>
</inbound-router>
<outbound-router>
<router
className="org.mule.routing.outbound.OutboundPassThroughRou
ter">
<endpoint address="file:///c:/tmp/out"/>
</router>
</outbound-router>
</mule-descriptor>
</model>
</mule-configuration>
M
D Copyright 2006-2009 Dan McCreary & Associates 32
Only Moving XML Files
<inbound-router>
<endpoint address="file:///c:/mule-class/in">
<filter pattern="*.xml"
className=
"org.mule.providers.file.filters.FilenameWildcardFilter"/>
</endpoint>
</inbound-router>
Add the filter line to only move files with the extension
"*.xml". If you add a file "foobar.txt to the input folder it
will not be moved.
M
D Copyright 2006-2009 Dan McCreary & Associates 33
Keeping the Name The Same
<outbound-router>
<router
className="org.mule.routing.outbound.OutboundPassThroughRouter">
<endpoint
address=
"file:///c:/mule-class/out?outputPattern=$[ORIGINALNAME]"
/>
</router>
</outbound-router>
Add the outputPattern parameter to keep the output
name the same as the input.
M
D Copyright 2006-2009 Dan McCreary & Associates 34
Happy Path and Exceptions
• By default, error free documents follow a central path known as
the "happy path"
• Documents that have errors may be handled in different ways
(rejected, warnings etc.)
Start Stop
Step 1 Step 2 Step 3
Stop Stop Stop
M
D Copyright 2006-2009 Dan McCreary & Associates 35
Exception Handling
• Mule has a special way of handling non-happy path processing. This
is called an "Exception Strategy" but is it really just and exception path
and there is very little strategy involved.
• There are three places you can associate an exception strategy
– connector
– component
– model (set for all components in a model)
M
D Copyright 2006-2009 Dan McCreary & Associates 36
Exception Strategy
<exception-strategy
className=org.mule.impl.DefaultComponentExceptionStrategy">
<endpoint address="file:///c:/mule-class/error"/>
</exception-strategy>
We want all invalid documents to be moved into the
error folder.
M
D Copyright 2006-2009 Dan McCreary & Associates 37
Sample XML
<?xml version="1.0" encoding="UTF-8"?>
<Data>
<Element1>Hello World!</Element1>
<Element2>String</Element2>
<Element3>String</Element3>
<DansInvalidDataElement>This is Dans invalid data element</DansInvalidDataElement>
</Data>
XML Schema validation will generate an error message
when it gets to the fourth invalid data element:
Given the following XML Schema file:
M
D Copyright 2006-2009 Dan McCreary & Associates 38
Validating against an XML Schema
<outbound-router>
<router className="org.mule.routing.outbound.FilteringXmlMessageSplitter">
<endpoint
address="file:///c:/mule-class/out?outputPattern=$[ORIGINALNAME]"/>
<properties>
<property name="validateSchema" value="true"/>
<property name="externalSchemaLocation"
value="file:///c:/mule-class/labs/07-validate/my-
schema.xsd"/>
</properties>
</router>
</outbound-router>
To validate the XML Schema, just add two properties:
1) tell it to validate the document
2) tell it what file to use and where to find it
M
D Copyright 2006-2009 Dan McCreary & Associates 39
Error Message
document : cvc-complex-type.2.4.d: Invalid content was found
starting with element 'DansInvalidDataElement'. No child
element is expected at this point.
This error message is generated on the Mule console
when an invalid data element is found. But what should
we do with it? How do we redirect it to the appropriate
user?
M
D Copyright 2006-2009 Dan McCreary & Associates 40
Thank You!
Please contact me for more information:
• Enterprise Service Bus
• Enterprise Integration
• Metadata Management
• Metadata Registries
• Service Oriented Architectures
• Business Intelligence and Data Warehouse
• Semantic Web
Dan McCreary, President
Dan McCreary & Associates
Metadata Strategy Development
dan@danmccreary.com
(952) 931-9198

More Related Content

Similar to mule-overview.ppt

Overview of Mule
Overview of MuleOverview of Mule
Overview of Mulemdfkhan625
 
ESB introduction using Mule
ESB introduction using MuleESB introduction using Mule
ESB introduction using MuleKhasim Cise
 
IoT Seminar (Jan. 2016) - (1) dr omar elloumi - onem2m interworking and seman...
IoT Seminar (Jan. 2016) - (1) dr omar elloumi - onem2m interworking and seman...IoT Seminar (Jan. 2016) - (1) dr omar elloumi - onem2m interworking and seman...
IoT Seminar (Jan. 2016) - (1) dr omar elloumi - onem2m interworking and seman...Open Mobile Alliance
 
Mule esb basic introduction
Mule esb basic introductionMule esb basic introduction
Mule esb basic introductionSon Nguyen
 
IoT/M2M Service Delivery Platforms
IoT/M2M Service Delivery PlatformsIoT/M2M Service Delivery Platforms
IoT/M2M Service Delivery PlatformsNicolas Damour
 
Introduction(2)
Introduction(2)Introduction(2)
Introduction(2)trayyoo
 
Camel oneactivemq posta-final
Camel oneactivemq posta-finalCamel oneactivemq posta-final
Camel oneactivemq posta-finalChristian Posta
 
An introduction to Apache Camel
An introduction to Apache CamelAn introduction to Apache Camel
An introduction to Apache CamelKapil Kumar
 
oneM2M - taking a look inside
oneM2M -  taking a look insideoneM2M -  taking a look inside
oneM2M - taking a look insideoneM2M
 
OPC UA Connectivity with InduSoft and the OPC Foundation
OPC UA Connectivity with InduSoft and the OPC FoundationOPC UA Connectivity with InduSoft and the OPC Foundation
OPC UA Connectivity with InduSoft and the OPC FoundationAVEVA
 

Similar to mule-overview.ppt (20)

Mule overview
Mule overviewMule overview
Mule overview
 
Mule Overview
Mule OverviewMule Overview
Mule Overview
 
Mule overview
Mule overviewMule overview
Mule overview
 
Overview of Mule
Overview of MuleOverview of Mule
Overview of Mule
 
Mule overview
Mule overviewMule overview
Mule overview
 
Mulesoftppt
Mulesoftppt Mulesoftppt
Mulesoftppt
 
ESB introduction using Mule
ESB introduction using MuleESB introduction using Mule
ESB introduction using Mule
 
Overview of Mule
Overview of MuleOverview of Mule
Overview of Mule
 
Mule overview
Mule overviewMule overview
Mule overview
 
Mule overview-ppt
Mule overview-pptMule overview-ppt
Mule overview-ppt
 
Mule esb usecase
Mule esb usecaseMule esb usecase
Mule esb usecase
 
OMA Lightweight M2M
OMA Lightweight M2M OMA Lightweight M2M
OMA Lightweight M2M
 
IoT Seminar (Jan. 2016) - (1) dr omar elloumi - onem2m interworking and seman...
IoT Seminar (Jan. 2016) - (1) dr omar elloumi - onem2m interworking and seman...IoT Seminar (Jan. 2016) - (1) dr omar elloumi - onem2m interworking and seman...
IoT Seminar (Jan. 2016) - (1) dr omar elloumi - onem2m interworking and seman...
 
Mule esb basic introduction
Mule esb basic introductionMule esb basic introduction
Mule esb basic introduction
 
IoT/M2M Service Delivery Platforms
IoT/M2M Service Delivery PlatformsIoT/M2M Service Delivery Platforms
IoT/M2M Service Delivery Platforms
 
Introduction(2)
Introduction(2)Introduction(2)
Introduction(2)
 
Camel oneactivemq posta-final
Camel oneactivemq posta-finalCamel oneactivemq posta-final
Camel oneactivemq posta-final
 
An introduction to Apache Camel
An introduction to Apache CamelAn introduction to Apache Camel
An introduction to Apache Camel
 
oneM2M - taking a look inside
oneM2M -  taking a look insideoneM2M -  taking a look inside
oneM2M - taking a look inside
 
OPC UA Connectivity with InduSoft and the OPC Foundation
OPC UA Connectivity with InduSoft and the OPC FoundationOPC UA Connectivity with InduSoft and the OPC Foundation
OPC UA Connectivity with InduSoft and the OPC Foundation
 

More from NalamalpuBhakthavats

More from NalamalpuBhakthavats (6)

chapter03.ppt
chapter03.pptchapter03.ppt
chapter03.ppt
 
Joline1.PPT
Joline1.PPTJoline1.PPT
Joline1.PPT
 
using-integrations-oracle-integration.pdf
using-integrations-oracle-integration.pdfusing-integrations-oracle-integration.pdf
using-integrations-oracle-integration.pdf
 
apex41-new-features-487382.ppt
apex41-new-features-487382.pptapex41-new-features-487382.ppt
apex41-new-features-487382.ppt
 
ofm-msft-interop-v5c-132827.ppt
ofm-msft-interop-v5c-132827.pptofm-msft-interop-v5c-132827.ppt
ofm-msft-interop-v5c-132827.ppt
 
ow.ppt
ow.pptow.ppt
ow.ppt
 

Recently uploaded

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 

Recently uploaded (20)

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 

mule-overview.ppt

  • 1. M D Copyright 2006-2009 Dan McCreary & Associates 1 The Enterprise Service Bus Introduction using Mule Introduction to Open-Source ESB Authors: Dan McCreary and Arun Batchu Date: 11/20/2006 Version: DRAFT 0.2
  • 2. M D Copyright 2006-2009 Dan McCreary & Associates 2 Agenda • What is Mule? • How do you use Mule? • What are the core Mule concepts? • Learning mule with File endpoints
  • 3. M D Copyright 2006-2009 Dan McCreary & Associates 3 Enterprise Service Backbone • Mule is an open-source Enterprise Service Backbone (ESB)
  • 4. M D Copyright 2006-2009 Dan McCreary & Associates 4 Mule is Has Advanced Technologies • SEDA – Staged Event-Driven Architecture • Java NIO – Java New Input/Output
  • 5. M D Copyright 2006-2009 Dan McCreary & Associates 5 SEDA • SEDA decomposes a complex, event-driven software application into a set of stages connected by queues • This design avoids the high overhead associated with thread-based concurrency models, and decouples event and thread scheduling from application logic • By performing admission control on each event queue, the service can be well-conditioned to load, preventing resources from being overcommitted when demand exceeds service capacity • SEDA employs dynamic control to automatically tune runtime parameters (such as the scheduling parameters of each stage) as well as to manage load, for example, by performing adaptive load shedding • Decomposing services into a set of stages also enables modularity and code reuse, as well as the development of debugging tools for complex event- driven applications
  • 6. M D Copyright 2006-2009 Dan McCreary & Associates 6 Java NIO • NIO is a collection of Java programming language APIs that offer advanced features for intensive I/O operations • NIO facilitates an implementations that can directly use the most efficient operations of the underlying platform • NIO includes: – Buffers for data of primitive types – Character set encoders and decoders – A pattern-matching facility based on Perl-style regular expressions (in package java.util.regex) – Channels, a new primitive I/O abstraction – A file interface that supports locks and memory mapping – A multiplexed, non-blocking I/O facility for writing scalable servers
  • 7. M D Copyright 2006-2009 Dan McCreary & Associates 7 Mule’s “Moves Things Around” • Folder to folder • Queue to queue • Shared memory to shared memory • Using different types of transports • In a flexible way
  • 8. M D Copyright 2006-2009 Dan McCreary & Associates 8 XML Pipeline • An XML pipeline is a series of operation that are performed on one or more XML files • Examples include: – validate – transform – prune (remove nodes) – split (break a single XML file into many files) – merge (join two or more files together)
  • 9. M D Copyright 2006-2009 Dan McCreary & Associates 9 CRV Example • Flow of XML document through approval processes Submit CRV Deed Matched CRV SSN Stripped CRV Income Tax Audit County Audit County Approval State Audit State Approval
  • 10. M D Copyright 2006-2009 Dan McCreary & Associates 10 Decomposition • Example of XML Operations used on CRV Validate Split Remove SSN Element Store Modify Value Add Element Modify Value Add Element
  • 11. M D Copyright 2006-2009 Dan McCreary & Associates 11 Declarative Approach • Focus on specifying "What" not "How" • Empower business analysis to write machine-readable specifications • Hide the "How" behind services with clear interfaces (SOA)
  • 12. M D Copyright 2006-2009 Dan McCreary & Associates 12 Core Mule Concepts • Mule Manager • Mule Model • Universal Message Object (UMO) • Endpoints • External Applications
  • 13. M D Copyright 2006-2009 Dan McCreary & Associates 13 Universal Message Object (UMO) • A UMO is a type of Java object that can – receive events "from anywhere" – send events • UMO Components are usually your business objects. They are components that execute business logic on an incoming event • UMO are standard JavaBeans (containers) • There is no Mule-specific code in your components • Mule handles all routing and transformation of events to and from your objects based on the configuration of your component
  • 14. M D Copyright 2006-2009 Dan McCreary & Associates 14 Transport • A transport or "provider", is a set of objects that add support to Mule to handle a specific kind of transport or protocol • Examples – the "Email Provider" enables Mule to send and receive messages via the SMTP, POP and IMAP protocols
  • 15. M D Copyright 2006-2009 Dan McCreary & Associates 15 Connector • A connector is the object that sends and receives messages on behalf of an endpoint. • Connectors are bundled as part of specific transports or providers. • For example, the FileConnector can read and write file system files.
  • 16. M D Copyright 2006-2009 Dan McCreary & Associates 16 Router • A router is the object that do something with messages once they have been received by a connector, or prior to being sent out by the connector
  • 17. M D Copyright 2006-2009 Dan McCreary & Associates 17 Filter • A filter optionally filters incoming or outgoing messages that are coming into or going out from a connector. • For example, the File Provider comes with a FilenameWildcardFilter that restricts which files are read by the connector based on file name patterns. For example only files with the .xml extension can be routed. • Filters are used in conjunction with Routers.
  • 18. M D Copyright 2006-2009 Dan McCreary & Associates 18 Transformer • A transformer optionally changes incoming or outgoing messages in some way • This is usually done to make the message format useable by a downstream function • Examples: – the ByteArrayToString transformer converts byte arrays into String objects.
  • 19. M D Copyright 2006-2009 Dan McCreary & Associates 19 Mule Event Flow • The nine stages of a mule event – first 2 – inbound – middle 4 – component – last 2 – outbound Endpoint (Message Receiver) Endpoint (Message Dispatcher) Inbound Router Outbound Router Inbound Transformer Outbound Transformer Interceptor Service Invocation Interceptor Inbound Component Outbound Optional Step
  • 20. M D Copyright 2006-2009 Dan McCreary & Associates 20 Message Receiver Endpoint • Some event triggers a message flow – A file being written into a folder – A message arriving on a message queue – A record in a database – Data written to a socket Endpoint (Message Dispatcher) Inbound Router Outbound Router Inbound Transformer Outbound Transformer Interceptor Service Invocation Interceptor Endpoint (Message Receiver)
  • 21. M D Copyright 2006-2009 Dan McCreary & Associates 21 Inbound Router • The inbound router is the fist step in a message. Functions typically performed by an inbound router – Filtering – Remove duplicate messages – Matching messages – Aggregation (combining) – Re-sequence data – Forwarding • See also – IdempotentReceiver – CorrolationAggregator – CorrelationResequencer Endpoint (Message Dispatcher) Inbound Router Outbound Router Inbound Transformer Outbound Transformer Interceptor Service Invocation Interceptor Endpoint (Message Receiver)
  • 22. M D Copyright 2006-2009 Dan McCreary & Associates 22 Interceptor • Used to intercept message flow into your service component • Used trigger monitor/events or interrupt the flow of the message • Example: an authorization interceptor could ensure that the current request has the correct credentials to invoke the service. Endpoint (Message Dispatcher) Inbound Router Outbound Router Inbound Transformer Outbound Transformer Service Invocation Interceptor Endpoint (Message Receiver) Interceptor
  • 23. M D Copyright 2006-2009 Dan McCreary & Associates 23 Inbound Transformer • If the inbound data is not in the correct format for the service it must be transformed at this point Endpoint (Message Receiver) Endpoint (Message Dispatcher) Inbound Router Outbound Router Outbound Transformer Interceptor Service Invocation Interceptor Inbound Transformer
  • 24. M D Copyright 2006-2009 Dan McCreary & Associates 24 Service Invocation • The actual service is performed • In mule, this is generally a Java object • Service invocation can also be a "pass through" Endpoint (Message Receiver) Endpoint (Message Dispatcher) Inbound Router Outbound Router Outbound Transformer Interceptor Interceptor Inbound Transformer Service Invocation
  • 25. M D Copyright 2006-2009 Dan McCreary & Associates 25 Outbound Router • Dispatching the data to all the relevant endpoints Endpoint (Message Receiver) Endpoint (Message Dispatcher) Inbound Router Outbound Transformer Interceptor Interceptor Inbound Transformer Service Invocation Outbound Router
  • 26. M D Copyright 2006-2009 Dan McCreary & Associates 26 Built-in Router Classes Inbound Outbound Response Idempotent Receiver Filtering Outbound Router Response Aggregator Selective Consumer Recipient List Aggregator Multicasting Router Resequencer Chaining Router Forwarding Consumer Message Splitter Filtering List Message Splitter Filtering Xml Message Splitter Exception Based Router
  • 27. M D Copyright 2006-2009 Dan McCreary & Associates 27 Outbound Transformer • Any transformations that needs to be done on the message after a service has been performed on the message can be executed before it is put into the endpoint • See Also – EnvelopeInterceptor Endpoint (Message Receiver) Endpoint (Message Dispatcher) Inbound Router Interceptor Interceptor Inbound Transformer Service Invocation Outbound Router Outbound Transformer
  • 28. M D Copyright 2006-2009 Dan McCreary & Associates 28 Test Environment
  • 29. M D Copyright 2006-2009 Dan McCreary & Associates 29 Omitted From Examples for Brevity <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mule-configuration PUBLIC "-//MuleSource //DTD mule-configuration XML V1.0//EN" "http://mule.mulesource.org/dtds/mule- configuration.dtd">
  • 30. M D Copyright 2006-2009 Dan McCreary & Associates 30 Outline of Move All Files <mule-configuration> <model> <mule-descriptor> <inbound-router> <endpoint address="file:///c:/mule-class/in"/> </inbound-router> <outbound-router> <router> <endpoint address="file:///c:/mule-class/out"/> </router> </outbound-router> </mule-descriptor> </model> </mule-configuration>
  • 31. M D Copyright 2006-2009 Dan McCreary & Associates 31 Move All Files – Procedural Details <mule-configuration id="Mule_File_Move" version=" 1.0"> <connector name="SystemStreamConnector" className="org.mule.providers.stream.SystemStreamConnector" /> <model name="move-all-files"> <mule-descriptor name="move-file" implementation="org.mule.components.simple.BridgeComponent" > <inbound-router> <endpoint address="file:///c:/tmp/in"/> </inbound-router> <outbound-router> <router className="org.mule.routing.outbound.OutboundPassThroughRou ter"> <endpoint address="file:///c:/tmp/out"/> </router> </outbound-router> </mule-descriptor> </model> </mule-configuration>
  • 32. M D Copyright 2006-2009 Dan McCreary & Associates 32 Only Moving XML Files <inbound-router> <endpoint address="file:///c:/mule-class/in"> <filter pattern="*.xml" className= "org.mule.providers.file.filters.FilenameWildcardFilter"/> </endpoint> </inbound-router> Add the filter line to only move files with the extension "*.xml". If you add a file "foobar.txt to the input folder it will not be moved.
  • 33. M D Copyright 2006-2009 Dan McCreary & Associates 33 Keeping the Name The Same <outbound-router> <router className="org.mule.routing.outbound.OutboundPassThroughRouter"> <endpoint address= "file:///c:/mule-class/out?outputPattern=$[ORIGINALNAME]" /> </router> </outbound-router> Add the outputPattern parameter to keep the output name the same as the input.
  • 34. M D Copyright 2006-2009 Dan McCreary & Associates 34 Happy Path and Exceptions • By default, error free documents follow a central path known as the "happy path" • Documents that have errors may be handled in different ways (rejected, warnings etc.) Start Stop Step 1 Step 2 Step 3 Stop Stop Stop
  • 35. M D Copyright 2006-2009 Dan McCreary & Associates 35 Exception Handling • Mule has a special way of handling non-happy path processing. This is called an "Exception Strategy" but is it really just and exception path and there is very little strategy involved. • There are three places you can associate an exception strategy – connector – component – model (set for all components in a model)
  • 36. M D Copyright 2006-2009 Dan McCreary & Associates 36 Exception Strategy <exception-strategy className=org.mule.impl.DefaultComponentExceptionStrategy"> <endpoint address="file:///c:/mule-class/error"/> </exception-strategy> We want all invalid documents to be moved into the error folder.
  • 37. M D Copyright 2006-2009 Dan McCreary & Associates 37 Sample XML <?xml version="1.0" encoding="UTF-8"?> <Data> <Element1>Hello World!</Element1> <Element2>String</Element2> <Element3>String</Element3> <DansInvalidDataElement>This is Dans invalid data element</DansInvalidDataElement> </Data> XML Schema validation will generate an error message when it gets to the fourth invalid data element: Given the following XML Schema file:
  • 38. M D Copyright 2006-2009 Dan McCreary & Associates 38 Validating against an XML Schema <outbound-router> <router className="org.mule.routing.outbound.FilteringXmlMessageSplitter"> <endpoint address="file:///c:/mule-class/out?outputPattern=$[ORIGINALNAME]"/> <properties> <property name="validateSchema" value="true"/> <property name="externalSchemaLocation" value="file:///c:/mule-class/labs/07-validate/my- schema.xsd"/> </properties> </router> </outbound-router> To validate the XML Schema, just add two properties: 1) tell it to validate the document 2) tell it what file to use and where to find it
  • 39. M D Copyright 2006-2009 Dan McCreary & Associates 39 Error Message document : cvc-complex-type.2.4.d: Invalid content was found starting with element 'DansInvalidDataElement'. No child element is expected at this point. This error message is generated on the Mule console when an invalid data element is found. But what should we do with it? How do we redirect it to the appropriate user?
  • 40. M D Copyright 2006-2009 Dan McCreary & Associates 40 Thank You! Please contact me for more information: • Enterprise Service Bus • Enterprise Integration • Metadata Management • Metadata Registries • Service Oriented Architectures • Business Intelligence and Data Warehouse • Semantic Web Dan McCreary, President Dan McCreary & Associates Metadata Strategy Development dan@danmccreary.com (952) 931-9198