SlideShare a Scribd company logo
• Overview of ESB
• Introduction to Mule
• Mule and JBI
• Real-world Application
 Application Overview
 Systems Involved
 Design Considerations
 Event Flows
• Implementation with Mule
 Components
 Transports
 Returning the Loan Quote
 Fault Tolerance
 Scaling
• Summary
 What is it?
 Enterprise Service Bus is an evolving architecture technique to integrate
incompatible business applications over a common messaging bus.
 Why do we need it?
 Many of the applications we write are in fact integration projects. Only
the most simple applications do not need to interact with other
applications.
 Where does SOA fit in?
 ESB is one architecture style that abides by the rules of a Service
Orientated Architecture.
 What is JBI?
 Java Business Integration (JSR:208) is an emerging standard that defines
common interfaces for components and message exchanges for
application integration.
 Does this all sound familiar?
 There is nothing new about integration, we've been doing it for years.
So why the hype?
• Loosely Coupled
• Event-Driven
• Highly Distributed
• Security/Authorization
• Abstract Endpoints
• Intelligent Routing
• Data Transformation (inbound/outbound)
• Reliable Messaging
• Multi-Protocol Message Bus
• Light Weight
• Service container and messaging platform
• Supports a variety of topologies including ESB
• Highly Scalable; uses SEDA event model
• Lightweight and embeddable
• Transactional; Local and Distributed
• Fault tolerance; Exception management
• Secure; authentication/authorization (Using
Spring/Acegi)
• Powerful event routing capabilities (based on EIP book)
• Support for over 20 messaging protocols/transports
• End-to-End Data Transformation
• Management and Monitoring using JMX
• BPEL Support
• Deployment: JAR, WAR, RAR, EAR.
Enterprise Service Bus
Client/Server and Hub n' Spoke
Peer Network
Pipeline
Enterprise Service Network
 Is Mule a JBI container?
 There is a separate project called Mule JBI that is a JBI implementation
that reuses the Mule service stack.
 Does Mule work with JBI?
 You can use Mule transports, components and transformers inside any
JBI container. Mule provides a couple of components that allows JBI
components to subscribe and publish events to and from Mule.
 Do Mule and JBI compete?
 JBI solves a subset of messaging problems. Mule addresses the basic
need to move any kind of data (not just XML) between services in an
organization
 Which is best for me?
 Mule of course!
 The reason Mule integrates with other JBI engines and provides it own
JBI container is that one integration solution will never satisfy all
integration needs.
 Mule levels the playing field allowing you to pick and choose which
technologies to integrate with.
 JBI
 Described in terms of Service Engines (SEs) which are akin to
components that execute business logic.
 Binding Components (BCs) implement protocols to provide
connectivity to SEs.
 JBI uses a Message Exchange to manage interactions between
components.
 Targeted a specifically at integration. Normalized Message
 Mule
 Components are POJOs, EJBs, Spring Beans, Remote objects.
 The component never needs to call Mule APIs making them totally
portable.
 Flexible endpoint model where a component may have zero or more
inbound and outbound endpoints.
 Message routing is done via routers that are associated with the
component.
 Mule is a ubiquitous messaging platform.
 A distributed container for wiring components.
A Real World Example
 Customer calls different banks to find the best deal.
 Each bank asks customer for his or her social security number, the
amount of the loan and the desired term.
 Each bank then investigates the customer's credit background, usually
by contacting a credit agency, before it finally sends the customer a
quote.
 Once the customer has received quotes from all banks, he or she can
then select the best offer, i.e. the lowest rate. [1]
 This process can be automated to allow customers to obtain the
best quote on-line from a far broader range of banks, in much less
time than if he or she were to obtain all the quotes one by one.
 Upon receiving customer request, Loan Broker:
 obtains the credit information for that customer from the credit agency
 requests quotes for the customer from banks listed with the Lender
Service
 sends aggregate compilation of quotes to the customer for selection.
[2]
Loan Broker Service Receives LoanRequests (customer, SS
number, loan amount, duration) and is
responsible for aggregating LoanQuotes
into response for the request.
Credit Agency Service An external service provider that provides
crediting checking on customers to ensure
the loan amount requested is feesible.
Credit Agency Gateway Marshals a request between the message
bus and the Credit Agency Application.
Lender Service Based on the customer's credit scoring,
loan amount and duration, the lender
service will select banks from which to
request a LoanQuote.
Lender Gateway Marshals a request from the message bus
to the Lender Application.
Banking Gateway Dispatches LoanRequests to one or more
banks.
 LoanBroker (Http/Rest)
 Receives Requests over Http from a client application, such as a web browser.
 Credit Agency (EJB)
 Is an EJB application that is managed by the Loan Broker company. It exposes
an EJB called creditAgency with a method getCreditProfile.
 Lender Application (VM)
 Is a local component, a Pojo that will determine which lenders should be used.
 Banks (SOAP)
 For simplicity of this example all banks expose the same WS interface, though
it's quite feasible to configure Mule to invoke different interfaces for different
banks.
 Gateways (JMS)
 Gateways marshal the requests from the message bus to external applications
and services.
 Constraints
 Application needs to support request/response processing
model.
 Will get a high volume of requests.
 Synchronous processing will not give us enough throughput.
 Transports
 Using a JMS message bus
 Need to invoke services over JMS, Http/Rest, VM, and SOAP.
 Need to invoke services in external application containers
(EJB).
 Expose components as Web services (Banks).
 Message
 The message on the bus is referred to as a LoanQuoteRequest.
In this example this is a Java bean but in real scenarios an XML
1. Client application makes a request sending the LoanBroker a
CustomerQuoteRequest Message.
2. LoanBroker creates a LoanQuoteRequest Message.
3. Mule sends the message to the Credit Agency Gateway via JMS
4. The Gateway marshals the request and invokes the CreditAgency EJB.
The component used in the RelectionMessageBuilder which automatically
attaches the CreditProfile to the LoanQuoteRequest message.
5. Mule sends the Message to the Lender Gateway via JMS
6. The Gateway uses the VM transport to invoke the Lender Application.
7. Mule sends the Message to the Banking Gateway via JMS
8. The Banking Gateway in this example invokes the Banks using SOAP.
9. Each of the Banks attaches a quote to the request and sends it back to the
LoanBroker via the ReplyTo address provided by the Banking Gateway.
10. The ResponseRouter on the Loan Broker Service receives the responses on
the ReplyTo address. It selects the lowest quote received for the request
and returns it to the client.
Implementation with Mule
Lets start by defining the LoanQuoteRequest Message. In this example the
Message is a Java bean and is the common message format on the bus.
Normally this would be XML, but Mule allows us to pass any data format
around.
public class LoanQuoteRequest implements Serializable
{
/** The request contains Customer info and loan amount and duration*/
private CustomerQuoteRequest customerRequest;
/** credit profile for the customer */
private CreditProfile creditProfile;
/** A list of lenders for this request */
private Bank[] lenders;
/** A loan quote from a bank */
private LoanQuote loanQuote;
.......
}
 The whole chain of events is initiated with a client request. This is
done over Http using Mule's REST support. It is described in the
Endpoint address –
jetty:rest://localhost:8080/loanbroker
 Here we're saying -
 Embed a Jetty Servlet Engine
 Use the Rest servlet for receiving requests
 Listen on localhost:8080
 Bind the Rest servlet to the context /loanbroker
 The request from the client would look like –
http://localhost:8080/loanbroker/?
name=Ross+Mason&ssn=1234&
loanAmount=10000&loanDuration=24
 The Loan Broker endpoint receives the request as a set of Http parameters,
but we need to transform this into a CustomerQuoteRequest object before
the Loan Broker component receives it.
 We do this by configuring a custom transformer on the endpoint.
public Object transform(Object src, UMOEventContext context)
throws TransformerException {
String name = context.getStringProperty("name");
int ssn = context.getIntProperty("ssn");
double amount = context.getDoubleProperty("loanAmount");
double duration = context.getDoubleProperty("loanDuration");
Customer customer = new Customer(name, ssn);
CustomerQuoteRequest request =
new CustomerQuoteRequest(customer, amount, duration);
return request;
}
 The Loanbroker service actually doesn't need to do anything but trigger the
LoanQuoteRequest on the bus. Mule handles all routing transformation and passing
the quote back to the callee.
 The transformer configured on the REST inbound endpoint for the LoanBroker
converts the REST parameters into a CustomerQuoteRequest object.
public class LoanBroker
{
public LoanQuoteRequest requestLoanQuote(
CustomerQuoteRequest request) throws Exception
{
LoanQuoteRequest bqr = new LoanQuoteRequest();
bqr.setCustomerRequest(request);
return bqr;
}
}
All the detail is in the Loan Broker configuration.
<mule-descriptor name="LoanBroker"
implementation="org.mule.samples.loanbroker.esb.LoanBroker">
<inbound-router>
<endpoint address="jetty:rest://localhost:8080/loanbroker"/>
</inbound-router>
<outbound-router>
<router className="org.mule.routing.outbound.OutboundPassThroughRouter">
<endpoint address="jms://esb.credit.agency"/>
</router>
</outbound-router>
<response-router timeout="10000">
<endpoint address="jms://esb.loan.quotes"/>
<router className="
org.mule.samples.loanbroker.esb.routers.BankQuotesResponseAggregator"/>
</response-router>
</mule-descriptor>
 The Credit Agency code is even easier! We use a
standard Mule Component called a
ReflectionMessageBuilder which builds a message
based on a set of results from endpoint invocations.
 It will use reflection to determine how to set the result
of the last endpoint invocation as a property on the
master message.
 There are other MessageBuilder components such as
the ScriptMessageBuilder component which is a JSR-
223 (Scripting) component that allows you to
manipulate the payload after each request using
Groovy, JavaScript, Rhino or any other supported
<mule-descriptor name="CreditAgencyGateway"
implementation="org.mule.components.builder.ReflectionMessageBuilder">
<inbound-router>
<endpoint address="jms://credit.agency"/>
</inbound-router>
<outbound-router>
<router className="org.mule.routing.outbound.FilteringRouter">
<endpoint address="ejb://localhost:1099/local/CreditAgency?method=getCreditProfile“
transformers=“LoanQuoteRequestToCreditProfileArgs”
responseTransformers="CreditProfileXmlToCreditProfile“/>
<properties>
<list name="methodArgumentTypes">
<entry value="java.lang.String"/>
<entry value="java.lang.String"/>
</list>
</properties>
</endpoint>
<endpoint address="jms://esb.lender.service"/>
</router>
</outbound-router>
</mule-descriptor>
 We invoke the CreditAgency application using an EJB endpoint –
ejb://localhost:1099/local/CreditAgency?method=getCreditProfile
 This endpoint tells Mule to –
 Look up an EJB object at localhost:1099
 Use the JNDI name local/CreditAgency
 Invoke the method getCreditProfile on the EJB object
 Notice also the transformers and responseTransformers attibutes on the
endpoint. These tell Mule how to marshal for the Application.
 LoanQuoteRequestToCreditProfileArgs – Extracts the method arguments
from the request as an array used to invoke getCreditProfile.
 CreditProfileXmlToCreditProfile – Parses the response Xml and creates a
CreditProfile object that will be set on the LoanQuoteRequest.
 Lender Service
 The Lender Agency is a Mule component, that receives events
directly using the VM transport.
 Leander Gateway
 The Lender Gateway marshals requests from the bus to the
lender service.
Lender Service
<mule-descriptor name="LenderService" implementation="org.mule.samples.loanbroker.esb.LenderService">
<inbound-router>
<endpoint address="vm://lender.service"/>
</inbound-router>
</mule-descriptor>
Lender Gatway
<mule-descriptor name="LenderGateway”
implementation="org.mule.components.simple.BridgeComponent">
<inbound-router>
<endpoint address="jms://esb.lender.service"/>
</inbound-router>
<outbound-router>
<router className="org.mule.routing.outbound.ChainingRouter">
<endpoint address="vm://lender.service"/>
<endpoint address="jms://esb.banks"/>
</router>
</outbound-router>
</mule-descriptor>
 The Banking Gateway is responsible for distributing requests to a list of lenders.
 The ReciptientList router configured on this gateway is responsible for extracting the
endpoints from the message and invoking them. The RecipientList is a type of
Itinerary-based router that extracts its itinerary as a static list from the event.
<mule-descriptor name="BankingGateway"
implementation="org.mule.components.simple.BridgeComponent">
<inbound-router>
<endpoint address="jms://esb.banks"/>
</inbound-router>
<outbound-router>
<router className="org.mule.routing.outbound.StaticRecipientList">
<reply-to address="jms://esb.loan.quotes"/>
</router>
</outbound-router>
</mule-descriptor>
 The banks in this example are just simple beans that
return a fixed interest rate and are exposed as SOAP
services.
<mule-descriptor name="Bank1"
inboundEndpoint="axis:http://localhost:10001/services"
implementation="org.mule.samples.loanbroker.Bank">
</mule-descriptor>
• Note to expose a component as an Axis service all you
need to do is add an Axis endpoint!
 Once a back has a quote it passes it to Mule which will send the
Quote on the reply-to endpoint specified by the Banking Gateway.
 Looking back at the LoanBroker configuration, there is a response-
router configured as -
<response-router timeout="10000">
<endpoint address="jms://esb.loan.quotes"/>
<router className="org.mule.samples.loanbroker.esb.routers.
BankQuotesResponseAggregator"/>
</response-router>
• The BankQuoteResponseAggregator is responsible for picking the
lowest quote. But before that happens Mule needs to make sure all
responses are received for the request.
• This is done using message correlation managed by Mule.
 When a event is dispatched from the Banking Gateway a
correlationId and correlationGroupSize is attached to the SOAP
message. This is a function of the Recipient List router. It attaches
the following information -
 CorrelationId – and Id that associates all the dispatched events to the
same group
 CorrelationGroupSize – how many events are in the group.
 CorrelationSequence – the order in which the events were dispatched.
 The Response Router reads these correlation headers when events
are received and correlates the events.
 When the event group correlation is complete the response-router
invokes itself where developers can plug in custom logic.
 The BankQuoteResponseAggregator implements a single method
that works out the lowest quote before passing it back to Mule to
route the response back to the client.
protected UMOMessage aggregateEvents(EventGroup events) throws RoutingException {
. . . .
List list = events.getEvents();
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
event = (UMOEvent) iterator.next();
quote = (LoanQuote)event.getTransformedMessage();
logger.info("Processing quote: " + quote);
if (lowestQuote == null) {
lowestQuote = quote;
} else if (quote.getInterestRate() < lowestQuote.getInterestRate()) {
lowestQuote = quote;
}
}
return new MuleMessage(lowestQuote, event.getProperties());
}
 Most Mule transports can be configured using
just the endpoint address. i.e.
tcp://localhost:45454 contains all the
information necessary to make a TCP
connection.
 However for JMS and EJB we need to define
configuration properties for each such as Jndi
information.
 This is done by configuring connectors in our
MuleXml.
EJB Connector (OpenEJB – Local Server. See http://openejb.org)
<connector name="ejbConnector" className="org.mule.providers.ejb.EjbConnector">
<properties>
<property name="jndiInitialFactory" value="org.openejb.client.LocalInitialContextFactory"/>
<property name="securityPolicy" value="security.policy"/>
<map name="jndiProviderProperties">
<property name="openejb.base" value="."/>
<property name="openejb.configuration" value="../conf/openejb.conf"/>
</map>
</properties>
</connector>
JMS Connector (ActiveMQ)
<connector name="jmsConnector" className="org.mule.providers.jms.JmsConnector">
<properties>
<property name="connectionFactoryJndiName" value="ConnectionFactory"/>
<property name="jndiInitialFactory"
value="org.activemq.jndi.ActiveMQInitialContextFactory"/>
<property name="specification" value="1.1"/>
</properties>
</connector>
 Exception Strategies
 Can be defined on components and connectors
 Can be defined globally of for each connector or component
 Can handle different exception types differently.
 Exception hierarchy provides all available information
 Event payloads can be re-routed on exception
 Connection Strategies
 Control how connectors connect to underlying resources
 Allow for flexible retry policies
 Notifications of failed connections
 Consistent endpoint state maintained
 Can alter routing paths based on failed connections
 SEDA Model
 Mule is SEDA-based, which is an architecture designed for high
concurrency and throughput.
 JMS Clustering
 Currently Mule can use JMS clustering to distribute events to a cluster of
Mule Nodes.
 Application Server Clustering
 Mule can be embedded inside a JCA container and allow the App server
to manage its resources and cluster instances.
 New Clustering Support
 The next release of Mule will provide clustering and distribution using
JGroups/JBossCache.
 Load Balancing using Mule
 You can use a Mule instance to provide load-balancing over any
transport.
 An ESB integrating a client application and 3 back
office systems.
 Combined a number of transports including
HTTP, JMS, EJB and Web Services.
 Easy to add in Exception handling, transactions,
etc. All done through configuration.
 All event routing, management, transformation is
handled by Mule.
 Very little code to write. Just domain-specific
logic.
 A fully functional ESB in about an hour!
 Project was founded in 2003.
 It was started after experiences with a large Financial ESB
project.
 There are now 10 developers who help support it and add
new features.
 Has an active user community.
 Is being used in companies such as HP, Sony, Deutche
Bank and CitiBank.
 SymphonySoft has been started by Mule developers to
help support and provide professional services to these
projects.
 For more information go to - http://mule.codehaus.org.
 EIP Book (Loan Broker Example) [1][2]
 http://www.eaipatterns.com/ComposedMessagingExample.html
 http://www.eaipatterns.com/index.html
 Introduction to ESBs – Rick Robinson
 http://www-106.ibm.com/developerworks/xml/library/ws-
esbscen/
 ESB Learning Guide
 http://searchwebservices.techtarget.com/general/1,295582,sid26
_gci1085711,00.html
 Introduction to SEDA – Matt Welsh
 http://www.eecs.harvard.edu/~mdw/papers/mdw-
phdthesis.pdf
 Mule User Guide
 http://mule.codehaus.org/User+Guide
 To get this Loan Broker ESB code and these
slides go to -
 http://mule.codehaus.org/LoanBroker
 There are other examples too -
 http://mule.codehaus.org/Examples
?

More Related Content

What's hot

Integrating with LinkedIn using Mule ESB LinkedIn Connector
Integrating with LinkedIn using Mule ESB LinkedIn ConnectorIntegrating with LinkedIn using Mule ESB LinkedIn Connector
Integrating with LinkedIn using Mule ESB LinkedIn Connector
Rupesh Sinha
 
Implementation in mule esb
Implementation in mule esbImplementation in mule esb
Implementation in mule esb
Vamsi Krishna
 
Mule webservices in detail
Mule webservices in detailMule webservices in detail
Mule webservices in detail
Shahid Shaik
 
Basics of mule for beginners
Basics of mule for beginnersBasics of mule for beginners
Basics of mule for beginners
Sindhu VL
 
Mule database-connectors
Mule database-connectorsMule database-connectors
Mule database-connectors
Phaniu
 
Mule message structure
Mule message structureMule message structure
Mule message structure
Shanky Gupta
 
Mule securing
Mule   securingMule   securing
Mule securing
Sindhu VL
 
Overview of Mule Esb
Overview of Mule EsbOverview of Mule Esb
Overview of Mule Esb
javeed_mhd
 
Mulesoft Anypoint platform introduction
Mulesoft Anypoint platform introductionMulesoft Anypoint platform introduction
Mulesoft Anypoint platform introduction
gijish
 
Mule ESB Components
Mule ESB Components Mule ESB Components
Mule ESB Components
pat_91
 
Mule esb
Mule esbMule esb
Mule esb
charan teja R
 
Mule esb presentation 2015
Mule esb presentation 2015Mule esb presentation 2015
Mule esb presentation 2015
Nagesh Penumarthy
 
Anypoint mq (mulesoft) introduction
Anypoint mq (mulesoft)  introductionAnypoint mq (mulesoft)  introduction
Anypoint mq (mulesoft) introduction
Karthik Selvaraj
 
4 150915033746-lva1-app6892
4 150915033746-lva1-app68924 150915033746-lva1-app6892
4 150915033746-lva1-app6892
ppts123456
 
Mule hct
Mule hctMule hct
Mule hct
D.Rajesh Kumar
 
Mule for beginners
Mule for beginnersMule for beginners
Mule for beginners
Sindhu VL
 
Javazone 2005-mule-real-world-old
Javazone 2005-mule-real-world-oldJavazone 2005-mule-real-world-old
Javazone 2005-mule-real-world-old
tdlrobin
 
Mule ESB - Demo
Mule ESB - DemoMule ESB - Demo
Mule ESB - Demo
VirtusaPolaris
 
Mule healthcare toolkit
Mule healthcare toolkitMule healthcare toolkit
Mule healthcare toolkit
D.Rajesh Kumar
 
Mule esb
Mule esbMule esb
Mule esb
Sindhu VL
 

What's hot (20)

Integrating with LinkedIn using Mule ESB LinkedIn Connector
Integrating with LinkedIn using Mule ESB LinkedIn ConnectorIntegrating with LinkedIn using Mule ESB LinkedIn Connector
Integrating with LinkedIn using Mule ESB LinkedIn Connector
 
Implementation in mule esb
Implementation in mule esbImplementation in mule esb
Implementation in mule esb
 
Mule webservices in detail
Mule webservices in detailMule webservices in detail
Mule webservices in detail
 
Basics of mule for beginners
Basics of mule for beginnersBasics of mule for beginners
Basics of mule for beginners
 
Mule database-connectors
Mule database-connectorsMule database-connectors
Mule database-connectors
 
Mule message structure
Mule message structureMule message structure
Mule message structure
 
Mule securing
Mule   securingMule   securing
Mule securing
 
Overview of Mule Esb
Overview of Mule EsbOverview of Mule Esb
Overview of Mule Esb
 
Mulesoft Anypoint platform introduction
Mulesoft Anypoint platform introductionMulesoft Anypoint platform introduction
Mulesoft Anypoint platform introduction
 
Mule ESB Components
Mule ESB Components Mule ESB Components
Mule ESB Components
 
Mule esb
Mule esbMule esb
Mule esb
 
Mule esb presentation 2015
Mule esb presentation 2015Mule esb presentation 2015
Mule esb presentation 2015
 
Anypoint mq (mulesoft) introduction
Anypoint mq (mulesoft)  introductionAnypoint mq (mulesoft)  introduction
Anypoint mq (mulesoft) introduction
 
4 150915033746-lva1-app6892
4 150915033746-lva1-app68924 150915033746-lva1-app6892
4 150915033746-lva1-app6892
 
Mule hct
Mule hctMule hct
Mule hct
 
Mule for beginners
Mule for beginnersMule for beginners
Mule for beginners
 
Javazone 2005-mule-real-world-old
Javazone 2005-mule-real-world-oldJavazone 2005-mule-real-world-old
Javazone 2005-mule-real-world-old
 
Mule ESB - Demo
Mule ESB - DemoMule ESB - Demo
Mule ESB - Demo
 
Mule healthcare toolkit
Mule healthcare toolkitMule healthcare toolkit
Mule healthcare toolkit
 
Mule esb
Mule esbMule esb
Mule esb
 

Viewers also liked

Mule stored procedure
Mule stored procedureMule stored procedure
Mule stored procedure
AbdulImrankhan7
 
Mule api
Mule  apiMule  api
Mule api
himajareddys
 
Overview of Mule
Overview of MuleOverview of Mule
Overview of Mule
AbdulImrankhan7
 
Mule mule runtime engine
Mule  mule runtime engineMule  mule runtime engine
Mule mule runtime engine
D.Rajesh Kumar
 
Dropbox connector Mule ESB Integration
Dropbox connector Mule ESB IntegrationDropbox connector Mule ESB Integration
Dropbox connector Mule ESB Integration
AnilKumar Etagowni
 
Mule with drools
Mule with droolsMule with drools
Mule with drools
F K
 
Introduction to mule esb
Introduction to mule esbIntroduction to mule esb
Introduction to mule esb
Khasim Cise
 
Mule esb
Mule esbMule esb
Mule esb
javeed_mhd
 
Mule cloud hub
Mule  cloud hubMule  cloud hub
Mule cloud hub
D.Rajesh Kumar
 
Mule Esb Introduction
Mule Esb IntroductionMule Esb Introduction
Mule Esb Introduction
AbdulImrankhan7
 
Xml to xml transformation in mule
Xml to xml transformation in muleXml to xml transformation in mule
Xml to xml transformation in mule
Anirban Sen Chowdhary
 
Mule Integration with Dropbox
Mule Integration with DropboxMule Integration with Dropbox
Mule Integration with Dropbox
Ramakrishna Narkedamilli
 
Scatter gatherinmule
Scatter gatherinmuleScatter gatherinmule
Scatter gatherinmule
F K
 
Mule Maven Plugin
Mule Maven PluginMule Maven Plugin
Mule Maven Plugin
javeed_mhd
 
Mule cloud hub console overview
Mule   cloud hub console overviewMule   cloud hub console overview
Mule cloud hub console overview
charan teja R
 
Mule Fundamentals
Mule FundamentalsMule Fundamentals
Mule Fundamentals
Khasim Cise
 
Mule security
Mule  securityMule  security
Mule security
D.Rajesh Kumar
 
Mule mule agent
Mule  mule agentMule  mule agent
Mule mule agent
D.Rajesh Kumar
 
Mule esb stripe
Mule esb stripeMule esb stripe
Mule esb stripe
D.Rajesh Kumar
 
Mule Esb
Mule EsbMule Esb
Mule Esb
Khasim Saheb
 

Viewers also liked (20)

Mule stored procedure
Mule stored procedureMule stored procedure
Mule stored procedure
 
Mule api
Mule  apiMule  api
Mule api
 
Overview of Mule
Overview of MuleOverview of Mule
Overview of Mule
 
Mule mule runtime engine
Mule  mule runtime engineMule  mule runtime engine
Mule mule runtime engine
 
Dropbox connector Mule ESB Integration
Dropbox connector Mule ESB IntegrationDropbox connector Mule ESB Integration
Dropbox connector Mule ESB Integration
 
Mule with drools
Mule with droolsMule with drools
Mule with drools
 
Introduction to mule esb
Introduction to mule esbIntroduction to mule esb
Introduction to mule esb
 
Mule esb
Mule esbMule esb
Mule esb
 
Mule cloud hub
Mule  cloud hubMule  cloud hub
Mule cloud hub
 
Mule Esb Introduction
Mule Esb IntroductionMule Esb Introduction
Mule Esb Introduction
 
Xml to xml transformation in mule
Xml to xml transformation in muleXml to xml transformation in mule
Xml to xml transformation in mule
 
Mule Integration with Dropbox
Mule Integration with DropboxMule Integration with Dropbox
Mule Integration with Dropbox
 
Scatter gatherinmule
Scatter gatherinmuleScatter gatherinmule
Scatter gatherinmule
 
Mule Maven Plugin
Mule Maven PluginMule Maven Plugin
Mule Maven Plugin
 
Mule cloud hub console overview
Mule   cloud hub console overviewMule   cloud hub console overview
Mule cloud hub console overview
 
Mule Fundamentals
Mule FundamentalsMule Fundamentals
Mule Fundamentals
 
Mule security
Mule  securityMule  security
Mule security
 
Mule mule agent
Mule  mule agentMule  mule agent
Mule mule agent
 
Mule esb stripe
Mule esb stripeMule esb stripe
Mule esb stripe
 
Mule Esb
Mule EsbMule Esb
Mule Esb
 

Similar to Mule execution

Implementing ESB
Implementing ESBImplementing ESB
Implementing ESB
mdfkhan625
 
Development using anypointstudio
Development using anypointstudioDevelopment using anypointstudio
Development using anypointstudio
himajareddys
 
mule real world
mule real worldmule real world
mule real world
Rajkattamuri
 
Mule real-world
Mule real-worldMule real-world
Mule real-world
AbdulImrankhan7
 
Mule real world old
Mule real world oldMule real world old
Mule real world old
Mohammed625
 
Subscription based control system to automate management of events for robots
Subscription based control system to automate management of events for robotsSubscription based control system to automate management of events for robots
Subscription based control system to automate management of events for robots
dbpublications
 
CV_PurnimaBalla_WCS-Consultant_7Yrs
CV_PurnimaBalla_WCS-Consultant_7YrsCV_PurnimaBalla_WCS-Consultant_7Yrs
CV_PurnimaBalla_WCS-Consultant_7Yrs
Purnima Balla
 
Constraint Aware Dynamic Web Service Composition for A Specific Business Requ...
Constraint Aware Dynamic Web Service Composition for A Specific Business Requ...Constraint Aware Dynamic Web Service Composition for A Specific Business Requ...
Constraint Aware Dynamic Web Service Composition for A Specific Business Requ...
ijceronline
 
WCF tutorial
WCF tutorialWCF tutorial
WCF tutorial
Abhi Arya
 
Tamer_Mohamed
Tamer_MohamedTamer_Mohamed
Tamer_Mohamed
Tamer Mohamed
 
Meetup6 microservices for the IoT
Meetup6 microservices for the IoTMeetup6 microservices for the IoT
Meetup6 microservices for the IoT
Francesco Rago
 
Web Basics
Web BasicsWeb Basics
Web Basics
Hui Xie
 
Micro Services
Micro ServicesMicro Services
Micro Services
SARADHIREDDYK
 
IBM Innovate 2013: Making Rational HATS a Strategic Investment
IBM Innovate 2013: Making Rational HATS a Strategic InvestmentIBM Innovate 2013: Making Rational HATS a Strategic Investment
IBM Innovate 2013: Making Rational HATS a Strategic Investment
Strongback Consulting
 
Enhancement in Web Service Architecture
Enhancement in Web Service ArchitectureEnhancement in Web Service Architecture
Enhancement in Web Service Architecture
IJERA Editor
 
Offline and Online Bank Data Synchronization System
Offline and Online Bank Data Synchronization SystemOffline and Online Bank Data Synchronization System
Offline and Online Bank Data Synchronization System
ijceronline
 
Microservices
MicroservicesMicroservices
Microservices
Ramesh (@Mavuluri)
 
Web services SOAP Notes
Web services SOAP NotesWeb services SOAP Notes
Web services SOAP Notes
Sunil Kumar Gunasekaran
 
L0704065070
L0704065070L0704065070
L0704065070
IJERD Editor
 
Using Service Discovery and Service Proxy
Using Service Discovery and Service ProxyUsing Service Discovery and Service Proxy
Using Service Discovery and Service Proxy
IBM
 

Similar to Mule execution (20)

Implementing ESB
Implementing ESBImplementing ESB
Implementing ESB
 
Development using anypointstudio
Development using anypointstudioDevelopment using anypointstudio
Development using anypointstudio
 
mule real world
mule real worldmule real world
mule real world
 
Mule real-world
Mule real-worldMule real-world
Mule real-world
 
Mule real world old
Mule real world oldMule real world old
Mule real world old
 
Subscription based control system to automate management of events for robots
Subscription based control system to automate management of events for robotsSubscription based control system to automate management of events for robots
Subscription based control system to automate management of events for robots
 
CV_PurnimaBalla_WCS-Consultant_7Yrs
CV_PurnimaBalla_WCS-Consultant_7YrsCV_PurnimaBalla_WCS-Consultant_7Yrs
CV_PurnimaBalla_WCS-Consultant_7Yrs
 
Constraint Aware Dynamic Web Service Composition for A Specific Business Requ...
Constraint Aware Dynamic Web Service Composition for A Specific Business Requ...Constraint Aware Dynamic Web Service Composition for A Specific Business Requ...
Constraint Aware Dynamic Web Service Composition for A Specific Business Requ...
 
WCF tutorial
WCF tutorialWCF tutorial
WCF tutorial
 
Tamer_Mohamed
Tamer_MohamedTamer_Mohamed
Tamer_Mohamed
 
Meetup6 microservices for the IoT
Meetup6 microservices for the IoTMeetup6 microservices for the IoT
Meetup6 microservices for the IoT
 
Web Basics
Web BasicsWeb Basics
Web Basics
 
Micro Services
Micro ServicesMicro Services
Micro Services
 
IBM Innovate 2013: Making Rational HATS a Strategic Investment
IBM Innovate 2013: Making Rational HATS a Strategic InvestmentIBM Innovate 2013: Making Rational HATS a Strategic Investment
IBM Innovate 2013: Making Rational HATS a Strategic Investment
 
Enhancement in Web Service Architecture
Enhancement in Web Service ArchitectureEnhancement in Web Service Architecture
Enhancement in Web Service Architecture
 
Offline and Online Bank Data Synchronization System
Offline and Online Bank Data Synchronization SystemOffline and Online Bank Data Synchronization System
Offline and Online Bank Data Synchronization System
 
Microservices
MicroservicesMicroservices
Microservices
 
Web services SOAP Notes
Web services SOAP NotesWeb services SOAP Notes
Web services SOAP Notes
 
L0704065070
L0704065070L0704065070
L0704065070
 
Using Service Discovery and Service Proxy
Using Service Discovery and Service ProxyUsing Service Discovery and Service Proxy
Using Service Discovery and Service Proxy
 

More from Phaniu

Anypoint data gateway
Anypoint data gatewayAnypoint data gateway
Anypoint data gateway
Phaniu
 
Data weave
Data weave Data weave
Data weave
Phaniu
 
How to use expression filter
How to use expression filterHow to use expression filter
How to use expression filter
Phaniu
 
How to use message properties component
How to use message properties componentHow to use message properties component
How to use message properties component
Phaniu
 
Mapping and listing with mule
Mapping and listing with muleMapping and listing with mule
Mapping and listing with mule
Phaniu
 
Mmc rest api user groups
Mmc rest api user groupsMmc rest api user groups
Mmc rest api user groups
Phaniu
 
Mmc
MmcMmc
Mmc
Phaniu
 
Mmc 2
Mmc 2Mmc 2
Mmc 2
Phaniu
 
Mule esb stripe
Mule esb stripeMule esb stripe
Mule esb stripe
Phaniu
 
Mule for each scope headerc ollection
Mule for each scope headerc ollectionMule for each scope headerc ollection
Mule for each scope headerc ollection
Phaniu
 
Mule esb
Mule esbMule esb
Mule esb
Phaniu
 
Mule for each scope headerc ollection
Mule for each scope headerc ollectionMule for each scope headerc ollection
Mule for each scope headerc ollection
Phaniu
 
Mule for each scope headerc ollection
Mule for each scope headerc ollectionMule for each scope headerc ollection
Mule for each scope headerc ollection
Phaniu
 
Mule esb
Mule esbMule esb
Mule esb
Phaniu
 
Mule for each scope headerc ollection
Mule for each scope headerc ollectionMule for each scope headerc ollection
Mule for each scope headerc ollection
Phaniu
 
Mule security jaas
Mule security jaasMule security jaas
Mule security jaas
Phaniu
 
Mule security jaas
Mule security jaasMule security jaas
Mule security jaas
Phaniu
 
Mule security saml
Mule security samlMule security saml
Mule security saml
Phaniu
 
Mule soa
Mule soaMule soa
Mule soa
Phaniu
 
Mule soap
Mule soapMule soap
Mule soap
Phaniu
 

More from Phaniu (20)

Anypoint data gateway
Anypoint data gatewayAnypoint data gateway
Anypoint data gateway
 
Data weave
Data weave Data weave
Data weave
 
How to use expression filter
How to use expression filterHow to use expression filter
How to use expression filter
 
How to use message properties component
How to use message properties componentHow to use message properties component
How to use message properties component
 
Mapping and listing with mule
Mapping and listing with muleMapping and listing with mule
Mapping and listing with mule
 
Mmc rest api user groups
Mmc rest api user groupsMmc rest api user groups
Mmc rest api user groups
 
Mmc
MmcMmc
Mmc
 
Mmc 2
Mmc 2Mmc 2
Mmc 2
 
Mule esb stripe
Mule esb stripeMule esb stripe
Mule esb stripe
 
Mule for each scope headerc ollection
Mule for each scope headerc ollectionMule for each scope headerc ollection
Mule for each scope headerc ollection
 
Mule esb
Mule esbMule esb
Mule esb
 
Mule for each scope headerc ollection
Mule for each scope headerc ollectionMule for each scope headerc ollection
Mule for each scope headerc ollection
 
Mule for each scope headerc ollection
Mule for each scope headerc ollectionMule for each scope headerc ollection
Mule for each scope headerc ollection
 
Mule esb
Mule esbMule esb
Mule esb
 
Mule for each scope headerc ollection
Mule for each scope headerc ollectionMule for each scope headerc ollection
Mule for each scope headerc ollection
 
Mule security jaas
Mule security jaasMule security jaas
Mule security jaas
 
Mule security jaas
Mule security jaasMule security jaas
Mule security jaas
 
Mule security saml
Mule security samlMule security saml
Mule security saml
 
Mule soa
Mule soaMule soa
Mule soa
 
Mule soap
Mule soapMule soap
Mule soap
 

Recently uploaded

Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Pitangent Analytics & Technology Solutions Pvt. Ltd
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
ScyllaDB
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
Edge AI and Vision Alliance
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Neo4j
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 

Recently uploaded (20)

Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 

Mule execution

  • 1.
  • 2. • Overview of ESB • Introduction to Mule • Mule and JBI • Real-world Application  Application Overview  Systems Involved  Design Considerations  Event Flows • Implementation with Mule  Components  Transports  Returning the Loan Quote  Fault Tolerance  Scaling • Summary
  • 3.  What is it?  Enterprise Service Bus is an evolving architecture technique to integrate incompatible business applications over a common messaging bus.  Why do we need it?  Many of the applications we write are in fact integration projects. Only the most simple applications do not need to interact with other applications.  Where does SOA fit in?  ESB is one architecture style that abides by the rules of a Service Orientated Architecture.  What is JBI?  Java Business Integration (JSR:208) is an emerging standard that defines common interfaces for components and message exchanges for application integration.  Does this all sound familiar?  There is nothing new about integration, we've been doing it for years. So why the hype?
  • 4. • Loosely Coupled • Event-Driven • Highly Distributed • Security/Authorization • Abstract Endpoints • Intelligent Routing • Data Transformation (inbound/outbound) • Reliable Messaging • Multi-Protocol Message Bus • Light Weight
  • 5. • Service container and messaging platform • Supports a variety of topologies including ESB • Highly Scalable; uses SEDA event model • Lightweight and embeddable • Transactional; Local and Distributed • Fault tolerance; Exception management • Secure; authentication/authorization (Using Spring/Acegi) • Powerful event routing capabilities (based on EIP book) • Support for over 20 messaging protocols/transports • End-to-End Data Transformation • Management and Monitoring using JMX • BPEL Support • Deployment: JAR, WAR, RAR, EAR.
  • 6. Enterprise Service Bus Client/Server and Hub n' Spoke Peer Network Pipeline Enterprise Service Network
  • 7.  Is Mule a JBI container?  There is a separate project called Mule JBI that is a JBI implementation that reuses the Mule service stack.  Does Mule work with JBI?  You can use Mule transports, components and transformers inside any JBI container. Mule provides a couple of components that allows JBI components to subscribe and publish events to and from Mule.  Do Mule and JBI compete?  JBI solves a subset of messaging problems. Mule addresses the basic need to move any kind of data (not just XML) between services in an organization  Which is best for me?  Mule of course!  The reason Mule integrates with other JBI engines and provides it own JBI container is that one integration solution will never satisfy all integration needs.  Mule levels the playing field allowing you to pick and choose which technologies to integrate with.
  • 8.  JBI  Described in terms of Service Engines (SEs) which are akin to components that execute business logic.  Binding Components (BCs) implement protocols to provide connectivity to SEs.  JBI uses a Message Exchange to manage interactions between components.  Targeted a specifically at integration. Normalized Message  Mule  Components are POJOs, EJBs, Spring Beans, Remote objects.  The component never needs to call Mule APIs making them totally portable.  Flexible endpoint model where a component may have zero or more inbound and outbound endpoints.  Message routing is done via routers that are associated with the component.  Mule is a ubiquitous messaging platform.  A distributed container for wiring components.
  • 9. A Real World Example
  • 10.  Customer calls different banks to find the best deal.  Each bank asks customer for his or her social security number, the amount of the loan and the desired term.  Each bank then investigates the customer's credit background, usually by contacting a credit agency, before it finally sends the customer a quote.  Once the customer has received quotes from all banks, he or she can then select the best offer, i.e. the lowest rate. [1]
  • 11.  This process can be automated to allow customers to obtain the best quote on-line from a far broader range of banks, in much less time than if he or she were to obtain all the quotes one by one.  Upon receiving customer request, Loan Broker:  obtains the credit information for that customer from the credit agency  requests quotes for the customer from banks listed with the Lender Service  sends aggregate compilation of quotes to the customer for selection. [2]
  • 12. Loan Broker Service Receives LoanRequests (customer, SS number, loan amount, duration) and is responsible for aggregating LoanQuotes into response for the request. Credit Agency Service An external service provider that provides crediting checking on customers to ensure the loan amount requested is feesible. Credit Agency Gateway Marshals a request between the message bus and the Credit Agency Application. Lender Service Based on the customer's credit scoring, loan amount and duration, the lender service will select banks from which to request a LoanQuote. Lender Gateway Marshals a request from the message bus to the Lender Application. Banking Gateway Dispatches LoanRequests to one or more banks.
  • 13.  LoanBroker (Http/Rest)  Receives Requests over Http from a client application, such as a web browser.  Credit Agency (EJB)  Is an EJB application that is managed by the Loan Broker company. It exposes an EJB called creditAgency with a method getCreditProfile.  Lender Application (VM)  Is a local component, a Pojo that will determine which lenders should be used.  Banks (SOAP)  For simplicity of this example all banks expose the same WS interface, though it's quite feasible to configure Mule to invoke different interfaces for different banks.  Gateways (JMS)  Gateways marshal the requests from the message bus to external applications and services.
  • 14.  Constraints  Application needs to support request/response processing model.  Will get a high volume of requests.  Synchronous processing will not give us enough throughput.  Transports  Using a JMS message bus  Need to invoke services over JMS, Http/Rest, VM, and SOAP.  Need to invoke services in external application containers (EJB).  Expose components as Web services (Banks).  Message  The message on the bus is referred to as a LoanQuoteRequest. In this example this is a Java bean but in real scenarios an XML
  • 15.
  • 16. 1. Client application makes a request sending the LoanBroker a CustomerQuoteRequest Message. 2. LoanBroker creates a LoanQuoteRequest Message. 3. Mule sends the message to the Credit Agency Gateway via JMS 4. The Gateway marshals the request and invokes the CreditAgency EJB. The component used in the RelectionMessageBuilder which automatically attaches the CreditProfile to the LoanQuoteRequest message. 5. Mule sends the Message to the Lender Gateway via JMS 6. The Gateway uses the VM transport to invoke the Lender Application. 7. Mule sends the Message to the Banking Gateway via JMS 8. The Banking Gateway in this example invokes the Banks using SOAP. 9. Each of the Banks attaches a quote to the request and sends it back to the LoanBroker via the ReplyTo address provided by the Banking Gateway. 10. The ResponseRouter on the Loan Broker Service receives the responses on the ReplyTo address. It selects the lowest quote received for the request and returns it to the client.
  • 18.
  • 19. Lets start by defining the LoanQuoteRequest Message. In this example the Message is a Java bean and is the common message format on the bus. Normally this would be XML, but Mule allows us to pass any data format around. public class LoanQuoteRequest implements Serializable { /** The request contains Customer info and loan amount and duration*/ private CustomerQuoteRequest customerRequest; /** credit profile for the customer */ private CreditProfile creditProfile; /** A list of lenders for this request */ private Bank[] lenders; /** A loan quote from a bank */ private LoanQuote loanQuote; ....... }
  • 20.  The whole chain of events is initiated with a client request. This is done over Http using Mule's REST support. It is described in the Endpoint address – jetty:rest://localhost:8080/loanbroker  Here we're saying -  Embed a Jetty Servlet Engine  Use the Rest servlet for receiving requests  Listen on localhost:8080  Bind the Rest servlet to the context /loanbroker  The request from the client would look like – http://localhost:8080/loanbroker/? name=Ross+Mason&ssn=1234& loanAmount=10000&loanDuration=24
  • 21.  The Loan Broker endpoint receives the request as a set of Http parameters, but we need to transform this into a CustomerQuoteRequest object before the Loan Broker component receives it.  We do this by configuring a custom transformer on the endpoint. public Object transform(Object src, UMOEventContext context) throws TransformerException { String name = context.getStringProperty("name"); int ssn = context.getIntProperty("ssn"); double amount = context.getDoubleProperty("loanAmount"); double duration = context.getDoubleProperty("loanDuration"); Customer customer = new Customer(name, ssn); CustomerQuoteRequest request = new CustomerQuoteRequest(customer, amount, duration); return request; }
  • 22.  The Loanbroker service actually doesn't need to do anything but trigger the LoanQuoteRequest on the bus. Mule handles all routing transformation and passing the quote back to the callee.  The transformer configured on the REST inbound endpoint for the LoanBroker converts the REST parameters into a CustomerQuoteRequest object. public class LoanBroker { public LoanQuoteRequest requestLoanQuote( CustomerQuoteRequest request) throws Exception { LoanQuoteRequest bqr = new LoanQuoteRequest(); bqr.setCustomerRequest(request); return bqr; } }
  • 23. All the detail is in the Loan Broker configuration. <mule-descriptor name="LoanBroker" implementation="org.mule.samples.loanbroker.esb.LoanBroker"> <inbound-router> <endpoint address="jetty:rest://localhost:8080/loanbroker"/> </inbound-router> <outbound-router> <router className="org.mule.routing.outbound.OutboundPassThroughRouter"> <endpoint address="jms://esb.credit.agency"/> </router> </outbound-router> <response-router timeout="10000"> <endpoint address="jms://esb.loan.quotes"/> <router className=" org.mule.samples.loanbroker.esb.routers.BankQuotesResponseAggregator"/> </response-router> </mule-descriptor>
  • 24.  The Credit Agency code is even easier! We use a standard Mule Component called a ReflectionMessageBuilder which builds a message based on a set of results from endpoint invocations.  It will use reflection to determine how to set the result of the last endpoint invocation as a property on the master message.  There are other MessageBuilder components such as the ScriptMessageBuilder component which is a JSR- 223 (Scripting) component that allows you to manipulate the payload after each request using Groovy, JavaScript, Rhino or any other supported
  • 25. <mule-descriptor name="CreditAgencyGateway" implementation="org.mule.components.builder.ReflectionMessageBuilder"> <inbound-router> <endpoint address="jms://credit.agency"/> </inbound-router> <outbound-router> <router className="org.mule.routing.outbound.FilteringRouter"> <endpoint address="ejb://localhost:1099/local/CreditAgency?method=getCreditProfile“ transformers=“LoanQuoteRequestToCreditProfileArgs” responseTransformers="CreditProfileXmlToCreditProfile“/> <properties> <list name="methodArgumentTypes"> <entry value="java.lang.String"/> <entry value="java.lang.String"/> </list> </properties> </endpoint> <endpoint address="jms://esb.lender.service"/> </router> </outbound-router> </mule-descriptor>
  • 26.  We invoke the CreditAgency application using an EJB endpoint – ejb://localhost:1099/local/CreditAgency?method=getCreditProfile  This endpoint tells Mule to –  Look up an EJB object at localhost:1099  Use the JNDI name local/CreditAgency  Invoke the method getCreditProfile on the EJB object  Notice also the transformers and responseTransformers attibutes on the endpoint. These tell Mule how to marshal for the Application.  LoanQuoteRequestToCreditProfileArgs – Extracts the method arguments from the request as an array used to invoke getCreditProfile.  CreditProfileXmlToCreditProfile – Parses the response Xml and creates a CreditProfile object that will be set on the LoanQuoteRequest.
  • 27.  Lender Service  The Lender Agency is a Mule component, that receives events directly using the VM transport.  Leander Gateway  The Lender Gateway marshals requests from the bus to the lender service.
  • 28. Lender Service <mule-descriptor name="LenderService" implementation="org.mule.samples.loanbroker.esb.LenderService"> <inbound-router> <endpoint address="vm://lender.service"/> </inbound-router> </mule-descriptor> Lender Gatway <mule-descriptor name="LenderGateway” implementation="org.mule.components.simple.BridgeComponent"> <inbound-router> <endpoint address="jms://esb.lender.service"/> </inbound-router> <outbound-router> <router className="org.mule.routing.outbound.ChainingRouter"> <endpoint address="vm://lender.service"/> <endpoint address="jms://esb.banks"/> </router> </outbound-router> </mule-descriptor>
  • 29.  The Banking Gateway is responsible for distributing requests to a list of lenders.  The ReciptientList router configured on this gateway is responsible for extracting the endpoints from the message and invoking them. The RecipientList is a type of Itinerary-based router that extracts its itinerary as a static list from the event. <mule-descriptor name="BankingGateway" implementation="org.mule.components.simple.BridgeComponent"> <inbound-router> <endpoint address="jms://esb.banks"/> </inbound-router> <outbound-router> <router className="org.mule.routing.outbound.StaticRecipientList"> <reply-to address="jms://esb.loan.quotes"/> </router> </outbound-router> </mule-descriptor>
  • 30.  The banks in this example are just simple beans that return a fixed interest rate and are exposed as SOAP services. <mule-descriptor name="Bank1" inboundEndpoint="axis:http://localhost:10001/services" implementation="org.mule.samples.loanbroker.Bank"> </mule-descriptor> • Note to expose a component as an Axis service all you need to do is add an Axis endpoint!
  • 31.  Once a back has a quote it passes it to Mule which will send the Quote on the reply-to endpoint specified by the Banking Gateway.  Looking back at the LoanBroker configuration, there is a response- router configured as - <response-router timeout="10000"> <endpoint address="jms://esb.loan.quotes"/> <router className="org.mule.samples.loanbroker.esb.routers. BankQuotesResponseAggregator"/> </response-router> • The BankQuoteResponseAggregator is responsible for picking the lowest quote. But before that happens Mule needs to make sure all responses are received for the request. • This is done using message correlation managed by Mule.
  • 32.  When a event is dispatched from the Banking Gateway a correlationId and correlationGroupSize is attached to the SOAP message. This is a function of the Recipient List router. It attaches the following information -  CorrelationId – and Id that associates all the dispatched events to the same group  CorrelationGroupSize – how many events are in the group.  CorrelationSequence – the order in which the events were dispatched.  The Response Router reads these correlation headers when events are received and correlates the events.  When the event group correlation is complete the response-router invokes itself where developers can plug in custom logic.
  • 33.  The BankQuoteResponseAggregator implements a single method that works out the lowest quote before passing it back to Mule to route the response back to the client. protected UMOMessage aggregateEvents(EventGroup events) throws RoutingException { . . . . List list = events.getEvents(); for (Iterator iterator = list.iterator(); iterator.hasNext();) { event = (UMOEvent) iterator.next(); quote = (LoanQuote)event.getTransformedMessage(); logger.info("Processing quote: " + quote); if (lowestQuote == null) { lowestQuote = quote; } else if (quote.getInterestRate() < lowestQuote.getInterestRate()) { lowestQuote = quote; } } return new MuleMessage(lowestQuote, event.getProperties()); }
  • 34.  Most Mule transports can be configured using just the endpoint address. i.e. tcp://localhost:45454 contains all the information necessary to make a TCP connection.  However for JMS and EJB we need to define configuration properties for each such as Jndi information.  This is done by configuring connectors in our MuleXml.
  • 35. EJB Connector (OpenEJB – Local Server. See http://openejb.org) <connector name="ejbConnector" className="org.mule.providers.ejb.EjbConnector"> <properties> <property name="jndiInitialFactory" value="org.openejb.client.LocalInitialContextFactory"/> <property name="securityPolicy" value="security.policy"/> <map name="jndiProviderProperties"> <property name="openejb.base" value="."/> <property name="openejb.configuration" value="../conf/openejb.conf"/> </map> </properties> </connector> JMS Connector (ActiveMQ) <connector name="jmsConnector" className="org.mule.providers.jms.JmsConnector"> <properties> <property name="connectionFactoryJndiName" value="ConnectionFactory"/> <property name="jndiInitialFactory" value="org.activemq.jndi.ActiveMQInitialContextFactory"/> <property name="specification" value="1.1"/> </properties> </connector>
  • 36.  Exception Strategies  Can be defined on components and connectors  Can be defined globally of for each connector or component  Can handle different exception types differently.  Exception hierarchy provides all available information  Event payloads can be re-routed on exception  Connection Strategies  Control how connectors connect to underlying resources  Allow for flexible retry policies  Notifications of failed connections  Consistent endpoint state maintained  Can alter routing paths based on failed connections
  • 37.  SEDA Model  Mule is SEDA-based, which is an architecture designed for high concurrency and throughput.  JMS Clustering  Currently Mule can use JMS clustering to distribute events to a cluster of Mule Nodes.  Application Server Clustering  Mule can be embedded inside a JCA container and allow the App server to manage its resources and cluster instances.  New Clustering Support  The next release of Mule will provide clustering and distribution using JGroups/JBossCache.  Load Balancing using Mule  You can use a Mule instance to provide load-balancing over any transport.
  • 38.  An ESB integrating a client application and 3 back office systems.  Combined a number of transports including HTTP, JMS, EJB and Web Services.  Easy to add in Exception handling, transactions, etc. All done through configuration.  All event routing, management, transformation is handled by Mule.  Very little code to write. Just domain-specific logic.  A fully functional ESB in about an hour!
  • 39.  Project was founded in 2003.  It was started after experiences with a large Financial ESB project.  There are now 10 developers who help support it and add new features.  Has an active user community.  Is being used in companies such as HP, Sony, Deutche Bank and CitiBank.  SymphonySoft has been started by Mule developers to help support and provide professional services to these projects.  For more information go to - http://mule.codehaus.org.
  • 40.  EIP Book (Loan Broker Example) [1][2]  http://www.eaipatterns.com/ComposedMessagingExample.html  http://www.eaipatterns.com/index.html  Introduction to ESBs – Rick Robinson  http://www-106.ibm.com/developerworks/xml/library/ws- esbscen/  ESB Learning Guide  http://searchwebservices.techtarget.com/general/1,295582,sid26 _gci1085711,00.html  Introduction to SEDA – Matt Welsh  http://www.eecs.harvard.edu/~mdw/papers/mdw- phdthesis.pdf  Mule User Guide  http://mule.codehaus.org/User+Guide
  • 41.  To get this Loan Broker ESB code and these slides go to -  http://mule.codehaus.org/LoanBroker  There are other examples too -  http://mule.codehaus.org/Examples
  • 42. ?