SlideShare a Scribd company logo
Global Scale ESB with Mule

      Andrew D Kennedy
      grkvlt@apache.org
         March 2011
Who Am I
•   Enterprise Java Developer
•   Apache Qpid Committer
•   Previously Security Engineer
•   Over 15 Years Java Experience
•   Worked with various Investment Banks
•   Interested in Data Mining and
    Visualisation
This Presentation
•   What is an ESB
•   What is Mule
•   Mule Applications
•   Mule Scalability
What is an ESB
• Enterprise Service Bus
• SOA
  – Service Oriented Architecture
• SEDA
  – Staged Event-Driven Architecture
• EIP
  – Enterprise Integration Patterns
Service Oriented Architecture
• Services
  – Shared Business Functions
• Decoupling
  – Local and Remote Services
• Distributed Applications
• Directory and Discovery
EIP
• Similar to Design Patterns
    – Gang of Four Book
•   Shared Terminology
•   Names for Common Concepts
•   Allows Discussion
•   Simplifies Design
(Some) Common Patterns
•   Aggregator (268)
•   Channel Adapter (127)
•   Content Based Router (230)
•   Dead Letter Channel (119)
•   Selective Consumer (515)
•   Message Translator (85)
•   Guaranteed Delivery (122)
What is Mule
• Open Source Project
• MuleSoft
  –   Mule Forge
  –   Mule Enterprise
  –   Mule MQ
  –   Tcat Server
• 2.x - Legacy Applications
• 3.1.1 - Current Community Release
• 3.2.0 - Latest Developer Build
Transports
• Carry Messages between Services
• Connector
  – Configuration
  – Threading
  – Retry
• Endpoint
  – Connects Services
  – Transform Messages
  – Transaction Boundary
Endpoint Examples
<file:inbound-endpoint path="/esb/in"
   comparator="org.mule.transport.file.comparator.Older
   FirstComparator" reverseOrder="true” />
<jetty:endpoint name="server" host="localhost"
   port="60203" path="services/Lookup" />
<imaps:endpoint name=”mail" host="localhost"
   password=”hunter2" port="123" user=”adk"/>
<quartz:endpoint name=”batch" repeatCount="10"
   repeatInterval=”60000" jobName="job"/>
<jms:inbound-endpoint queue="test.queue"/>
VM
• Communication within VM
• Synchronous or Asynchronous
• Transactional
<vm:connector name="async"
  queueEvents="true” />
<vm:inbound-endpoint path="in"
  connector-ref="async"/>
JMS
• Queues
• Topics
• Request-Response
<jms:connector name=”jms" specification="1.1"
  connectionFactory-ref=”qpid"
  username=”adk" password=”hunter2” />
<jms:outbound-endpoint queue=”audit” />
<jms:inbound-endpoint topic=”uk.*.gbp” />
Web Services
• HTTP and HTTPS
  – Custom Data Formats
• CXF
  – JAX-WS
  – SOAP
  – WSDL
• REST
CXF JAX-WS
<inbound-endpoint
   address="http://localhost:63081/hello" />
<cxf:jaxws-service
   serviceClass="org.example.ServiceImpl” />
<cxf:jaxws-client clientClass=”com.example.Client”
   wsdlPort="SoapPort”
   wsdlLocation="classpath:/save.wsdl”
   operation=”output” />
<outbound-endpoint
   address="http://www.example.com/services/save” />
File System
• Poll Directory for Input
<file:connector name="input" fileAge="500"
   autoDelete="true" pollingFrequency="100"
   moveToDirectory="/backup"
   moveToPattern="#[header:originalFilename].backup”
   />
• Write Output File
<file:connector name="output" outputAppend="true"
   outputPattern="#[function:datestamp]-
   #[header:originalFilename]" />
Other Transports
•   AJAX              •   TCP
•   jBPM              •   UDP
•   JDBC              •   FTP
•   Quartz            •   POP3
•   STDIO             •   IMAP
•   RMI               •   SMTP
•   Servlet           •   XMPP
Transformers
•   Change message content
•   XML to POJO via JAXB
•   Applied to endpoints
•   Efficient mechanism for processing
•   Similar to AOP
Transformer Types
•   Encryption and Decryption
•   ByteArray to Object
•   Expression Evaluator
•   XML and JSON
•   Compression
•   Encoding and Decoding
Filtering
• Apply to endpoints
• Payload Type
• Expression
    – XPath, OGNL, JXPath
•   RegEx
•   Wildcard
•   Message Property
•   Logical Operators
    – And, Or, Not
Filtering Examples
<and-filter>
    <message-property-filter
        pattern="JMSCorrelationID=1234567890"/>
    <message-property-filter pattern="JMSReplyTo=null"/>
</and-filter>
<or-filter>
    <payload-type-filter expectedType="java.lang.String"/>
    <payload-type-filter expectedType="java.lang.StringBuffer"/>
</or-filter>
<not-filter>
    <wildcard-filter pattern=”com.example.*"/>
</not-filter>
Routers
•   Control message flow at endpoints
•   Used to link services
•   Both inbound and outbound
•   Specify Filtering and Transformations
Selective Consumer
<inbound>
    <selective-consumer-router>
        <mulexml:jxpath-filter
          expression="msg/header/resultcode =
          'success'"/>
    </selective-consumer-router>
    <forwarding-catch-all-strategy>
        <jms:endpoint topic="error.topic"/>
    </forwarding-catch-all-strategy>
</inbound>
Idempotent Filter
<inbound>
    <idempotent-receiver-router
      idExpression="#[message:id]-#[header:foo]">
        <simple-text-file-store directory="./idempotent” />
    </idempotent-receiver-router>
</inbound>
Filtering Router
<outbound>
     <forwarding-catch-all-strategy>
            <jms:outbound-endpoint queue="error.queue"/>
     </forwarding-catch-all-strategy>
     <filtering-router>
            <smtp:outbound-endpoint to=”adk@example.com"/>
            <payload-type-filter expectedType="java.lang.Exception"/>
     </filtering-router>
     <filtering-router>
            <jms:outbound-endpoint queue="string.queue"/>
            <and-filter>
                 <payload-type-filter expectedType="java.lang.String"/>
                 <regex-filter pattern="the quick brown (.*)"/>
            </and-filter>
     </filtering-router>
</outbound>
Services
• Combine Endpoints, Routers and
  Components
• Mule 2.0 idiom
• Replaced with Flows and Patterns
  – Simpler to use and configure
  – Some features still not available
Flows
• Mule 3 idiom
• Inbound endpoint
• Message processors
  – Chained execution
  – Components
• Outbound endpoint for one-way
• Response for request-response
Components
• Carry out actions
• Business logic in a flow
• Simple components
  – Logging
  – Passthrough
  – Testing
• Spring or POJO
• Web services
Message Processors
•   Aggregator and Splitter
•   Message Filters
•   Recipient List
•   Resequencer
•   Round Robin
•   Wire Tap
Example Flow
<flow name=”OrderFlow">
      <file:inbound-endpoint path="/incoming">
              <file:filename-filter name=”order-*.xml"/>
      </file:inbound-endpoint>
      <xml:xslt-transformer xsl-file=”order-transform.xsl"/>
      <splitter expression="xpath://order"/>
      <!-- The following message processors will be invoked for each order in the xml file -->
      <expression-filter expression="xpath://order[@type='book']"/>
      <component class=”com.example.BookOrderProcessor"/>
      <smtp:outbound-endpoint subject="Order Confirmation" address="#[variable:email]"/>
      <jdbc:outbound-endpoint ref=“saveOrder"/ >
      <default-exception-strategy>
              <jms:outbound-endpoint queue="failedOrders"/>
      </default-exception-strategy>
</flow>
JMS Flow
<flow name=”JmsFlow">
      <jms:inbound-endpoint queue="in">
            <jms:transaction action="ALWAYS_BEGIN" />
      </jms:inbound-endpoint>
      <component class="com.example.ProcessMessage" />
      <jms:outbound-endpoint queue="out">
            <jms:transaction action="ALWAYS_JOIN" />
      </jms:outbound-endpoint>
      <default-exception-strategy>
            <commit-transaction exception-pattern="com.example.ExampleException” />
            <jms:outbound-endpoint queue="dead.letter">
                  <jms:transaction action="JOIN_IF_POSSIBLE" />
            </jms:outbound-endpoint>
      </default-exception-strategy>
</flow>
Complex Flow
<flow name=”TwitterFlow”>
      <poll frequency="5000">
             <twitter:search query=”example" />
      </poll>
      <splitter evaluator="json" expression="results" />
      <idempotent-message-filter idExpression="#[json:id]" />
      <enricher target="#[variable:userDescription]" source="#[json:description]">
             <twitter:user userId="#[json:from_user]" />
      </enricher>
      <salesforce:create type="Opportunity">
             <salesforce:sObject>
                   <salesforce:field key="Name" value="#[json:from_user]" />
                   <salesforce:field key="Description" value="#[variable:userDescription]" />
             </salesforce:sObject>
      </salesforce:create>
</flow>
Patterns
• Specific integration Features
• Simple Service
  – Exposes Components as Web Services
• Web Service Proxy
• Bridge
  – Message Adapter and Transformer
• Validator
  – Validates inbound messages synchronously
  – Processes asynchronously
Questions?
Mule Application

Mule 2 Application Design
Mule Scalability
• Global Enterprises
• Performance
• Multiple Data Locations, Sources,
  Destinations and Owners
• Services
  – Software as a Service
  – Infrastructure as a Service
  – Platform as a Service
Problems
• Performance
  –   Computation
  –   Latency
  –   Throughput
  –   Infrastructure
• Integration
  – Adding Functionality
  – Collecting Data
• Security and Identity
• Transactions
Transactions
• ACID
  – Atomicity, Consistency, Isolation, Durability
• Easy on one system
• Hard with distributed systems
  – Pick your boundaries
• Robust failure handling
Computation
• Parallel Processing
• Asynchronous Tasks
• Orchestration
  – Workflow
• Pooling and Threading
• More and faster is better
Bottlenecks
• Bandwidth
  – Networking
  – Latency and Throughput
• External service providers
• Data sources
  – Database
• Messaging
Messaging Backbone
• Sets scalability limits
• Message flow through system
• Infrastructure choices
  –   JMS
  –   Web based
  –   AMQP
  –   XMPP
  –   TIBCO
• Hardware solutions available
Clustering
• Various external components
  – Database
  – Messaging
  – Web Services
• Business logic components
  – Terracotta
  – GigaSpaces XAP
Load Balancing
• Web Services
• Software
• Hardware
  – XML Transformation
  – SSL
• Round Robin
Questions?

Thanks for Listening
Andrew D Kennedy
grkvlt@apache.org

More Related Content

What's hot

Mule ESB
Mule ESBMule ESB
Mule ESBniravn
 
Message properties component in mule
Message properties component in muleMessage properties component in mule
Message properties component in mule
javeed_mhd
 
Overview of Mule
Overview of MuleOverview of Mule
Overview of Mule
mdfkhan625
 
ESB introduction using Mule
ESB introduction using MuleESB introduction using Mule
ESB introduction using Mule
Khasim Cise
 
Mule overview-ppt
Mule overview-pptMule overview-ppt
Mule overview-ppt
Prabhat gangwar
 
A Workhorse Named Mule
A Workhorse Named MuleA Workhorse Named Mule
A Workhorse Named Mule
David Dossot
 
Introduction to es bs mule
Introduction to es bs   muleIntroduction to es bs   mule
Introduction to es bs mule
Achyuta Lakshmi
 
Database component in mule
Database component in muleDatabase component in mule
Database component in mule
Rajkattamuri
 
Junit in mule demo
Junit in mule demo Junit in mule demo
Junit in mule demo
javeed_mhd
 
Mule soa
Mule soaMule soa
Mule soa
D.Rajesh Kumar
 
Mule soft esb – data validation best practices
Mule soft esb – data validation best practicesMule soft esb – data validation best practices
Mule soft esb – data validation best practices
alfa
 
Mule soa
Mule soaMule soa
Mule soa
Son Nguyen
 
Mule integration
Mule integrationMule integration
Mule integration
Son Nguyen
 
Mule agent notifications
Mule agent notificationsMule agent notifications
Mule agent notifications
Shanky Gupta
 
Webservice vm in mule
Webservice vm in muleWebservice vm in mule
Webservice vm in mule
Praneethchampion
 
Mule and web services
Mule and web servicesMule and web services
Mule and web services
Manav Prasad
 
Send email attachment using smtp in mule esb
Send email attachment using smtp in mule esbSend email attachment using smtp in mule esb
Send email attachment using smtp in mule esb
Praneethchampion
 
Send email attachment using smtp in mule esb
Send email attachment using smtp  in mule esbSend email attachment using smtp  in mule esb
Send email attachment using smtp in mule esb
Anand kalla
 
Mulesoft idempotent Message Filter
Mulesoft idempotent Message FilterMulesoft idempotent Message Filter
Mulesoft idempotent Message Filter
kumar gaurav
 

What's hot (19)

Mule ESB
Mule ESBMule ESB
Mule ESB
 
Message properties component in mule
Message properties component in muleMessage properties component in mule
Message properties component in mule
 
Overview of Mule
Overview of MuleOverview of Mule
Overview of Mule
 
ESB introduction using Mule
ESB introduction using MuleESB introduction using Mule
ESB introduction using Mule
 
Mule overview-ppt
Mule overview-pptMule overview-ppt
Mule overview-ppt
 
A Workhorse Named Mule
A Workhorse Named MuleA Workhorse Named Mule
A Workhorse Named Mule
 
Introduction to es bs mule
Introduction to es bs   muleIntroduction to es bs   mule
Introduction to es bs mule
 
Database component in mule
Database component in muleDatabase component in mule
Database component in mule
 
Junit in mule demo
Junit in mule demo Junit in mule demo
Junit in mule demo
 
Mule soa
Mule soaMule soa
Mule soa
 
Mule soft esb – data validation best practices
Mule soft esb – data validation best practicesMule soft esb – data validation best practices
Mule soft esb – data validation best practices
 
Mule soa
Mule soaMule soa
Mule soa
 
Mule integration
Mule integrationMule integration
Mule integration
 
Mule agent notifications
Mule agent notificationsMule agent notifications
Mule agent notifications
 
Webservice vm in mule
Webservice vm in muleWebservice vm in mule
Webservice vm in mule
 
Mule and web services
Mule and web servicesMule and web services
Mule and web services
 
Send email attachment using smtp in mule esb
Send email attachment using smtp in mule esbSend email attachment using smtp in mule esb
Send email attachment using smtp in mule esb
 
Send email attachment using smtp in mule esb
Send email attachment using smtp  in mule esbSend email attachment using smtp  in mule esb
Send email attachment using smtp in mule esb
 
Mulesoft idempotent Message Filter
Mulesoft idempotent Message FilterMulesoft idempotent Message Filter
Mulesoft idempotent Message Filter
 

Viewers also liked

Complete integration with mule esb
Complete integration with mule esbComplete integration with mule esb
Complete integration with mule esb
Son Nguyen
 
Fundamentals of Mule Esb
Fundamentals of Mule EsbFundamentals of Mule Esb
Fundamentals of Mule Esb
Praneethchampion
 
Mule Esb Basics
Mule Esb BasicsMule Esb Basics
Mule Esb Basics
mdfkhan625
 
Muleesb
MuleesbMuleesb
Integration with Dropbox using Mule ESB
Integration with Dropbox using Mule ESBIntegration with Dropbox using Mule ESB
Integration with Dropbox using Mule ESB
Rupesh Sinha
 
Mule esb basic introduction
Mule esb basic introductionMule esb basic introduction
Mule esb basic introduction
Son Nguyen
 
Mule ESB Training
Mule ESB TrainingMule ESB Training
Mule ESB Training
Attune University
 
Mule ESB Tutorial Part 2
Mule ESB Tutorial Part 2Mule ESB Tutorial Part 2
Mule ESB Tutorial Part 2Srikanth N
 
Mule esb presentation
Mule esb presentationMule esb presentation
Mule esb presentation
Lakshmi Prasanna Mavillapalli
 
Mulesoft ppt
Mulesoft pptMulesoft ppt
Mulesoft ppt
Achyuta Lakshmi
 
Mule ESB Tutorial Part 1
Mule ESB Tutorial Part 1Mule ESB Tutorial Part 1
Mule ESB Tutorial Part 1
Srikanth N
 
Mule ESB Fundamentals
Mule ESB FundamentalsMule ESB Fundamentals
Mule ESB Fundamentals
Naresh Chintalcheru
 
Mule ESB - Integration Simplified
Mule ESB - Integration SimplifiedMule ESB - Integration Simplified
Mule ESB - Integration Simplified
Rich Software
 
Why Transliteracy? An Introduction for Librarians
Why Transliteracy? An Introduction for LibrariansWhy Transliteracy? An Introduction for Librarians
Why Transliteracy? An Introduction for Librarians
Bobbi Newman
 
My Presentation for PYP2013
My Presentation for PYP2013My Presentation for PYP2013
My Presentation for PYP2013
Michael Street
 
OCC Presentation
OCC PresentationOCC Presentation
OCC Presentation
Boyd Kassandra
 
Un MóN De Sentiments
Un MóN De SentimentsUn MóN De Sentiments
Un MóN De Sentimentslalvar25
 
Death of Balzac - Victor Hugo
Death of Balzac - Victor HugoDeath of Balzac - Victor Hugo
Death of Balzac - Victor Hugohonore
 
Measuring Your Nonprofit Marketing Success
Measuring Your Nonprofit Marketing SuccessMeasuring Your Nonprofit Marketing Success
Measuring Your Nonprofit Marketing Success
Kivi Leroux Miller
 

Viewers also liked (20)

Complete integration with mule esb
Complete integration with mule esbComplete integration with mule esb
Complete integration with mule esb
 
Fundamentals of Mule Esb
Fundamentals of Mule EsbFundamentals of Mule Esb
Fundamentals of Mule Esb
 
Mule Esb Basics
Mule Esb BasicsMule Esb Basics
Mule Esb Basics
 
Muleesb
MuleesbMuleesb
Muleesb
 
Integration with Dropbox using Mule ESB
Integration with Dropbox using Mule ESBIntegration with Dropbox using Mule ESB
Integration with Dropbox using Mule ESB
 
Mule esb basic introduction
Mule esb basic introductionMule esb basic introduction
Mule esb basic introduction
 
Mule ESB Training
Mule ESB TrainingMule ESB Training
Mule ESB Training
 
Mule ESB Tutorial Part 2
Mule ESB Tutorial Part 2Mule ESB Tutorial Part 2
Mule ESB Tutorial Part 2
 
Mule esb presentation
Mule esb presentationMule esb presentation
Mule esb presentation
 
Mulesoft ppt
Mulesoft pptMulesoft ppt
Mulesoft ppt
 
Mule ESB Tutorial Part 1
Mule ESB Tutorial Part 1Mule ESB Tutorial Part 1
Mule ESB Tutorial Part 1
 
Mule ESB Fundamentals
Mule ESB FundamentalsMule ESB Fundamentals
Mule ESB Fundamentals
 
Mule ESB - Integration Simplified
Mule ESB - Integration SimplifiedMule ESB - Integration Simplified
Mule ESB - Integration Simplified
 
Why Transliteracy? An Introduction for Librarians
Why Transliteracy? An Introduction for LibrariansWhy Transliteracy? An Introduction for Librarians
Why Transliteracy? An Introduction for Librarians
 
My Presentation for PYP2013
My Presentation for PYP2013My Presentation for PYP2013
My Presentation for PYP2013
 
OCC Presentation
OCC PresentationOCC Presentation
OCC Presentation
 
Un MóN De Sentiments
Un MóN De SentimentsUn MóN De Sentiments
Un MóN De Sentiments
 
Ubuntu
UbuntuUbuntu
Ubuntu
 
Death of Balzac - Victor Hugo
Death of Balzac - Victor HugoDeath of Balzac - Victor Hugo
Death of Balzac - Victor Hugo
 
Measuring Your Nonprofit Marketing Success
Measuring Your Nonprofit Marketing SuccessMeasuring Your Nonprofit Marketing Success
Measuring Your Nonprofit Marketing Success
 

Similar to Global Scale ESB with Mule

Mule esb introduction
Mule esb introductionMule esb introduction
Mule esb introduction
Mohammed625
 
Spring integration
Spring integrationSpring integration
Spring integration
Dominik Strzyżewski
 
Nuxeo JavaOne 2007
Nuxeo JavaOne 2007Nuxeo JavaOne 2007
Nuxeo JavaOne 2007
Stefane Fermigier
 
Spring Web Service, Spring Integration and Spring Batch
Spring Web Service, Spring Integration and Spring BatchSpring Web Service, Spring Integration and Spring Batch
Spring Web Service, Spring Integration and Spring Batch
Eberhard Wolff
 
Mule enterprise service bus
Mule enterprise service busMule enterprise service bus
Mule enterprise service bus
Thang Loi
 
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
Pat Patterson
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortal
Jennifer Bourey
 
Lifecycle Management of SOA Artifacts for WSO2 Products
Lifecycle Management of SOA Artifacts for WSO2 ProductsLifecycle Management of SOA Artifacts for WSO2 Products
Lifecycle Management of SOA Artifacts for WSO2 ProductsWSO2
 
01 apache camel-intro
01 apache camel-intro01 apache camel-intro
01 apache camel-introRedpillLinpro
 
Webservices Workshop - september 2014
Webservices Workshop -  september 2014Webservices Workshop -  september 2014
Webservices Workshop - september 2014
clairvoyantllc
 
Mule esb
Mule esbMule esb
Mule esb
sathyaraj Anand
 
Nick harris-sic-2011
Nick harris-sic-2011Nick harris-sic-2011
Nick harris-sic-2011
Seattle Interactive Conference
 
Mule overview
Mule overviewMule overview
Mule overview
Praneethchampion
 
Mule overview
Mule overviewMule overview
Mule overview
Mohammed625
 
Mule Overview
Mule OverviewMule Overview
Mule Overview
AbdulImrankhan7
 
IT talk SPb "Full text search for lazy guys"
IT talk SPb "Full text search for lazy guys" IT talk SPb "Full text search for lazy guys"
IT talk SPb "Full text search for lazy guys"
DataArt
 
Better Enterprise Integration With the WSO2 ESB 4.5.1
Better Enterprise Integration With the WSO2 ESB 4.5.1Better Enterprise Integration With the WSO2 ESB 4.5.1
Better Enterprise Integration With the WSO2 ESB 4.5.1WSO2
 
Toulouse Java User Group
Toulouse Java User GroupToulouse Java User Group
Toulouse Java User Group
Emmanuel Vinel
 

Similar to Global Scale ESB with Mule (20)

Mule esb introduction
Mule esb introductionMule esb introduction
Mule esb introduction
 
Spring integration
Spring integrationSpring integration
Spring integration
 
Camel as a_glue
Camel as a_glueCamel as a_glue
Camel as a_glue
 
Nuxeo JavaOne 2007
Nuxeo JavaOne 2007Nuxeo JavaOne 2007
Nuxeo JavaOne 2007
 
Spring Web Service, Spring Integration and Spring Batch
Spring Web Service, Spring Integration and Spring BatchSpring Web Service, Spring Integration and Spring Batch
Spring Web Service, Spring Integration and Spring Batch
 
Mule enterprise service bus
Mule enterprise service busMule enterprise service bus
Mule enterprise service bus
 
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortal
 
Lifecycle Management of SOA Artifacts for WSO2 Products
Lifecycle Management of SOA Artifacts for WSO2 ProductsLifecycle Management of SOA Artifacts for WSO2 Products
Lifecycle Management of SOA Artifacts for WSO2 Products
 
01 apache camel-intro
01 apache camel-intro01 apache camel-intro
01 apache camel-intro
 
EIP In Practice
EIP In PracticeEIP In Practice
EIP In Practice
 
Webservices Workshop - september 2014
Webservices Workshop -  september 2014Webservices Workshop -  september 2014
Webservices Workshop - september 2014
 
Mule esb
Mule esbMule esb
Mule esb
 
Nick harris-sic-2011
Nick harris-sic-2011Nick harris-sic-2011
Nick harris-sic-2011
 
Mule overview
Mule overviewMule overview
Mule overview
 
Mule overview
Mule overviewMule overview
Mule overview
 
Mule Overview
Mule OverviewMule Overview
Mule Overview
 
IT talk SPb "Full text search for lazy guys"
IT talk SPb "Full text search for lazy guys" IT talk SPb "Full text search for lazy guys"
IT talk SPb "Full text search for lazy guys"
 
Better Enterprise Integration With the WSO2 ESB 4.5.1
Better Enterprise Integration With the WSO2 ESB 4.5.1Better Enterprise Integration With the WSO2 ESB 4.5.1
Better Enterprise Integration With the WSO2 ESB 4.5.1
 
Toulouse Java User Group
Toulouse Java User GroupToulouse Java User Group
Toulouse Java User Group
 

More from Andrew Kennedy

Hyperledger Lightning Talk
Hyperledger Lightning TalkHyperledger Lightning Talk
Hyperledger Lightning Talk
Andrew Kennedy
 
Orchestraing the Blockchain Using Containers
Orchestraing the Blockchain Using ContainersOrchestraing the Blockchain Using Containers
Orchestraing the Blockchain Using Containers
Andrew Kennedy
 
Multi-Container Applications Spanning Docker, Mesos and OpenStack
Multi-Container Applications Spanning Docker, Mesos and OpenStackMulti-Container Applications Spanning Docker, Mesos and OpenStack
Multi-Container Applications Spanning Docker, Mesos and OpenStack
Andrew Kennedy
 
Containers: Beyond the Basics
Containers: Beyond the BasicsContainers: Beyond the Basics
Containers: Beyond the Basics
Andrew Kennedy
 
Running Docker in Production
Running Docker in ProductionRunning Docker in Production
Running Docker in Production
Andrew Kennedy
 
Using Clocker with Project Calico - Running Production Workloads in the Cloud
Using Clocker with Project Calico - Running Production Workloads in the CloudUsing Clocker with Project Calico - Running Production Workloads in the Cloud
Using Clocker with Project Calico - Running Production Workloads in the Cloud
Andrew Kennedy
 
Clocker Now and Next
Clocker Now and NextClocker Now and Next
Clocker Now and Next
Andrew Kennedy
 
Clocker, Calico and Docker
Clocker, Calico and DockerClocker, Calico and Docker
Clocker, Calico and Docker
Andrew Kennedy
 
Introducing the Open Container Project
Introducing the Open Container ProjectIntroducing the Open Container Project
Introducing the Open Container Project
Andrew Kennedy
 
Docker Networking with Project Calico
Docker Networking with Project CalicoDocker Networking with Project Calico
Docker Networking with Project Calico
Andrew Kennedy
 
Clocker 1.0.0 Preview
Clocker 1.0.0 PreviewClocker 1.0.0 Preview
Clocker 1.0.0 Preview
Andrew Kennedy
 
Bringing Docker to the Cloud
Bringing Docker to the CloudBringing Docker to the Cloud
Bringing Docker to the Cloud
Andrew Kennedy
 
Simulating Production with Clocker
Simulating Production with ClockerSimulating Production with Clocker
Simulating Production with Clocker
Andrew Kennedy
 
Metaswitch Project Calico
Metaswitch Project CalicoMetaswitch Project Calico
Metaswitch Project Calico
Andrew Kennedy
 
Clocker - How to Train your Docker Cloud
Clocker - How to Train your Docker CloudClocker - How to Train your Docker Cloud
Clocker - How to Train your Docker Cloud
Andrew Kennedy
 
Clocker - The Docker Cloud Maker
Clocker - The Docker Cloud MakerClocker - The Docker Cloud Maker
Clocker - The Docker Cloud Maker
Andrew Kennedy
 
Docker Networking with Clocker and Weave
Docker Networking with Clocker and WeaveDocker Networking with Clocker and Weave
Docker Networking with Clocker and Weave
Andrew Kennedy
 
Deploying Complex Applications on Docker using Apache Brooklyn
Deploying Complex Applications on Docker using Apache BrooklynDeploying Complex Applications on Docker using Apache Brooklyn
Deploying Complex Applications on Docker using Apache Brooklyn
Andrew Kennedy
 
Deploying Complex Applications on Docker using Apache Brooklyn
Deploying Complex Applications on Docker using Apache BrooklynDeploying Complex Applications on Docker using Apache Brooklyn
Deploying Complex Applications on Docker using Apache Brooklyn
Andrew Kennedy
 
Clocker Evolution
Clocker EvolutionClocker Evolution
Clocker Evolution
Andrew Kennedy
 

More from Andrew Kennedy (20)

Hyperledger Lightning Talk
Hyperledger Lightning TalkHyperledger Lightning Talk
Hyperledger Lightning Talk
 
Orchestraing the Blockchain Using Containers
Orchestraing the Blockchain Using ContainersOrchestraing the Blockchain Using Containers
Orchestraing the Blockchain Using Containers
 
Multi-Container Applications Spanning Docker, Mesos and OpenStack
Multi-Container Applications Spanning Docker, Mesos and OpenStackMulti-Container Applications Spanning Docker, Mesos and OpenStack
Multi-Container Applications Spanning Docker, Mesos and OpenStack
 
Containers: Beyond the Basics
Containers: Beyond the BasicsContainers: Beyond the Basics
Containers: Beyond the Basics
 
Running Docker in Production
Running Docker in ProductionRunning Docker in Production
Running Docker in Production
 
Using Clocker with Project Calico - Running Production Workloads in the Cloud
Using Clocker with Project Calico - Running Production Workloads in the CloudUsing Clocker with Project Calico - Running Production Workloads in the Cloud
Using Clocker with Project Calico - Running Production Workloads in the Cloud
 
Clocker Now and Next
Clocker Now and NextClocker Now and Next
Clocker Now and Next
 
Clocker, Calico and Docker
Clocker, Calico and DockerClocker, Calico and Docker
Clocker, Calico and Docker
 
Introducing the Open Container Project
Introducing the Open Container ProjectIntroducing the Open Container Project
Introducing the Open Container Project
 
Docker Networking with Project Calico
Docker Networking with Project CalicoDocker Networking with Project Calico
Docker Networking with Project Calico
 
Clocker 1.0.0 Preview
Clocker 1.0.0 PreviewClocker 1.0.0 Preview
Clocker 1.0.0 Preview
 
Bringing Docker to the Cloud
Bringing Docker to the CloudBringing Docker to the Cloud
Bringing Docker to the Cloud
 
Simulating Production with Clocker
Simulating Production with ClockerSimulating Production with Clocker
Simulating Production with Clocker
 
Metaswitch Project Calico
Metaswitch Project CalicoMetaswitch Project Calico
Metaswitch Project Calico
 
Clocker - How to Train your Docker Cloud
Clocker - How to Train your Docker CloudClocker - How to Train your Docker Cloud
Clocker - How to Train your Docker Cloud
 
Clocker - The Docker Cloud Maker
Clocker - The Docker Cloud MakerClocker - The Docker Cloud Maker
Clocker - The Docker Cloud Maker
 
Docker Networking with Clocker and Weave
Docker Networking with Clocker and WeaveDocker Networking with Clocker and Weave
Docker Networking with Clocker and Weave
 
Deploying Complex Applications on Docker using Apache Brooklyn
Deploying Complex Applications on Docker using Apache BrooklynDeploying Complex Applications on Docker using Apache Brooklyn
Deploying Complex Applications on Docker using Apache Brooklyn
 
Deploying Complex Applications on Docker using Apache Brooklyn
Deploying Complex Applications on Docker using Apache BrooklynDeploying Complex Applications on Docker using Apache Brooklyn
Deploying Complex Applications on Docker using Apache Brooklyn
 
Clocker Evolution
Clocker EvolutionClocker Evolution
Clocker Evolution
 

Recently uploaded

Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.
ViralQR
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 

Recently uploaded (20)

Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 

Global Scale ESB with Mule

  • 1. Global Scale ESB with Mule Andrew D Kennedy grkvlt@apache.org March 2011
  • 2. Who Am I • Enterprise Java Developer • Apache Qpid Committer • Previously Security Engineer • Over 15 Years Java Experience • Worked with various Investment Banks • Interested in Data Mining and Visualisation
  • 3. This Presentation • What is an ESB • What is Mule • Mule Applications • Mule Scalability
  • 4. What is an ESB • Enterprise Service Bus • SOA – Service Oriented Architecture • SEDA – Staged Event-Driven Architecture • EIP – Enterprise Integration Patterns
  • 5. Service Oriented Architecture • Services – Shared Business Functions • Decoupling – Local and Remote Services • Distributed Applications • Directory and Discovery
  • 6. EIP • Similar to Design Patterns – Gang of Four Book • Shared Terminology • Names for Common Concepts • Allows Discussion • Simplifies Design
  • 7. (Some) Common Patterns • Aggregator (268) • Channel Adapter (127) • Content Based Router (230) • Dead Letter Channel (119) • Selective Consumer (515) • Message Translator (85) • Guaranteed Delivery (122)
  • 8. What is Mule • Open Source Project • MuleSoft – Mule Forge – Mule Enterprise – Mule MQ – Tcat Server • 2.x - Legacy Applications • 3.1.1 - Current Community Release • 3.2.0 - Latest Developer Build
  • 9. Transports • Carry Messages between Services • Connector – Configuration – Threading – Retry • Endpoint – Connects Services – Transform Messages – Transaction Boundary
  • 10. Endpoint Examples <file:inbound-endpoint path="/esb/in" comparator="org.mule.transport.file.comparator.Older FirstComparator" reverseOrder="true” /> <jetty:endpoint name="server" host="localhost" port="60203" path="services/Lookup" /> <imaps:endpoint name=”mail" host="localhost" password=”hunter2" port="123" user=”adk"/> <quartz:endpoint name=”batch" repeatCount="10" repeatInterval=”60000" jobName="job"/> <jms:inbound-endpoint queue="test.queue"/>
  • 11. VM • Communication within VM • Synchronous or Asynchronous • Transactional <vm:connector name="async" queueEvents="true” /> <vm:inbound-endpoint path="in" connector-ref="async"/>
  • 12. JMS • Queues • Topics • Request-Response <jms:connector name=”jms" specification="1.1" connectionFactory-ref=”qpid" username=”adk" password=”hunter2” /> <jms:outbound-endpoint queue=”audit” /> <jms:inbound-endpoint topic=”uk.*.gbp” />
  • 13. Web Services • HTTP and HTTPS – Custom Data Formats • CXF – JAX-WS – SOAP – WSDL • REST
  • 14. CXF JAX-WS <inbound-endpoint address="http://localhost:63081/hello" /> <cxf:jaxws-service serviceClass="org.example.ServiceImpl” /> <cxf:jaxws-client clientClass=”com.example.Client” wsdlPort="SoapPort” wsdlLocation="classpath:/save.wsdl” operation=”output” /> <outbound-endpoint address="http://www.example.com/services/save” />
  • 15. File System • Poll Directory for Input <file:connector name="input" fileAge="500" autoDelete="true" pollingFrequency="100" moveToDirectory="/backup" moveToPattern="#[header:originalFilename].backup” /> • Write Output File <file:connector name="output" outputAppend="true" outputPattern="#[function:datestamp]- #[header:originalFilename]" />
  • 16. Other Transports • AJAX • TCP • jBPM • UDP • JDBC • FTP • Quartz • POP3 • STDIO • IMAP • RMI • SMTP • Servlet • XMPP
  • 17. Transformers • Change message content • XML to POJO via JAXB • Applied to endpoints • Efficient mechanism for processing • Similar to AOP
  • 18. Transformer Types • Encryption and Decryption • ByteArray to Object • Expression Evaluator • XML and JSON • Compression • Encoding and Decoding
  • 19. Filtering • Apply to endpoints • Payload Type • Expression – XPath, OGNL, JXPath • RegEx • Wildcard • Message Property • Logical Operators – And, Or, Not
  • 20. Filtering Examples <and-filter> <message-property-filter pattern="JMSCorrelationID=1234567890"/> <message-property-filter pattern="JMSReplyTo=null"/> </and-filter> <or-filter> <payload-type-filter expectedType="java.lang.String"/> <payload-type-filter expectedType="java.lang.StringBuffer"/> </or-filter> <not-filter> <wildcard-filter pattern=”com.example.*"/> </not-filter>
  • 21. Routers • Control message flow at endpoints • Used to link services • Both inbound and outbound • Specify Filtering and Transformations
  • 22. Selective Consumer <inbound> <selective-consumer-router> <mulexml:jxpath-filter expression="msg/header/resultcode = 'success'"/> </selective-consumer-router> <forwarding-catch-all-strategy> <jms:endpoint topic="error.topic"/> </forwarding-catch-all-strategy> </inbound>
  • 23. Idempotent Filter <inbound> <idempotent-receiver-router idExpression="#[message:id]-#[header:foo]"> <simple-text-file-store directory="./idempotent” /> </idempotent-receiver-router> </inbound>
  • 24. Filtering Router <outbound> <forwarding-catch-all-strategy> <jms:outbound-endpoint queue="error.queue"/> </forwarding-catch-all-strategy> <filtering-router> <smtp:outbound-endpoint to=”adk@example.com"/> <payload-type-filter expectedType="java.lang.Exception"/> </filtering-router> <filtering-router> <jms:outbound-endpoint queue="string.queue"/> <and-filter> <payload-type-filter expectedType="java.lang.String"/> <regex-filter pattern="the quick brown (.*)"/> </and-filter> </filtering-router> </outbound>
  • 25. Services • Combine Endpoints, Routers and Components • Mule 2.0 idiom • Replaced with Flows and Patterns – Simpler to use and configure – Some features still not available
  • 26. Flows • Mule 3 idiom • Inbound endpoint • Message processors – Chained execution – Components • Outbound endpoint for one-way • Response for request-response
  • 27. Components • Carry out actions • Business logic in a flow • Simple components – Logging – Passthrough – Testing • Spring or POJO • Web services
  • 28. Message Processors • Aggregator and Splitter • Message Filters • Recipient List • Resequencer • Round Robin • Wire Tap
  • 29. Example Flow <flow name=”OrderFlow"> <file:inbound-endpoint path="/incoming"> <file:filename-filter name=”order-*.xml"/> </file:inbound-endpoint> <xml:xslt-transformer xsl-file=”order-transform.xsl"/> <splitter expression="xpath://order"/> <!-- The following message processors will be invoked for each order in the xml file --> <expression-filter expression="xpath://order[@type='book']"/> <component class=”com.example.BookOrderProcessor"/> <smtp:outbound-endpoint subject="Order Confirmation" address="#[variable:email]"/> <jdbc:outbound-endpoint ref=“saveOrder"/ > <default-exception-strategy> <jms:outbound-endpoint queue="failedOrders"/> </default-exception-strategy> </flow>
  • 30. JMS Flow <flow name=”JmsFlow"> <jms:inbound-endpoint queue="in"> <jms:transaction action="ALWAYS_BEGIN" /> </jms:inbound-endpoint> <component class="com.example.ProcessMessage" /> <jms:outbound-endpoint queue="out"> <jms:transaction action="ALWAYS_JOIN" /> </jms:outbound-endpoint> <default-exception-strategy> <commit-transaction exception-pattern="com.example.ExampleException” /> <jms:outbound-endpoint queue="dead.letter"> <jms:transaction action="JOIN_IF_POSSIBLE" /> </jms:outbound-endpoint> </default-exception-strategy> </flow>
  • 31. Complex Flow <flow name=”TwitterFlow”> <poll frequency="5000"> <twitter:search query=”example" /> </poll> <splitter evaluator="json" expression="results" /> <idempotent-message-filter idExpression="#[json:id]" /> <enricher target="#[variable:userDescription]" source="#[json:description]"> <twitter:user userId="#[json:from_user]" /> </enricher> <salesforce:create type="Opportunity"> <salesforce:sObject> <salesforce:field key="Name" value="#[json:from_user]" /> <salesforce:field key="Description" value="#[variable:userDescription]" /> </salesforce:sObject> </salesforce:create> </flow>
  • 32. Patterns • Specific integration Features • Simple Service – Exposes Components as Web Services • Web Service Proxy • Bridge – Message Adapter and Transformer • Validator – Validates inbound messages synchronously – Processes asynchronously
  • 34. Mule Application Mule 2 Application Design
  • 35. Mule Scalability • Global Enterprises • Performance • Multiple Data Locations, Sources, Destinations and Owners • Services – Software as a Service – Infrastructure as a Service – Platform as a Service
  • 36. Problems • Performance – Computation – Latency – Throughput – Infrastructure • Integration – Adding Functionality – Collecting Data • Security and Identity • Transactions
  • 37. Transactions • ACID – Atomicity, Consistency, Isolation, Durability • Easy on one system • Hard with distributed systems – Pick your boundaries • Robust failure handling
  • 38. Computation • Parallel Processing • Asynchronous Tasks • Orchestration – Workflow • Pooling and Threading • More and faster is better
  • 39. Bottlenecks • Bandwidth – Networking – Latency and Throughput • External service providers • Data sources – Database • Messaging
  • 40. Messaging Backbone • Sets scalability limits • Message flow through system • Infrastructure choices – JMS – Web based – AMQP – XMPP – TIBCO • Hardware solutions available
  • 41. Clustering • Various external components – Database – Messaging – Web Services • Business logic components – Terracotta – GigaSpaces XAP
  • 42. Load Balancing • Web Services • Software • Hardware – XML Transformation – SSL • Round Robin
  • 43. Questions? Thanks for Listening Andrew D Kennedy grkvlt@apache.org