Spring Integration Reference Manual

Authors

Mark Fisher, Marius Bogoevici, Iwein Fuld, Jonas Partner, Oleg Zhurakousky, Gary Russell, Dave Syer, Josh Long, David Turanski, Gunnar Hillert, Artem Bilan, Amol Nayak

5.0.11.BUILD-SNAPSHOT

Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.


Table of Contents

I. Preface
Requirements
1. Compatible Java Versions
2. Compatible Versions of the Spring Framework
3. Code Conventions
1. Conventions in this Book
II. What’s new?
2. What’s new in Spring Integration 5.0?
2.1. New Components
2.1.1. Java DSL
2.1.2. Testing Support
2.1.3. MongoDB Outbound Gateway
2.1.4. WebFlux Gateways and Channel Adapters
2.1.5. Content Type Conversion
2.1.6. ErrorMessagePublisher and ErrorMessageStrategy
2.1.7. JDBC Metadata Store
2.2. General Changes
2.2.1. Core Changes
2.2.2. Gateway Changes
2.2.3. Aggregator Performance Changes
2.2.4. Splitter Changes
2.2.5. JMS Changes
2.2.6. Mail Changes
2.2.7. Feed Changes
2.2.8. File Changes
2.2.9. (S)FTP Changes
2.2.10. Integration Properties
2.2.11. Stream Changes
2.2.12. Barrier Changes
2.2.13. AMQP Changes
2.2.14. HTTP Changes
2.2.15. MQTT Changes
2.2.16. STOMP Changes
2.2.17. Web Services Changes
2.2.18. Redis Changes
2.2.19. TCP Changes
2.2.20. Gemfire Changes
2.2.21. Jdbc Changes
2.2.22. Metrics Changes
2.3. TCP Support
2.3.1. @EndpointId Annotations
2.3.2. Integration Flows: Generated bean names
III. Overview of Spring Integration Framework
3. Spring Integration Overview
3.1. Background
3.2. Goals and Principles
3.3. Main Components
3.3.1. Message
3.3.2. Message Channel
3.3.3. Message Endpoint
3.4. Message Endpoints
3.4.1. Transformer
3.4.2. Filter
3.4.3. Router
3.4.4. Splitter
3.4.5. Aggregator
3.4.6. Service Activator
3.4.7. Channel Adapter
3.4.8. Endpoint Bean Names
3.5. Configuration and @EnableIntegration
3.6. Programming Considerations
3.7. Considerations When using Packaged (e.g. Shaded) Jars
3.8. Programming Tips and Tricks
3.8.1. XML Schemas
3.8.2. Finding Class Names for Java and DSL Configuration
3.9. POJO Method invocation
IV. Core Messaging
4. Messaging Channels
4.1. Message Channels
4.1.1. The MessageChannel Interface
PollableChannel
SubscribableChannel
4.1.2. Message Channel Implementations
PublishSubscribeChannel
QueueChannel
PriorityChannel
RendezvousChannel
DirectChannel
ExecutorChannel
Scoped Channel
4.1.3. Channel Interceptors
4.1.4. MessagingTemplate
4.1.5. Configuring Message Channels
DirectChannel Configuration
Datatype Channel Configuration
QueueChannel Configuration
PublishSubscribeChannel Configuration
ExecutorChannel
PriorityChannel Configuration
RendezvousChannel Configuration
Scoped Channel Configuration
Channel Interceptor Configuration
Global Channel Interceptor Configuration
Wire Tap
Conditional Wire Taps
Global Wire Tap Configuration
4.1.6. Special Channels
4.2. Poller
4.2.1. Polling Consumer
4.2.2. Pollable Message Source
4.2.3. Deferred Acknowledgment Pollable Message Source
4.2.4. Conditional Pollers for Message Sources
Background
"Smart" Polling
SimpleActiveIdleMessageSourceAdvice
CompoundTriggerAdvice
4.3. Channel Adapter
4.3.1. Configuring An Inbound Channel Adapter
4.3.2. Configuring An Outbound Channel Adapter
4.3.3. Channel Adapter Expressions and Scripts
4.4. Messaging Bridge
4.4.1. Introduction
4.4.2. Configuring a Bridge with XML
4.4.3. Configuring a Bridge with Java Configuration
4.4.4. Configuring a Bridge with the Java DSL
5. Message Construction
5.1. Message
5.1.1. The Message Interface
5.1.2. Message Headers
MessageHeaderAccessor API
Message ID Generation
Read-only Headers
Header Propagation
5.1.3. Message Implementations
5.1.4. The MessageBuilder Helper Class
6. Message Routing
6.1. Routers
6.1.1. Overview
6.1.2. Common Router Parameters
Inside and Outside of a Chain
Top-Level (Outside of a Chain)
6.1.3. Router Implementations
PayloadTypeRouter
HeaderValueRouter
RecipientListRouter
RecipientListRouterManagement
XPath Router
Routing and Error handling
6.1.4. Configuring a Generic Router
Configuring a Content Based Router with XML
Configuring a Router with Annotations
6.1.5. Dynamic Routers
Manage Router Mappings using the Control Bus
Manage Router Mappings using JMX
Routing Slip
Process Manager Enterprise Integration Pattern
6.2. Filter
6.2.1. Introduction
6.2.2. Configuring Filter
Configuring a Filter with XML
Configuring a Filter with Annotations
6.3. Splitter
6.3.1. Introduction
6.3.2. Programming model
6.3.3. Configuring Splitter
Configuring a Splitter using XML
Configuring a Splitter with Annotations
6.4. Aggregator
6.4.1. Introduction
6.4.2. Functionality
6.4.3. Programming model
AggregatingMessageHandler
ReleaseStrategy
Aggregating Large Groups
CorrelationStrategy
LockRegistry
6.4.4. Configuring an Aggregator
Configuring an Aggregator with XML
Configuring an Aggregator with Annotations
6.4.5. Managing State in an Aggregator: MessageGroupStore
6.5. Resequencer
6.5.1. Introduction
6.5.2. Functionality
6.5.3. Configuring a Resequencer
6.6. Message Handler Chain
6.6.1. Introduction
6.6.2. Configuring a Chain
6.7. Scatter-Gather
6.7.1. Introduction
6.7.2. Functionality
6.7.3. Configuring a Scatter-Gather Endpoint
6.8. Thread Barrier
7. Message Transformation
7.1. Transformer
7.1.1. Introduction
7.1.2. Configuring Transformer
Configuring Transformer with XML
Common Transformers
Configuring a Transformer with Annotations
7.1.3. Header Filter
7.1.4. Codec-Based Transformers
7.2. Content Enricher
7.2.1. Introduction
7.2.2. Header Enricher
Configuring a Header Enricher with Java Configuration
Configuring a Header Enricher with the Java DSL
Header Channel Registry
7.2.3. Payload Enricher
Configuration
Examples
7.3. Claim Check
7.3.1. Introduction
7.3.2. Incoming Claim Check Transformer
7.3.3. Outgoing Claim Check Transformer
7.3.4. A word on Message Store
7.4. Codec
7.4.1. Introduction
7.4.2. EncodingPayloadTransformer
7.4.3. DecodingTransformer
7.4.4. CodecMessageConverter
7.4.5. Kryo
Customizing Kryo
8. Messaging Endpoints
8.1. Message Endpoints
8.1.1. Message Handler
8.1.2. Event Driven Consumer
8.1.3. Polling Consumer
8.1.4. Endpoint Namespace Support
8.1.5. Change Polling Rate at Runtime
8.1.6. Payload Type Conversion
8.1.7. Content Type Conversion
8.1.8. Asynchronous polling
8.1.9. Endpoint Inner Beans
8.2. Endpoint Roles
8.3. Leadership Event Handling
8.4. Messaging Gateways
8.4.1. Enter the GatewayProxyFactoryBean
8.4.2. Gateway XML Namespace Support
8.4.3. Setting the Default Reply Channel
8.4.4. Gateway Configuration with Annotations and/or XML
8.4.5. Mapping Method Arguments to a Message
8.4.6. @MessagingGateway Annotation
8.4.7. Invoking No-Argument Methods
8.4.8. Error Handling
8.4.9. Gateway Timeouts
8.4.10. Asynchronous Gateway
Introduction
ListenableFuture
AsyncTaskExecutor
CompletableFuture