Routing Message Interaction Patterns - Reference Implementation With Oracle Service Bus (OSB11g)

Routing Message Interaction Patterns - Reference
Implementation
With Oracle Service Bus (OSB11g)
1
Summary
The document covers the Routing Message Interaction Patterns with the reference implementation in
OSB11g.
The Message Interaction patterns can be classified into
Integration Styles
Messaging Systems
Messaging Channels
Message Router
Message Construction
Message Transformation
Messaging Endpoints
System Management
Following tables provides the snapshot of the different routing patterns and their nature of support in
OSB11g
Directly Supported Patterns in OSB11g
Message Broker
Pipes & Filters
Message Router
Content Based Router
Dynamic Routing
Message Filter
Scatter Gather
Splitter
Composed Message Processor
Recipient List
Routing Slip
Re-Sequencer
Aggregator
Process Manager
Indirect Support
Message Router
Consumes a Message from one Message Channel and republishes it to a different Message Channel
depending on a set of conditions.
Classification
Conditional Routing
Operational Routing
Content Based Routing
Header Based Routing
2
References
http://www.eaipatterns.com/toc.html
Oracle Service Bus developers guide
3
Message Interaction Patterns – Implementation in OSB
Contents
Summary ....................................................................................................................................................... 2
Message Router ............................................................................................................................................ 2
Classification ............................................................................................................................................. 2
References .................................................................................................................................................... 3
Message Interaction Patterns – Implementation in OSB ............................................................................. 4
1
2
3
4
5
6
7
Pattern – Pipes & Filters........................................................................................................................ 6
1.1
Description: ................................................................................................................................... 6
1.2
Implementation ............................................................................................................................ 6
1.3
Alternate Approach....................................................................................................................... 6
Pattern – Content Based Routing ......................................................................................................... 7
2.1
Description .................................................................................................................................... 7
2.2
Implementation ............................................................................................................................ 7
2.3
Alternate Approach....................................................................................................................... 7
Pattern - Dynamic Routing .................................................................................................................... 8
3.1
Description .................................................................................................................................... 8
3.2
Implementation ............................................................................................................................ 8
3.3
Alternate Approach....................................................................................................................... 9
Pattern - Message Filter ...................................................................................................................... 10
4.1
Description .................................................................................................................................. 10
4.2
Implementation .......................................................................................................................... 10
Pattern - Recipient List ........................................................................................................................ 12
5.1
Description .................................................................................................................................. 12
5.2
Implementation .......................................................................................................................... 12
Pattern - Splitter.................................................................................................................................. 14
6.1
Description .................................................................................................................................. 14
6.2
Implementation .......................................................................................................................... 14
Pattern - Resequencer ........................................................................................................................ 16
7.1
Description .................................................................................................................................. 16
7.2
Assumption ................................................................................................................................. 16
7.3
Implementation .......................................................................................................................... 16
4
8
Pattern - Aggregator ........................................................................................................................... 17
8.1
Description .................................................................................................................................. 17
8.2
Implementation .......................................................................................................................... 17
9
Pattern - Composed Message Processor ............................................................................................ 18
9.1
Description .................................................................................................................................. 18
9.2
Implementation .......................................................................................................................... 18
10
Pattern - Scatter Gather .................................................................................................................. 19
10.1
Description .................................................................................................................................. 19
10.2
Implementation .......................................................................................................................... 19
11
Pattern - Routing Slip ...................................................................................................................... 20
11.1
Description .................................................................................................................................. 20
11.2
Assumption ................................................................................................................................. 20
11.3
Implementation .......................................................................................................................... 20
12
Pattern – Process Manager ............................................................................................................. 22
12.1
Description .................................................................................................................................. 22
12.2
Difference from the Routing Slip ................................................................................................ 22
12.3
Implementation .......................................................................................................................... 22
13
13.1
Pattern - Message Broker ............................................................................................................... 24
Description .................................................................................................................................. 24
5
1 Pattern – Pipes & Filters
1.1 Description:
Divide a larger processing task into a sequence of smaller, independent processing steps (Filters) that
are connected by channels (Pipes)
1.2 Implementation
OSB Constructs Used: Pipeline, Stage
Drag the Pipeline Node to the Message Flow
Add the stage to the Pipeline (Each Stage represents the filter)
Multiple stages can be added into the pipeline , connected by Pipes
Pipeline Pair
Filter
Pipe
1.3 Alternate Approach
Pipeline Pair acts as the filter
6
Proxy Service acts as the filter
2 Pattern – Content Based Routing
2.1 Description
To route each message to the correct recipient based on message content. The routing can be based on
a number of criteria such as existence of fields, specific field values in the message body.
2.2 Implementation
OSB Constructs Used: Conditional Branch
Add Conditional Branch to the Message Flow
Add the desired number of branches ; and specify the routing condition for each
o The route/branch is determined by condition imposed on the payload(body)
2.3 Alternate Approach
If-else
Routing Table
7
3 Pattern - Dynamic Routing
3.1 Description
Router that can self-configure based on special configuration messages from participating destinations.
In more sophisticated integration scenarios, the Content-Based Router can take on the form of a
configurable rules engine that computes the destination channel based on a set of configurable rules
3.2 Implementation
OSB Constructs Used: Route Node, Dynamic Routing
Add Route Node to the Message Flow
Drag the Dynamic Routing to the Route Node
o Specify the Routing Expression
8
3.3 Alternate Approach
Dynamic Publish
9
4 Pattern - Message Filter
4.1 Description
To eliminate undesired messages from a channel based on a set of criteria
4.2 Implementation
The Message filter pattern can be worked at various levels like
Type
Entry level
Processing level
Message Selector
Description
The messages that conform to a particular schema
are picked
All the messages are polled but only the relevant
ones are processed
While using the JMS protocol ; message selector
can also be used as a filter mechanism
Entry level – determine the message type/format at entry level of the Proxy Service
o Message type Proxy Service with fixed XSD/MFL
Processing level – determine the message format at the message flow level of the Proxy Service
o Use if-else construct to determine and process the desired message
10
11
5 Pattern - Recipient List
5.1 Description
Define a channel for each recipient. Then use a Recipient List to inspect an incoming message,
determine the list of desired recipients, and forward the message to all channels associated with the
recipients in the list.
5.2 Implementation
OSB Constructs Used: Service Callout & Dynamic Routing
Use Base Proxy Service to determine the recipient(s)
o Use a mapping file to maintain the recipient(s) list and the routing condition
Use Service Callout to invoke the Router Proxy ( the number of invocations of the router proxy
depends upon the number of targets in the list)
Router Proxy Service uses dynamic routing to route to the end services(Proxy / Business)
Base Proxy Service Configuration – Service Callout inside the for – each construct
12
Router Proxy Service Configuration –Dynamic Route
13
6 Pattern - Splitter
6.1 Description
Use a Splitter to break out the composite message into a series of individual messages, each containing
data related to one item.
6.2 Implementation
OSB Construct used : Split Join ( supports WSDL based invocation of services or java callouts)
o Base WSDL has only input associated with the operation
<wsdl:binding name="assetBinding" type="tns:assetPort">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="getAssetInfo">
<soap:operation soapAction="" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
14
15
7 Pattern - Resequencer
7.1 Description
Use a stateful filter, a Resequencer, to collect and re-order messages so that they can be published to
the output channel in a specified order.
7.2 Assumption
Message contains the following identifiers
Group Id : Specifies the group for a particular message
Total Count : Specifies the total number of messages in the group
Sequence Id: Specifies the sequence of the message in the group
7.3 Implementation
Use a poll based(file) proxy service to persist the message/ file reference into the database
o Maintain two tables in the database
Table
Description
GroupDetails
Maintains the list of group and the total
messages associated with that group
GroupId
TotalCount
This table is populated once per
group.
MessageDetails
Stores the information pertaining to a
message
GroupId
SequenceId
Message/File Reference
Stored Procedure to populate the tables and provide the message / file reference when the total
count for a group in GroupDetails matches the message count in message details
Use java callout to read the messages/file and dump into another location
16
8 Pattern - Aggregator
8.1 Description
Use a stateful filter, an Aggregator, to collect and store individual messages until a complete set of
related messages has been received. Then, the Aggregator publishes a single message distilled from the
individual messages.
8.2 Implementation
The implementation is the extension of the re-sequencer with a difference that in re-sequencer
the messages are not necessarily joined into a single message but in aggregator the messages
are joined into a single message and validated
17
9 Pattern - Composed Message Processor
9.1 Description
Use Composed Message Processor to process a composite message. The Composed Message Processor
splits the message up, routes the sub-messages to the appropriate destinations and re-aggregates the
responses back into a single message
9.2 Implementation
OSB Construct used : Split Join ( supports WSDL based invocation of services or java callouts)
18
10 Pattern - Scatter Gather
10.1 Description
Use a Scatter-Gather that broadcasts a message to multiple recipients and re-aggregates the responses
back into a single message.
10.2 Implementation
OSB Construct used : Split Join ( supports WSDL based invocation of services or java callouts)
19
11 Pattern - Routing Slip
11.1 Description
Attach a Routing Slip to each message, specifying the sequence of processing steps. Wrap each
component with a special message router that reads the Routing Slip and routes the message to the
next component in the list.
11.2 Assumption
Process step is identified by a Proxy Service and not by Action/Stage/Pipeline
Proxy Services/Processing steps have a dynamic routing instead of static
A dummy proxy (with simple root node) is invoked as the last processing step – since each proxy
service has a dynamic route configured; it becomes necessary to have an end configured to the
processing steps. The dummy proxy acts as the last processing step
11.3 Implementation
Extension of Recipient List
Use a mapping file to determine the list of recipients and attach the list to the header
Inspect the header and sends the message to the first recipient in the list
Each recipient/processing step deletes the first header element, processes and passes the
request to the next step(dynamic invocation)
20
21
12 Pattern – Process Manager
12.1 Description
Use a central processing unit, a Process Manager, to maintain the state of the sequence and determine
the next processing step based on intermediate results.
12.2 Difference from the Routing Slip
In Routing Slip the list of processing steps is determined before the first processing step whereas in
Process Manager the processing step is determined from result from the response of the processing
step.
Business Rules Engine may be used when the routing rules are complex in nature.
12.3 Implementation
Use of Split Join and dynamic routing
Processing Step refers to Proxy Service
The processing steps are maintained in the mapping file
Each processing step sends the response to the Processing Manager; to determine the next processing
step
The pre-processing steps determine the end point of the service to be invoked
22
Dynamic Route Configuration: Makes use of Service callout (Until the exit condition is reached)
23
13 Pattern - Message Broker
13.1 Description
Use a central Message Broker that can receive messages from multiple destinations, determine the
correct destination and route the message to the correct channel.
Implement the internals of the Message Broker using the design patterns presented in this document
24