Gregor's Ramblings

Modern Examples for Enterprise Integration Patterns

February 5, 2017

Gregor Hohpe
Hi, 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 the Chief Architect at Allianz SE, one of the largest insurance companies in the world.

Enterprise Integration Patterns are timeless. That our book keeps selling well over 13 years 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. 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
Message Filter RabbitMQ
Transactional Client Amazon SQS
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 the Chief IT Architect of Allianz SE. He is a frequent speaker on asynchronous messaging and service-oriented architectures and co-authored Enterprise Integration Patterns (Addison-Wesley). His mission is to make integration and distributed system development easier by harvesting common patterns and best practices from many different technologies.