Enterprise Integration Patterns
Gregor's Ramblings

Modern Examples for Enterprise Integration Patterns

February 5, 2017

Gregor HohpeHi, I am Gregor Hohpe, co-author of the book Enterprise Integration Patterns. I like to work on and write about asynchronous messaging systems, service-oriented architectures, and all sorts of enterprise computing and architecture topics. I am also an Enterprise Strategist at AWS.
ALL RAMBLINGS  Architecture (12)  Cloud (10)  Conversations (8)  Design (26)  Events (27)  Gregor (4)  Integration (19)  Messaging (12)  Modeling (5)  Patterns (8)  Visualization (3)  WebServices (5)  Writing (12) 

My blog posts related to IT strategy, enterprise architecture, digital transformation, and cloud have moved to a new home: ArchitectElevator.com.

Enterprise Integration Patterns are timeless. That our book keeps selling well two decades after its publication in 2003 underlines this fact. However, the code examples haven't aged quite as well. While for example the JMS API remained somewhat stable, the examples were built with JDK 1.4 without any modern constructs such as generics, streams, etc. The EAI tool landscape has also dramatically changed, with the advent of open source ESBs (which were fueled by the publication of EIP) and later IPaas and serverless solutions. It's hard to imagine that back in 2003 you had to get a server and manually install all software on it just to try a few simple concepts.

The Messaging Pattern catalog on this web site remained static, but the patterns could benefit from code examples that use modern tech like GoLang, Kafka, RabbitMQ, Amazon SQS, Amazon EventBridge, or Google Cloud Pub/Sub. Many of these recent languages and tools embrace the original integration patterns or make it easy to implement them.

The following patterns contain modern examples:

Publish-Subscribe Channel Google Cloud Pub/sub
Dead Letter Channel Amazon SQS
Kafka Connect
Return Address GoLang
Message Expiration Azure Service Bus
Amazon EventBridge
Google Cloud PubSub
Content-based Router Apache Camel
Scatter-Gather Serverless Loan Broker on AWS
Mulesoft ESB
Azure Durable Functions: Fan out/fan in
Message Filter RabbitMQ
Aggregator Serverless Loan Broker on AWS (Lambda, DynamoDB)
Serverless Loan Broker on GCP (Cloud Function, Datastore)
Process Manager Serverless Loan Broker with AWS Step Functions
Serverless Loan Broker with GCP Workflows
Content Enricher Amazon EventBridge Pipes
Transactional Client Amazon SQS
Event-driven Consumer RabbitMQ
Competing Consumers Apache Kafka
Channel Purger Amazon SQS

Back in 2003, hosting code on open source repositories was less common. Lucky we used version control for the text as well as the code samples, but sadly both lived on a local hard drive in a Visual Source Safe repository. We converted them to git since and I now upload all new code samples to a public Github Repository. Most projects don't include complete build files - I run these simple apps from IntelliJ IDEA. This is both a bug (due to laziness) and a feature: as the examples are of educational value only and not intended for production there's a certain safety net in users not being able to build and run them immediately with the push of a button.


Follow:       Subscribe  SUBSCRIBE TO FEED


Gregor is an Enterprise Strategist with Amazon Web Services (AWS). He is a frequent speaker on asynchronous messaging, IT strategy, and cloud. He (co-)authored several books on architecture and architects.