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:

Enterprise Integration Patterns are timeless. That our book keeps selling well almost 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. EAI tools and vendors have also changed dramatically, mostly driven through the advent of open source ESBs, which interestingly were partially fueled by the publication of EIP. Lastly, in 2003 there were basically no cloud services, which is difficult to imagine these days.

The Messaging Patterns on this web site also remained static, which is acceptable as an on-line reference, but made the site less useful for loyal readers who already purchased the book. I therefore decided to update several code examples to use modern tech like GoLang, Kafka, RabbitMQ, Amazon SQS and Google Cloud Pub/Sub. It turns out that these new languages and tools use many of the original integration patterns. On top of that, most of these tools are free and much easier to setup thanks to being available in the cloud or as Docker images.

I added modern examples for the following patterns:

Publish-Subscribe Channel Google Cloud Pub/sub
Dead Letter Channel Amazon SQS
Return Address GoLang
Content-based Router Apache Camel
Scatter-Gather Serverless Loan Broker on AWS
Mulesoft ESB
Azure Durable Functions: Fan out/fan in
Message Filter RabbitMQ
Event-driven Consumer RabbitMQ
Competing Consumers Apache Kafka
Channel Purger Amazon SQS

The other thing that's become more mainstream since 2003 is hosting code on open source repositories. Back when we wrote Enterprise Integration Patterns we were clever enough to use version control for the copy as well as the code samples. However, both lived on a local hard drive in a Visual Source Safe repository. They have been converted to git since. I now upload all new code samples to a 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 immediate 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.