Enterprise Integration
      patterns

           Johan Aludden
       Twitter: johanaludden
    Mail: me@johanaludden.com
  Blog: johanaludden.com/weblog
Integration styles




                     2
Integration styles
• File transfer




                               2
Integration styles
• File transfer
• Shared Database




                             2
Integration styles
• File transfer
• Shared Database
• Remote Procedure Invocation




                                2
Integration styles
• File transfer
• Shared Database
• Remote Procedure Invocation
• Messaging




                                2
Messaging




            3
Messaging
• Channels




                         3
Messaging
• Channels
• Messages




                         3
Producer Consumer




                    4
Producer Consumer
• Many producers - Many Consumers




                                    4
Producer Consumer
• Many producers - Many Consumers
• Message read once




                                    4
Producer Consumer
• Many producers - Many Consumers
• Message read once
• Load balancing




                                    4
Producer Consumer
• Many producers - Many Consumers
• Message read once
• Load balancing
• Parallelization




                                    4
Publish subscribe




                    5
Publish subscribe
• Many Producers - Many Consumers




                                    5
Publish subscribe
• Many Producers - Many Consumers
• Message read once per subscriber




                                     5
Publish subscribe
• Many Producers - Many Consumers
• Message read once per subscriber
• Broad casting




                                     5
Publish subscribe
• Many Producers - Many Consumers
• Message read once per subscriber
• Broad casting
• Different processing




                                     5
Channel Types
• Producer Consumer
• Publish Subscribe

      Common Properties
• Asynchronous
• One Way Communication


                          6
Document Message




                   7
Document Message
• Send information




                          7
Document Message
• Send information
• Receiver decides what to do




                                7
Document Message
• Send information
• Receiver decides what to do
• Single unit of data




                                7
Command Message




                  8
Command Message
• Send a command




                        8
Command Message
• Send a command
• Sender tells what to do




                            8
Command Message
• Send a command
• Sender tells what to do
• Single Unit of Work




                            8
Message Types
• Document message
• Command message




                         9
Common Patterns




                  10
You want to send a request
     and get a reply



                       11
11
Sender   Receiver




         11
Sender   Request   Receiver




                   11
Sender   Request   Receiver




                   11
Sender   Receiver




         11
Sender   Receiver




         11
Sender           Receiver




         Reply




                 11
Sender           Receiver




         Reply




                 11
Sender   Receiver




         11
Request
           ID: 2


Sender             Receiver




                   11
Request
           ID: 2


Sender             Receiver




                   11
Sender   Receiver




         11
Request
           ID: 3


Sender             Receiver




                   11
Request
           ID: 3


Sender             Receiver




                   11
Sender   Receiver




         11
Sender             Receiver




         Reply
           ID: 3




                   11
Sender             Receiver




         Reply
           ID: 3




                   11
Sender   Receiver




         11
Sender             Receiver




         Reply
           ID: 2




                   11
Sender             Receiver




         Reply
           ID: 2




                   11
Sender   Receiver




         11
Request - Reply



Sender                     Receiver




                           11
One message with parts that
can be handled individually



                       12
12
Sender   Receiver




          12
Sender   Receiver




          12
Message


Sender   Part 1    Receiver

         Part 2




                    12
Message


Sender   Part 1    Receiver

         Part 2




                    12
Part 1
Sender            Receiver
         Part 2




                   12
Part 1
Sender            Receiver
         Part 2




                   12
Part 1
Sender   Receiver
          Part 2




          12
Splitter


                     Part 1
Sender              Receiver
                     Part 2




                     12
Many Messages that needs to
   be handled together



                       13
13
Sender




         13
Sender   Receiver




          13
Sender   Receiver




          13
Part 1
Sender            Receiver




                   13
Part 1
Sender            Receiver
         Part 2




                   13
Part 1
Sender            Receiver
         Part 2




                   13
Part 1
Sender                     Receiver
         Part 2




                            13
Part 1
Sender            Receiver
         Part 2




                   13
Message
         Part 1
Sender             Receiver
         Part 2




                    13
Message
         Part 1
Sender             Receiver
         Part 2




                    13
Aggregator


                  Message
                  Part 1
Sender                      Receiver
                  Part 2




                             13
You have one entry point for
messages but they need to be
    handled by different
        processes


                        14
14
Receiver 1



Sender



         Receiver 2




          14
Receiver 1



Sender



         Receiver 2




          14
Router

                  Receiver 1



Sender



                  Receiver 2




                   14
The sender and the receiver
 does not speak the same
        language



                        15
15
Sender




         15
Sender   Receiver




          15
Sender   Receiver




          15
Translator



Sender                Receiver




                       15
You have messages that have
   the same semantic but
      different formats



                       16
16
Sender 1



           Receiver



Sender 2




            16
Sender 1            Translator



           Router                Receiver



Sender 2            Translator




                                  16
Normalizer

Sender 1            Translator



           Router                Receiver



Sender 2            Translator




                                  16
You want to send the same
 message to many but to
  handle the responses
        together


                      17
17
Service 1



Sender 1               Aggregator   Receiver



           Service 2




                                     17
Scatter Gather

            Service 1



Sender 1                Aggregator   Receiver



           Service 2




                                      17
Pipes & Filter
• Like Lego
• Combine different patterns




                               18
Other Patterns
• Resequencer
• Routing slip




                            19
Links
• Enterprise Integration Patterns site,
  http://www.eaipatterns.com/
• Book, http://www.amazon.com/
  Enterprise-Integration-Patterns-
  Designing-Deploying/dp/0321200683




                                   20
Questions?




             21

Enterprise Integration Patterns