Professional Documents
Culture Documents
EIP
EIP
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:
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
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
EAI Suites
TIBCO, WebMethods, SeeBeyond, Vitria, ...
HOT
HOT
WS-ReliableMessaging, ebMS
Suns Java API for XML Messaging (JAXM)
Microsofts Web Services Extensions (WSE)
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
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
Systems
Management
3. Bonus
Control Bus
Message Header
Envelope Wrapper
Message History
Message Store
Channel Purger
Test Message
Pattern: Request-Reply
Consumer
Request
Provider
Request Channel
Reply Channel
Reply
Multiple Consumers
Requests
Requests
Provider
Request Channel
Consumer
Consumer
11
Consumer
Consumer
22
Reply Channel 1
Reply Channel 2
??
Replies
Reply
Channel 2
Provider
Request Channel
Consumer
Consumer
11
Consumer
Consumer
22
Reply Channel 1
Reply Channel 2
Replies
Consumer
Consumer
Provider
Provider 22
Reply Channel
10
Service 1
(slow)
Request 1
Request 2
Reply 2
Reply 1
Service 2
(fast)
11
Message
Identifier
Request Channel
Correlate
Request &
Reply
Provider
Provider 11
Provider
Provider 22
1
Response Channel
Correlation
Identifier
12
Pattern: Pipes-And-Filters
Pipe
Pipe
Decrypt
Decrypt
Incoming
Order
Filter
Pipe
Authenticate
Authenticate
Filter
Pipe
De-Dup
De-Dup
Filter
Clean
Order
13
Order
Order
Entry
Entry
??
Widget
Widget Inv.
Inv.
Gadget
Gadget Inv.
Inv.
14
Widget
Widget Inv.
Inv.
Order
Order
Entry
Entry
ContentBased
Router
Gadget
Gadget Inv.
Inv.
15
Composite Message
Order
Message
Order
Order
Entry
Entry
??
Widget
Widget Inv.
Inv.
Gadget
Gadget Inv.
Inv.
16
Pattern: Splitter
Order
Message
Widget
Widget Inv.
Inv.
Order
Order
Entry
Entry
??
Splitter
Order Order
Item 1 Item 2
Gadget
Gadget Inv.
Inv.
17
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
18
Response 1
Confirmed
Order
Widget
Widget Inv.
Inv.
??
Gadget
Gadget Inv.
Inv.
Order
Item 2
Billing
Billing
Response 2
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
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
Vendor
Vendor A
A
Quote
Vendor
Vendor B
B
Vendor
Vendor C
C
Aggregator
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
Quote Request
for each item
Best Quote
for each item
Vendor
Vendor A
A
Quote
Vendor
Vendor B
B
Vendor
Vendor C
C
Aggregator
22
System Management
Messaging systems are asynchronous and
distributed
Multiple platforms
Difficult to detect errors
Difficult to configure (property file hell)
23
Control Bus
Management
Console
Configuration
Heartbeat
Test messages
Exceptions / logging
Statistics / Quality-of-Service (QoS)
Live console
24
Sender
Sender
Receiver
Receiver
Message
??
Management
Console
25
Sender
Sender
Receiver
Receiver
Message
Message
Management
Console
26
Track Messages
Wire Tap
Wire Tap
Component
Component
Analysis
27
Consumer
Consumer
Consumer
Consumer
Request Channel
Provider
Reply Channels
??
28
Consumer
Consumer
Request Channel
Provider
Consumer
Consumer
Reply
Channels
29
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
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)
31
Resources
Book (late October):
Enterprise Integration Patterns
Addison-Wesley, 0-321-20068-3
Contact
Gregor Hohpe
ghohpe@thoughtworks.com
Web Site
http://www.eaipatterns.com
Pattern catalog
Bibliography, related papers
info@eaipatterns.com
www.thoughtworks.com
32