A hands-on guide for using Spring's Integration framework.
Disclaimer: I work for JBoss and support JBoss ESB, which can be viewed as a competitor to Spring Integration. This review will cover only the book "Spring Integration in Action" and only the features of Spring Integration it describes.
Spring Integration is a toolkit that fits the needs of Enterprise users who need to facilitate communication between disparate applications. If you're not familiar with the workspace, these toolkits allow the user to perform tasks like the following: read text files in and invoke backend web services for each record in the file; proxy a web service and allow you to alter either the data going to the targeted backend service or alter the response received from it; log http requests to a database; many others.
The book is well-written and describes Spring Integration usage often in terms of the famous 'Enterprise Integration Patterns'. The Patterns are well-known and time-tested methods of successfully achieving tasks, and the book's author does a good job of demonstrating how Spring Integration can be used to implement them.
"Spring Integration in Action" is broken up into 4 areas:
- Integrating Systems
- Advanced Topics
The 'Background' section has 2 chapters. There's a short introductory section that covers Spring, for those unfamiliar with this famous Dependency Injection framework. I expect most users will breeze by this, but it probably will be necessary for others. The second chapter deals with the "Enterprise Integration Patterns", which are time tested best practices in the Integration workspace. The book does justice to the topic in this chapter, but really spreads a lot of the 'Pattern' information around the rest of the book as well.
'Messaging', as the section title suggests, deals with the fundamental parts and pieces that help Spring Integration shuffle data from component to component. Integration toolkits require ways to pass messages along (Integration is mostly about messaging), in Spring Integration these are called "Channels". Channels are very important in Spring Integration, as they determine the runtime characteristics (i.e. number of threads) that will be part of your pipeline. This can be a topic of confusion, so it's good the author discusses it early.
Components deal with messages, messages travel along channels. In between these two is an 'Endpoint', another important topic. Endpoints can be outward-facing (gateways), and can be event-driven or polling in nature. Endpoints are covered in the same plain-spoken manner as the rest of the basic components.
The next few chapters deal with more 'generic' Integration best practices. These include the way messages are transformed (so different systems can 'talk'), the way messages can have information added to them, and how you can route and filter the messages that travel between components. If you've been in the workspace, this all probably sounds familiar. If you haven't-- the book provides a good explanation of how things work.
'Integrating Systems' deals with the construction of your message pipeline and some of the components you'll likely need. You'll be wanting to split and recombine messages, convert Java objects to XML (and vice-versa), and how to hook JMS into your pipeline. You'll also want to deal with the file system, web services and maybe email-- these are all explained here.
'Advanced Topics' is a potpourri of topics that you may or may not find a need for. It seems most every book today has to cover publishing to social media outlets, this one does as well. Batch application integration (using Spring Batch, naturally) is explained. There are also some chapters I found of very high value: managing and monitoring, scheduling and concurrency, and Test Driven Development best practices.
This book is in Manning's "MEAP" program, which means it is available for early purchase, but is still being worked on. In this reader's opinion, the current MEAP version is of sufficient value to warrant a purchase. There's a lot of good material here, it's probably very close to a completed state.
So, what's the final verdict? I like the book for the clear explanations of how Spring Integration works. For users of other integration toolkits, there's also a lot of generic 'Systems Integration' knowledge that would be of value. If you're a Spring Integration user, buying this book should be a no-brainer-- it will quickly pay for itself many times over. If you're not a Spring Integration user, but are a user of another system integration toolkit-- you still might consider it, for the overall Integration value. All things considered, this book will be a good reference for the Integration user.
The book can be found here.