Gregor's Ramblings | |
HOME PATTERNS RAMBLINGS ARTICLES TALKS DOWNLOAD BOOKS CONTACT |
February 5, 2017
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 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.
© 2003-2022 • All rights reserved. |