Chapter 1. Discovering Mule
Figure 1.1. Point-to-point, or spaghetti, integration
Figure 1.2. Application integration with an ESB
Figure 1.3. Launching Mule Studio
Figure 1.4. Installing the community runtime
Figure 1.5. Creating a new Mule project
Figure 1.6. Defining the initial flow
Figure 1.7. Dragging the HTTP inbound endpoint to the flow
Figure 1.8. Configuring the HTTP endpoint’s properties
Figure 1.9. Adding the byte-array-to-string transformer and JMS outbound endpoint to the flow
Figure 1.10. Configuring the JMS endpoint’s properties
Figure 1.11. Configuring the JMS connector
Figure 1.12. Configuring the ActiveMQ connector
Figure 1.14. Adding a logger to the flow
Figure 1.15. Running the application
Figure 1.16. Examining the console output
Figure 1.17. Looking at the products queue
Figure 1.18. Running the FunctionalTestCase
Figure 1.19. Choose to export the application.
Chapter 2. Processing messages with Mule
Figure 2.1. The product registration flow in Mule Studio
Figure 2.3. Mule Studio clearly shows the response phase.
Figure 2.4. Two flows and a subflow shown in Mule Studio
Figure 2.5. A private flow shown in Mule Studio
Figure 2.6. Message exchange patterns influence a flow’s threading model.
Figure 2.7. The MuleEvent and its main objects
Figure 2.8. Structure of the Mule message
Figure 2.9. Mule messages can contain data from any source.
Figure 2.10. Properties’ scopes determine their travel boundaries.
Chapter 3. Working with connectors
Figure 3.1. Selecting endpoint properties
Figure 3.2. Selecting the Endpoint Properties panel
Figure 3.3. Explicitly adding a connector
Figure 3.4. Editing the connector
Figure 3.5. copyExpenseReports flow in Mule Studio
Figure 3.6. postExpenseReports flow in Mule Studio
Figure 3.7. expenseReportCallback flow in Mule Studio
Figure 3.8. brewRestService flow in Mule Studio
Figure 3.9. brewSoapService flow in Mule Studio
Figure 3.10. Using SOAP UI to invoke the SOAP service
Figure 3.11. dispatchExpenseReports flow in Mule Studio
Figure 3.12. logExpenseReports flow in Mule Studio
Figure 3.13. brewJmsService flow in Mule Studio
Figure 3.14. dispatchCoolingAlerts flow in Mule Studio
Figure 3.15. sendExpenseReportEmails flow in Mule Studio
Figure 3.16. retrieveSalesStatistics flow in Mule Studio
Figure 3.17. ftpProductCatalog flow in Mule Studio
Figure 3.18. pollForStuckOrders flow in Mule Studio
Figure 3.19. saveCoolingAlerts flow in Mule Studio
Figure 3.20. queryCoolingAlerts flow in Mule Studio
Figure 3.21. VM flows in Mule Studio
Chapter 4. Transforming data with Mule
Figure 4.1. The default behavior of a Mule transformer
Figure 4.3. A message enricher brings extra data to the main flow.
Chapter 5. Routing data with Mule
Figure 5.1. Dispatch cooling alerts
Figure 5.2. Routing expense reports based on Content-Type
Figure 5.3. Routing a message based on the type of the payload
Figure 5.4. Routing a message using an XPath expression
Figure 5.5. Filter messages by type
Figure 5.6. Filter messages by priority header
Figure 5.7. Using the wildcard filter to filter text and XML
Figure 5.8. Filtering with a regular expression
Figure 5.9. Validate and dispatch cooling alerts
Figure 5.10. Route high-priority orders with XPath
Figure 5.11. Route highpriority orders with properties
Figure 5.12. Using a logical filter
Figure 5.13. Use XPath to determine ID for idempotency
Figure 5.14. Multicast data to SMTP and MongoDB endpoints
Figure 5.15. Scatter/gather IO
Figure 5.16. Splitting line items
Chapter 6. Working with components and patterns
Figure 6.1. The component entry-point resolution strategy (EPRS) used by Mule
Figure 6.2. Behavior of the simple service pattern
Figure 6.3. Behavior of the bridge pattern
Figure 6.4. Behavior of the validator pattern
Chapter 7. Integration architecture with Mule
Figure 7.3. Mule as a service mediation layer: a dedicated Mule application to perform mediation
Figure 7.4. Populate and query records in Salesforce
Chapter 8. Deploying Mule
Figure 8.1. Conceptual deployment model of Mule standalone server
Figure 8.2. Directory structure of Mule standalone server
Figure 8.3. The Mule’s hierarchy of classloaders
Figure 8.4. Export dialog of Mule Studio
Figure 8.5. Export Mule Project dialog of Mule Studio
Figure 8.6. Mule applications communicating using JMS
Figure 8.7. Conceptual deployment model of Mule standalone server with Jetty embedded in an app
Figure 8.8. Conceptual deployment model of Mule embedded in a web application
Figure 8.9. CloudHub management console
Figure 8.10. CloudHub’s New Application dialog
Figure 8.11. Conceptual deployment model of Mule embedded in a standard Java application
Figure 8.12. A network load balancer provides high availability to Mule instances
Figure 8.14. Clustered and load-balanced Mule EE instances
Figure 8.15. Simple filesystem-based persisted VM queues are standard with Mule.
Figure 8.16. An HA JMS provider can host queues for all communications within a Mule application.
Figure 8.17. Behavior of an idempotent filter
Figure 8.18. An HA JMS provider can host queues for all communications within a Mule instance.
Chapter 9. Exception handling and transaction management with Mule
Figure 9.1. Reconnection tab for a connector in Mule Studio
Figure 9.2. Exception strategies as shown in Mule Studio’s toolbox
Figure 9.3. Mule Studio equivalent for listing 9.10
Figure 9.4. Mule Studio equivalent for listing 9.11
Figure 9.5. JMS endpoint using transactions
Figure 9.6. Prancing Donkey’s approach for decoupled data management
Figure 9.7. Performing a transaction across multiple resources
Figure 9.8. Wrapping billing data reception into a single transaction
Figure 9.9. Reliability pattern for HTTP
Figure 9.10. Using transactions created on inbound endpoints
Chapter 10. Securing Mule
Figure 10.1. Delegation between Mule Spring Security and Spring Security
Chapter 11. Tuning Mule
Figure 11.1. A typical staged event-driven architecture (SEDA) implementation
Figure 11.3. Two flows using the same connector share the same receiver and dispatcher thread pools.
Figure 11.10. A polling receiver permanently borrows a thread from the transport’s receiver pool.
Figure 11.14. Profiling Mule’s memory with YourKit while messages are being processed
Chapter 12. Developing with Mule
Figure 12.1. Each Mule application has a specific Mule context.
Figure 12.2. The Mule context gives access to a Mule application’s internals.
Figure 12.3. The client is a convenient way to reach a Mule application within the same JVM.
Figure 12.5. The client can bootstrap a minimal Mule instance to use its transport layer.
Figure 12.6. The family of Mule server notifications is rich and diverse.
Figure 12.7. The interfaces of the object store API and some elements or classes using them
Figure 12.8. Starting JMeter for the first time
Figure 12.9. Specifying a thread group to simulate 5 concurrent JMS producers sending 20 messages
Figure 12.10. Configuring a JMS Publisher sampler with JMeter
Figure 12.11. Configuring a JMS Subscriber sampler with JMeter
Figure 12.12. Examining results of a JMeter listener
Figure 12.13. The Mule Studio visual debugger
Figure 12.14. Connecting Eclipse to Mule standalone for remote debugging
Figure 12.15. Setting a conditional breakpoint in a generic Mule class
Chapter 13. Writing custom cloud connectors and processors
Figure 13.1. A diagram of the relations of DevKit’s annotation parsers
Figure 13.2. Signing up at BreweryDB
Figure 13.3. Registering an application at BreweryDB
Figure 13.4. Mule Studio’s Install dialog
Chapter 14. Augmenting Mule with orthogonal technologies
Appendix D. A sample Mule application