+ All Categories
Home > Documents > Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter...

Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter...

Date post: 22-Jul-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
24
1 Routing Message Interaction Patterns - Reference Implementation With Oracle Service Bus (OSB11g)
Transcript
Page 1: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

1

Routing Message Interaction Patterns - Reference

Implementation With Oracle Service Bus (OSB11g)

Page 2: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

2

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

Indirect Support Recipient List

Routing Slip

Re-Sequencer

Aggregator

Process Manager

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

Page 3: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

3

References http://www.eaipatterns.com/toc.html

Oracle Service Bus developers guide

Page 4: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

4

Message Interaction Patterns – Implementation in OSB

Contents Summary ....................................................................................................................................................... 2

Message Router ............................................................................................................................................ 2

Classification ............................................................................................................................................. 2

References .................................................................................................................................................... 3

Message Interaction Patterns – Implementation in OSB ............................................................................. 4

1 Pattern – Pipes & Filters........................................................................................................................ 6

1.1 Description: ................................................................................................................................... 6

1.2 Implementation ............................................................................................................................ 6

1.3 Alternate Approach ....................................................................................................................... 6

2 Pattern – Content Based Routing ......................................................................................................... 7

2.1 Description .................................................................................................................................... 7

2.2 Implementation ............................................................................................................................ 7

2.3 Alternate Approach ....................................................................................................................... 7

3 Pattern - Dynamic Routing .................................................................................................................... 8

3.1 Description .................................................................................................................................... 8

3.2 Implementation ............................................................................................................................ 8

3.3 Alternate Approach ....................................................................................................................... 9

4 Pattern - Message Filter ...................................................................................................................... 10

4.1 Description .................................................................................................................................. 10

4.2 Implementation .......................................................................................................................... 10

5 Pattern - Recipient List ........................................................................................................................ 12

5.1 Description .................................................................................................................................. 12

5.2 Implementation .......................................................................................................................... 12

6 Pattern - Splitter .................................................................................................................................. 14

6.1 Description .................................................................................................................................. 14

6.2 Implementation .......................................................................................................................... 14

7 Pattern - Resequencer ........................................................................................................................ 16

7.1 Description .................................................................................................................................. 16

7.2 Assumption ................................................................................................................................. 16

7.3 Implementation .......................................................................................................................... 16

Page 5: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

5

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 Pattern - Message Broker ............................................................................................................... 24

13.1 Description .................................................................................................................................. 24

Page 6: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

6

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

1.3 Alternate Approach Pipeline Pair acts as the filter

Filter

Pipe

Pipeline Pair

Page 7: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

7

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

Page 8: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

8

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

Page 9: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

9

3.3 Alternate Approach Dynamic Publish

Page 10: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

10

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 Description

Entry level The messages that conform to a particular schema are picked

Processing level All the messages are polled but only the relevant ones are processed

Message Selector 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

Page 11: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

11

Page 12: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

12

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

Page 13: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

13

Router Proxy Service Configuration –Dynamic Route

Page 14: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

14

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>

Page 15: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

15

Page 16: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

16

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

Page 17: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

17

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

Page 18: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

18

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)

Page 19: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

19

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)

Page 20: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

20

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)

Page 21: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

21

Page 22: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

22

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

Page 23: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

23

Dynamic Route Configuration: Makes use of Service callout (Until the exit condition is reached)

Page 24: Routing Message Interaction Patterns - Reference ... · Dynamic Routing Message Filter Scatter Gather Splitter Composed Message Processor Indirect Support Recipient List Routing Slip

24

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


Recommended