List of Figures

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.13. Adding a JAR

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.

Figure 1.20. Choose the format to export to.

Figure 1.21. Choose where to save the resulting ZIP file.

Chapter 2. Processing messages with Mule

Figure 2.1. The product registration flow in Mule Studio

Figure 2.2. A symbolic representation of the product registration flow that highlights its message source and processors

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

Figure 3.22. tweetNewBrews flow in Mule Studio

Figure 3.23. samplePublicStatusUpdates flow in Mule Studio

Chapter 4. Transforming data with Mule

Figure 4.1. The default behavior of a Mule transformer

Figure 4.2. A chain of a property transformer, a flow variable transformer, and a session variable 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

Figure 5.17. Aggregating line items

Figure 5.18. Routing the 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

Figure 6.5. Behavior of the HTTP proxy

Figure 6.6. Behavior of the WS proxy

Chapter 7. Integration architecture with Mule

Figure 7.1. Prancing Donkey’s Guerrilla SOA architecture using a hub-and-spoke architecture: web application clients to Mule applications; mobile device clients to Mule applications; standalone Mule instance hosting four discrete applications; various external integration points decoupled from the front-end client.

Figure 7.2. Mordor Brewing Company’s monolithic ESB architecture: SOAP is enforced as the protocol standard on all remote integration points.

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

Figure 7.5. Front-end order submission

Figure 7.6. Backend order processing

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.13. The canonical ESB deployment topology of Mule instances relies on a central JMS provider.

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

Figure 9.11. Creating transactions on outbound endpoints

Figure 9.12. Using transaction demarcation

Chapter 10. Securing Mule

Figure 10.1. Delegation between Mule Spring Security and Spring Security

Figure 10.2. File format for using the Spring user service

Chapter 11. Tuning Mule

Figure 11.1. A typical staged event-driven architecture (SEDA) implementation

Figure 11.2. Mule relies on three thread pools to handle message events before, inside of, and after each flow.

Figure 11.3. Two flows using the same connector share the same receiver and dispatcher thread pools.

Figure 11.4. Each thread pool has a dedicated buffer that can accumulate pending requests if no thread is available to process the message.

Figure 11.5. In fully asynchronous mode, a thread is borrowed from each pool at each stage of the message processing.

Figure 11.6. If only the receiver is synchronous, one thread from its pool will be used up to the component method invocation stage.

Figure 11.7. In fully synchronous mode, the receiver thread is used throughout all the stages of the message processing.

Figure 11.8. If only the dispatcher is synchronous, the receiver thread is used up to the flow in which a thread is taken from the pool and used throughout the dispatcher.

Figure 11.9. A fully synchronous flow using the VM transport can piggyback an incoming thread for event processing.

Figure 11.10. A polling receiver permanently borrows a thread from the transport’s receiver pool.

Figure 11.11. Some transports have their own receiver thread pool handled outside of Mule’s infrastructure.

Figure 11.12. Some transports support the notion of a request backlog used when the receiver thread pool is exhausted.

Figure 11.13. Thread pools are configured via a hierarchy of profiles whose scope goes from the most generic to the most specific profile.

Figure 11.14. Profiling Mule’s memory with YourKit while messages are being processed

Figure 11.15. Comparing two profiling session snapshots helps determine the impact of configuration changes.

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.4. Using the client to send messages to a remote Mule application via a dedicated dispatcher agent

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

Figure 13.5. Mule Studio’s cloud palette

Figure 13.6. The Brewerydb connector in Mule Studio

Chapter 14. Augmenting Mule with orthogonal technologies

Figure 14.1. Cron expression format

Appendix D. A sample Mule application

Figure D.1. The Mule application in Mule Studio

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset