
Foreword
I was one of the original founders of both Apache ActiveMQ (an open source high-performance message broker) and ServiceMix (an open source ESB based on JBI and OSGi). I found that Enterprise Integration Patterns were becoming increasingly central to what we were doing on these projects and how we were using them; the only difference was the context and technologies with which we were using the patterns.
There have been many libraries and frameworks over the years to help with integration. But frequently the concepts behind the Enterprise Integration Patterns get transformed into some complex class hierarchies or objects that need to be wired together just so, and the original intentions and patterns are often lost. The developer is forced from then on to focus on the low-level detail and some complex class library API, losing the bigger picture and patterns.
Integration is hard and once you start down the path of integrating things together the code can very easily mushroom; being able to easily comprehend, communicate, adapt, and maintain integration solutions is vital to be able to solve integration problems efficiently in an agile way.