Routing Message Interaction Patterns - Reference Implementation With Oracle Service Bus (OSB11g)
Transcription
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