Enterprise Integration Patterns Asynchronous Messaging Architectures in Practice Translator Test Message Splitter Aggregator Enricher Gregor Hohpe Integration Challenges • Users want to execute business functions that span multiple applications • Requires disparate applications to be connected to a common integration solution • However: – – – – Networks are slow Networks are unreliable No two applications are alike Change is Inevitable Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe Isolated Systems Unified Access 2 Message-Oriented Middleware Message-oriented architectures provide loose coupling and reliability System A Channel System B Message ¾ Remove location • Channels are separate from dependencies applications • Channels are asynchronous & ¾ Remove temporal dependencies reliable ¾ Remove data format • Data is exchanged in selfdependencies contained messages Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 3 Thinking Asynchronously Order Mgmt Web Site Shipping Inventory New Order Order Mgmt Web Site Shipping Inventory New Order Confirm New Order Confirm Idle New Order Confirm Confirm Synchronous Enterprise Integration Patterns Asynchronous Copyright © 2003 Gregor Hohpe 4 Many Products & Implementations • Message-oriented middleware (MOM) – IBM WebSphere MQ – Microsoft MSMQ – Java Message Service (JMS) Implementations • EAI Suites – TIBCO, WebMethods, SeeBeyond, Vitria, ... • Asynchronous Web services HOT HOT – WS-ReliableMessaging, ebMS – Sun’s Java API for XML Messaging (JAXM) – Microsoft’s Web Services Extensions (WSE) The Underlying Design Principles Are the Same! Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 5 Catalog of 65 Patterns 1. Request-Reply Example Message Construction Command Message RPC Message Query Message Document Message Event Message Reply Message Return Address Correlation Identifier Message Sequence Message Expiration Canonical Data Model Format Indicator 2. Order Management Example Message Routing Content-Based Router Message Filter Recipient List Splitter Aggregator Resequencer Distribution w. Aggr. Resp. Auction Routing Table ProcessManager Message Transformation Data Enricher Content Filter Check Luggage Endpoint Endpoint Message Application A Messaging Endpoints Messaging Adapter Polling Consumer Event-Driven Consumer Transactional Client Competing Consumers Message Dispatcher Message Selector Idempotent Receiver Messaging Mapper Enterprise Integration Patterns Channel Router Translator Application B Messaging Channels Point-to-Point Channel Publish-Subcr. Channel Durable Subscriber Datatype Channel Invalid Message Channel Dead Letter Channel Guaranteed Messaging Channel Adapter Monitoring Copyright © 2003 Gregor Hohpe Systems Management 3. Bonus Control Bus Message Header Envelope Wrapper Message History Message Store Channel Purger Test Message 6 Pattern: Request-Reply Consumer Request Provider Request Channel Reply Channel • • • • Reply Service Provider and Consumer (similar to RPC) Channels are unidirectional Two asynchronous Point-To-Point Channels Separate request and reply messages Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 7 Multiple Consumers Requests Requests Provider Request Channel Consumer Consumer 11 Consumer Consumer 22 Reply Channel 1 Reply Channel 2 ?? Replies • Each consumer has its own reply queue • How does the provider know where to send the reply? – Could send to all consumers Æ very inefficient – Hard code Æ violates principle of context-free service Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 8 Pattern: Return Address Reply Channel 1 Reply Channel 2 Provider Request Channel Consumer Consumer 11 Consumer Consumer 22 Reply Channel 1 Reply Channel 2 Replies • Consumer specifies Return Address (reply channel) in the request message • Service provider sends reply message to specified channel Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 9 Multiple Service Providers Provider Provider 11 Request Channel Consumer Consumer Provider Provider 22 Reply Channel • Request message can be consumed by more than one service provider • Point-to-Point Channel supports Competing Consumers, only one service receives each request message • Channel queues up pending requests Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 10 Multiple Service Providers Consumer Service 1 (slow) Request 1 Request 2 Reply 2 Reply 1 Enterprise Integration Patterns Service 2 (fast) • Reply messages get out of sequence • How to match request and reply messages? – Only send one request at a time Æ very inefficient – Rely on natural order Æ bad assumption Copyright © 2003 Gregor Hohpe 11 Pattern: Correlation Identifier Consumer 1 2 1 2 Message Identifier Request Channel Correlate Request & Reply 2 1 2 1 1 Provider Provider 11 2 2 Provider Provider 22 1 Response Channel Correlation Identifier • Equip each message with a unique identifier – Message ID (simple, but has limitations) – GUID (Globally Unique ID) – Business key (e.g. Order ID) • Provider copies the ID to the reply message • Consumer can match request and response Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 12 Pattern: Pipes-And-Filters Pipe Pipe Decrypt Decrypt Incoming Order Filter Pipe Authenticate Authenticate Filter Pipe De-Dup De-Dup Filter ‘Clean’ Order • Connect individual processing steps (filters) with message channels (pipes) – Pipes decouple sender and receiver – Participants are unaware of intermediaries – Compose patterns into larger solutions Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 13 Multiple Specialized Providers Order Messages Order Order Entry Entry ?? Widget Widget Inv. Inv. Gadget Gadget Inv. Inv. • Each provider can only handle specific type of message • Route request to the “appropriate” provider based on the content of the request message – Do not want to burden sender with decision (decoupling) – Letting each consumer “pick out” desired messages requires distributed coordination Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 14 Pattern: Content-Based Router Order Messages Widget Widget Inv. Inv. Order Order Entry Entry ContentBased Router Gadget Gadget Inv. Inv. • Insert a Content-Based Router • Message routers forward incoming messages to different output channels • Message content not changed • Mostly stateless, but can be stateful (e.g. de-duper) Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 15 Composite Message Order Message Order Order Entry Entry ?? Widget Widget Inv. Inv. Gadget Gadget Inv. Inv. • How can we process a message if it contains multiple elements, each of which may have to be processed in a different way? – Treat each element independently – Need to avoid missing or duplicate elements – Make efficient use of network resources Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 16 Pattern: Splitter Order Message Widget Widget Inv. Inv. Order Order Entry Entry ?? Splitter Order Order Item 1 Item 2 Gadget Gadget Inv. Inv. • Use a Splitter to break out the composite message into a series of individual messages, each containing data related to one item. Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 17 Composite: Splitter & Router Order Item 1 Order Message Widget Widget Inv. Inv. Order Order Entry Entry Splitter Order Order Item 1 Item 2 Gadget Gadget Inv. Inv. Router Order Item 2 • Use a Splitter to break out the composite message into a series of individual messages, each containing data related to one item. • Then use a Content-Based Router to route the individual messages to the proper destination Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 18 Producing a Single Response Order Item 1 Response 1 Confirmed Order Widget Widget Inv. Inv. ?? Gadget Gadget Inv. Inv. Order Item 2 Billing Billing Response 2 • How to combine the results of individual, but related messages so that they can be processed as a whole? – – – – Messages out of order Message delayed Which messages are related? Avoid separate channel for each system Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 19 Pattern: Aggregator Order Item 1 Response 1 Confirmed Order Widget Widget Inv. Inv. Billing Billing Gadget Gadget Inv. Inv. Order Item 2 Aggregator Response 2 • Use a stateful filter, an Aggregator, to collect and store individual messages until a complete set of related messages has been received. – Aggregator publishes a single message distilled from the individual messages. – Correlation – Completeness Condition – Aggregation Algorithm Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 20 Pattern: Scatter-Gather • Send a message to a dynamic set of recipients, and return a single message that incorporates the responses. Scatter-Gather Pub-Sub Channel Quote Request “Best” Quote Enterprise Integration Patterns Vendor Vendor A A Quote Vendor Vendor B B Vendor Vendor C C Aggregator Copyright © 2003 Gregor Hohpe 21 Composing Patterns • Receive an order, get best offer for each item from vendors, combine into validated order. Scatter-Gather Pub-Sub Channel New Order Splitter Validated Order Aggregator Enterprise Integration Patterns Quote Request for each item “Best” Quote for each item Vendor Vendor A A Quote Vendor Vendor B B Vendor Vendor C C Aggregator Copyright © 2003 Gregor Hohpe 22 System Management • Messaging systems are asynchronous and distributed – Multiple platforms – Difficult to detect errors – Difficult to configure (property file hell) • How can we effectively administer a messaging system that is distributed across multiple platforms and a wide geographic area? Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 23 Pattern: Control Bus Application Message Flow Control Bus Management Console • • • • • • Configuration Heartbeat Test messages Exceptions / logging Statistics / Quality-of-Service (QoS) Live console Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 24 How To Inspect Messages? Point-To-Point Channel Sender Sender Receiver Receiver Message ?? Management Console • Cannot add another receiver because it would consume the message • Cannot switch to Publish-Subscribe-Channel because Point-To-Point Channel may already have Competing Consumers Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 25 Pattern: Wire Tap Wire Tap Sender Sender Receiver Receiver Message Message Management Console • Simple Router that duplicates message to two output channels • Also known as Tee • Some side effects: Message ID changes, latency Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 26 Track Messages Wire Tap Wire Tap Component Component Analysis • E.g., message run time, message volume • Missed messages if channels or component unreliable Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 27 What if Return Address is Used? Wire Tap Consumer Consumer Consumer Consumer Request Channel Provider Reply Channels ?? • Provider routes reply message to dynamic channel • Cannot dynamically inject Wire Tap Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 28 Pattern: Smart Proxy Smart Proxy Consumer Consumer Request Channel Provider Fixed Reply Channel Consumer Consumer Reply Channels • A Smart Proxy stores original Return Address and replaces it with a fixed channel address • Intercepts reply messages and forwards them to correct channel • Allows analysis of request and reply messages Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 29 Pattern: Test Message Test Message Injector Test Message Separator Processor Processor Appl. Appl. Msg. 1 Msg. 2 Test Message 9 Test Data Generator Appl. Msg. 1 Test Result Appl. Msg. 2 Test Data Verifier Control Bus Management Console • Inject application specific test messages • Extract result from regular message flow • Compare result against predefined (or computed) result Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 30 In Summary… • Visual and verbal language to describe integration solutions • Combine patterns to describe larger solutions • No fancy tools – whiteboard or PowerPoint • No vendor jargon • Not a precise specification language – (e.g., see OMG UML Profile for EAI) • Not a new “methodology” • Each pattern describes trade-offs and considerations not included in this overview Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 31 Resources • Book (late October): – Enterprise Integration Patterns – Addison-Wesley, 0-321-20068-3 • Contact – Gregor Hohpe – [email protected] • Web Site – – – – http://www.eaipatterns.com Pattern catalog Bibliography, related papers [email protected] • www.thoughtworks.com Enterprise Integration Patterns Copyright © 2003 Gregor Hohpe 32
© Copyright 2024