ESB Online Training Part 2

27
ESB Training Online

Transcript of ESB Online Training Part 2

Page 1: ESB Online Training Part 2

ESB Training Online

Page 2: ESB Online Training Part 2

Agenda Day 2

Structuring Mule Applications• Create and reference flows

and subflows• Pass messages between

flows using the Java Virtual Machine (VM) transport

• Investigate variable persistence through subflows and flows and across transport barriers

• Encapsulate global elements in separate configuration files

• Sharing resources between applications

Consuming Web Services• Consume RESTful web services with and

without parameters• Consume SOAP web services• Use DataWeave to pass parameters to

SOAP web services

Page 3: ESB Online Training Part 2

Structuring Mule Applications

Goal

Page 4: ESB Online Training Part 2

Create and reference flows and subflows

Makes the graphical view more intuitive

Makes XML code easier to read

Enables code reuse

Provides separation between an interface and implementation

Makes them easier to test

Break up flows into separate flows and subflows

Page 5: ESB Online Training Part 2

Subflows

Subflows are executed exactly as if the processors were still in the calling flow

Page 6: ESB Online Training Part 2

Flows

Flows, on the other hand, have much more flexibility in how they are used• Can have their own processing and

exception strategies• Can be synchronous or asynchronous

Flows without message sources are sometimes called private flows

Page 7: ESB Online Training Part 2

Usage of pools depends on a flow’s behavior

Page 8: ESB Online Training Part 2

Synchronous Strategy

When a flow receives a message, all processing, including the processing of the response, is done in the same thread

Uses only the message source's thread pool

The Flow's thread pool is elastic and will have one idle thread that is never used

Tuning for higher-throughput happens on the connector receiver's level

Threads are blocking, preventing reuse by other inbound requests until entire flow has completed processing

Page 9: ESB Online Training Part 2

Queued-Asynchronous Strategy

Decouples and uses all 3 thread pools• Receiver/Source thread pool• Flow thread pool• Despatcher thread pool

Uses queues, whose threads drop messages off for the subsequent pool's thread to pickup

Pools, queues, and behaviors of this strategy are configurable

By default, the flow thread pool has 16 threads

Page 10: ESB Online Training Part 2

Creating Flows and Subflows

Walk Through DemoModule 03

Page 11: ESB Online Training Part 2

The Java Virtual Machine (VM) transport can be used for intra-JVM communication between flows

Each app in a Mule instance has its own, unique set of VM endpoints

The VM transport can only handle communications within an app or between apps in the same domain

This transport by default uses in-memory queues bit can optionally be configured to use persistent queues

The Java Virtual Machine (VM) transport

Page 12: ESB Online Training Part 2

Using Java Virtual Machine (VM) transport in Mule flows

Walk Through DemoModule 04

Page 13: ESB Online Training Part 2

Separating apps into multiple configuration files

Organizing Mule application files

Just as we separated flows into multiple flows, we also want to separate configuration files into multiple configuration files

Monolithic files are difficult to read and maintain

Separating an application into multiple configuration files makes code• Easier to read• Easier to work with• Easier to test• More maintainable

Encapsulating global elements to global configuration file

It can be confusing if you reference global elements in one file that are defined in various, unrelated files

It also makes it hard to find them

A good solution is to put most global elements in one config file• All the rest of the files reference

them• If global element is specific to and

only used in one file, it makes sense to keep it in that file

Page 14: ESB Online Training Part 2

Creating global configuration file

Walk Through DemoModule 05

Page 15: ESB Online Training Part 2

Sharing resources between applications

Shared domains

Can be used to share some connectors and endpoints between applications

Enables multiple development teams to work in parallel using the same set of reusable connectors

Defining these connectors as shared resources at the domain level allows the team to• Expose multiple services

within the domain on same port

• Share the connection to persistent storage

• Ensure consistency between applications upon any changes, as the configuration is only set in one place

Using domains to share resources between apps

Only available on-prem, not in Cloudhub

The general process is to• Create a Mule Domain

Project and associate Mule applications with a domain

• Define a set of resources for a domain to share between apps

Currently supported connectors• HTTP/HTTPS, VMQ,

Database, JMS, VM, Jboss and Bitronix Transaction Managers

Page 16: ESB Online Training Part 2

Creating Mule Domain Project

Walk Through DemoModule 06

Page 17: ESB Online Training Part 2

Summary

Separate a flow into multiple flows for easier to read files and for reusability

Extract duplicate code into reusable private flows or subflows

Private flows are flows without message sources

Subflows are executed exactly as if in the calling flow• always run synchronously• Inherit processing and exception

strategies of the calling flow

A flow processing strategy determines how Mule implements message processing for a given flow• All Mule flows have an implicit

processing strategy which Mules apply automatically

• Endpoints with a request-response exchange pattern are set to synchronous

• Endpoints with a one-way exchange pattern are set to queued-asynchronous

Use Flow Reference to let flows directly reference one another without a transport in a middle

Use the Java Virtual Machine (VM) transport for intra-JVM communication between Mule flows

Flow variables persist through all flows unless the message crosses a transport boundary (like VM or HTTP)

Session variable persist across some but not all transport barriers (VM yes, HTTP no)

Separate application functionality into multiple configuration files

Share resources between applications by creating a shared Domain

Page 18: ESB Online Training Part 2

Consuming Web Services

Goal

Page 19: ESB Online Training Part 2

Consuming RESTful Web Services

First check and see if there is an existing Anypoint Connector to connect to the service provider

If there is not, use the HTTP Request connector• For the connector:

Specify host, port, and optionally, a base path

• For the endpoint Specify path and method

Page 20: ESB Online Training Part 2

Passing data to a RESTful web service

For an HTTP Request endpoint, you can add parameters• URI parameters• Query parameters• Headers

Send form parameters with a request by setting them in the payload

Include attachments by adding an Attachment transformer to your flow

Page 21: ESB Online Training Part 2

Consuming RESTful Web Services

Walk Through DemoModule 07

Page 22: ESB Online Training Part 2

Consuming SOAP Web Services

Mule's SOAP support is based on Apache CXF

CXF is a web services framework in Java for SOAP messaging

Handles all serialization and deserialization

Handles all SOAP envelope and namespace processing

Developer sees only POJOs, etc. - not SOAP XML

Page 23: ESB Online Training Part 2

Consuming SOAP Web Services

First check and see if there is an existing Anypoint Connector to connect to the service provider

If there is not, use the Web Service Consumer connector• provide the location of the WSDL• The rest will be configured for you:

host, port, address, available operations

If you need more features, use the CXF component• Also used to expose an endpoint as a

SOAP service

Page 24: ESB Online Training Part 2

Consuming SOAP Web Services

Walk Through DemoModule 08

Page 25: ESB Online Training Part 2

Passing Arguments to SOAP Web Services with

DataWeave

Use DataWeave to add and map an input argument

Page 26: ESB Online Training Part 2

Passing Arguments to SOAP Web Services with DataWeave

Walk Through DemoModule 09

Page 27: ESB Online Training Part 2

Summary

Use the HTTP Request connector to consume REST web services

Use the Web Service Consumer connector to consume SOAP web services

Use the DataWeave Transform Message component to pass arguments to SOAP web services