Spring Integration Reference Manual


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


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
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
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.5. Configuration and @EnableIntegration
3.6. Programming Considerations
3.7. Programming Tips and Tricks
3.7.1. XML Schemas
3.7.2. Finding Class Names for Java and DSL Configuration
3.8. POJO Method invocation
IV. Core Messaging
4. Messaging Channels
4.1. Message Channels
4.1.1. The MessageChannel Interface
4.1.2. Message Channel Implementations
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
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. Conditional Pollers for Message Sources
"Smart" Polling
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
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
Aggregating Large Groups
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
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
Reactor Mono
8.4.11. Gateway behavior when no response arrives
8.5. Service Activator
8.5.1. Introduction
8.5.2. Configuring Service Activator
8.5.3. Asynchronous Service Activator
8.6. Delayer
8.6.1. Introduction
8.6.2. Configuring a Delayer
8.6.3. Delayer and a Message Store
8.7. Scripting support
8.7.1. Script configuration
8.8. Groovy support
8.8.1. Groovy configuration
8.8.2. Control Bus
8.9. Adding Behavior to Endpoints
8.9.1. Introduction
8.9.2. Provided Advice Classes
Retry Advice
Circuit Breaker Advice
Expression Evaluating Advice
8.9.3. Custom Advice Classes
8.9.4. Other Advice Chain Elements
8.9.5. Handle Message Advice
8.9.6. Transaction Support
8.9.7. Advising Filters
8.9.8. Advising Endpoints Using Annotations
8.9.9. Ordering Advices within an Advice Chain
8.9.10. Advised Handler Properties
8.9.11. Idempotent Receiver Enterprise Integration Pattern
8.10. Logging Channel Adapter
8.10.1. Configuring with Java Configuration
8.10.2. Configuring with the Java DSL
9. System Management
9.1. Metrics and Management
9.1.1. Configuring Metrics Capture
9.1.2. MessageChannel Metric Features
9.1.3. MessageHandler Metric Features
9.1.4. Time-Based Average Estimates
9.1.5. Metrics Factory
9.2. JMX Support
9.2.1. Notification Listening Channel Adapter
9.2.2. Notification Publishing Channel Adapter
9.2.3. Attribute Polling Channel Adapter
9.2.4. Tree Polling Channel Adapter
9.2.5. Operation Invoking Channel Adapter
9.2.6. Operation Invoking Outbound Gateway
9.2.7. MBean Exporter
MBean ObjectNames
JMX Improvements
Orderly Shutdown Managed Operation
9.3. Message History
9.3.1. Message History Configuration
9.4. Message Store
9.4.1. MessageGroupFactory
9.4.2. Persistence MessageGroupStore and Lazy-Load
9.5. Metadata Store
9.5.1. Idempotent Receiver and Metadata Store
9.5.2. MetadataStoreListener
9.6. Control Bus
9.7. Orderly Shutdown
9.8. Integration Graph
9.8.1. Graph Runtime Model
9.9. Integration Graph Controller
V. Integration Endpoints
10. Endpoint Quick Reference Table
11. AMQP Support
11.1. Introduction
11.2. Inbound Channel Adapter
11.2.1. Configuring with Java Configuration
11.2.2. Configuring with the Java DSL
11.3. Inbound Gateway
11.3.1. Configuring with Java Configuration
11.3.2. Configuring with the Java DSL
11.4. Inbound Endpoint Acknowledge Mode
11.5. Outbound Channel Adapter
11.5.1. Configuring with Java Configuration
11.5.2. Configuring with the Java DSL
11.6. Outbound Gateway
11.6.1. Configuring with Java Configuration
11.6.2. Configuring with the Java DSL
11.7. Async Outbound Gateway
11.7.1. Configuring with Java Configuration
11.7.2. Configuring with the Java DSL
11.8. Outbound Message Conversion
11.9. Outbound User Id
11.10. Delayed Message Exchange
11.11. AMQP Backed Message Channels
11.11.1. Configuring with Java Configuration
11.11.2. Configuring with the Java DSL
11.12. AMQP Message Headers
11.13. AMQP Samples
12. Spring ApplicationEvent Support
12.1. Receiving Spring Application Events
12.2. Sending Spring Application Events
13. Feed Adapter
13.1. Introduction
13.2. Feed Inbound Channel Adapter
13.3. Java DSL and Annotation configuration
14. File Support
14.1. Introduction
14.2. Reading Files
14.2.1. Namespace Support
14.2.2. WatchServiceDirectoryScanner
14.2.3. Limiting Memory Consumption
14.2.4. Configuring with Java Configuration
14.2.5. Configuring with the Java DSL
14.2.6. 'Tail’ing Files
14.2.7. Dealing With Incomplete Data
14.3. Writing files
14.3.1. Generating File Names
14.3.2. Specifying the Output Directory
14.3.3. Dealing with Existing Destination Files
14.3.4. Flushing Files When using APPEND_NO_FLUSH
14.3.5. File Timestamps
14.3.6. File Permissions
14.3.7. File Outbound Channel Adapter
14.3.8. Outbound Gateway
14.3.9. Configuring with Java Configuration
14.3.10. Configuring with the Java DSL
14.4. File Transformers
14.5. File Splitter
14.5.1. Configuring with Java Configuration
14.5.2. Configuring with the Java DSL
15. FTP/FTPS Adapters
15.1. Introduction
15.2. FTP Session Factory
15.2.1. Default Factories
15.2.2. FTPS and Shared SSLSession
15.3. Delegating Session Factory
15.4. FTP Inbound Channel Adapter
15.4.1. Recovering from Failures
15.4.2. Configuring with Java Configuration
15.4.3. Configuring with the Java DSL
15.4.4. Dealing With Incomplete Data
15.5. FTP Streaming Inbound Channel Adapter
15.5.1. Configuring with Java Configuration
15.6. Inbound Channel Adapters: Controlling Remote File Fetching
15.7. FTP Outbound Channel Adapter
15.7.1. Configuring with Java Configuration
15.7.2. Configuring with the Java DSL
15.8. FTP Outbound Gateway
15.8.1. Configuring with Java Configuration
15.8.2. Configuring with the Java DSL
15.8.3. Outbound Gateway Partial Success (mget and mput)
15.9. FTP Session Caching
15.10. RemoteFileTemplate
15.11. MessageSessionCallback
16. GemFire Support
16.1. Introduction
16.2. Inbound Channel Adapter
16.3. Continuous Query Inbound Channel Adapter
16.4. Outbound Channel Adapter
16.5. Gemfire Message Store
16.6. Gemfire Lock Registry
16.7. Gemfire Metadata Store
17. HTTP Support
17.1. Introduction
17.2. Http Inbound Components
17.3. Http Outbound Components
17.3.1. HttpRequestExecutingMessageHandler
17.4. HTTP Namespace Support
17.4.1. Introduction
17.4.2. Inbound
17.4.3. Request Mapping Support
17.4.4. Cross-Origin Resource Sharing (CORS) Support
17.4.5. Response StatusCode
17.4.6. URI Template Variables and Expressions
17.4.7. Outbound
17.4.8. Mapping URI Variables
17.4.9. Controlling URI Encoding
17.5. Configuring HTTP Endpoints with Java
17.6. Timeout Handling
17.7. HTTP Proxy configuration
17.8. HTTP Header Mappings
17.9. Integration Graph Controller
17.10. HTTP Samples
17.10.1. Multipart HTTP request - RestTemplate (client) and Http Inbound Gateway (server)
18. JDBC Support
18.1. Inbound Channel Adapter
18.1.1. Polling and Transactions
18.1.2. Max-rows-per-poll versus Max-messages-per-poll
18.2. Outbound Channel Adapter
18.3. Outbound Gateway
18.4. JDBC Message Store
18.4.1. Initializing the Database
18.4.2. The Generic JDBC Message Store
18.4.3. Backing Message Channels
18.4.4. Partitioning a Message Store
18.5. Stored Procedures
18.5.1. Supported Databases
18.5.2. Configuration
18.5.3. Common Configuration Attributes
18.5.4. Common Configuration Sub-Elements
18.5.5. Defining Parameter Sources
18.5.6. Stored Procedure Inbound Channel Adapter
18.5.7. Stored Procedure Outbound Channel Adapter
18.5.8. Stored Procedure Outbound Gateway
18.5.9. Examples
18.6. JDBC Lock Registry
18.7. JDBC Metadata Store
19. JPA Support
19.1. Supported Persistence Providers
19.2. Java Implementation
19.3. Namespace Support
19.3.1. Common XML Namespace Configuration Attributes
19.3.2. Providing JPA Query Parameters
19.3.3. Transaction Handling
19.4. Inbound Channel Adapter
19.4.1. Configuration Parameter Reference
19.4.2. Configuring with Java Configuration
19.4.3. Configuring with the Java DSL
19.5. Outbound Channel Adapter
19.5.1. Using an Entity Class
19.5.2. Using JPA Query Language (JPA QL)
19.5.3. Using Native Queries
19.5.4. Using Named Queries
19.5.5. Configuration Parameter Reference
19.5.6. Configuring with Java Configuration
19.5.7. Configuring with the Java DSL
19.6. Outbound Gateways
19.6.1. Common Configuration Parameters
19.6.2. Updating Outbound Gateway
19.6.3. Configuring with Java Configuration
19.6.4. Configuring with the Java DSL
19.6.5. Retrieving Outbound Gateway
19.6.6. Configuring with Java Configuration
19.6.7. Configuring with the Java DSL
19.6.8. JPA Outbound Gateway Samples
20. JMS Support
20.1. Inbound Channel Adapter
20.1.1. Transactions
20.2. Message-Driven Channel Adapter
20.2.1. Inbound Conversion Errors
20.3. Outbound Channel Adapter
20.3.1. Transactions
20.4. Inbound Gateway
20.5. Outbound Gateway
20.5.1. Gateway Reply Correlation
20.5.2. Async Gateway
20.5.3. Attribute Reference
20.6. Mapping Message Headers to/from JMS Message
20.7. Message Conversion, Marshalling and Unmarshalling
20.8. JMS Backed Message Channels
20.9. Using JMS Message Selectors
20.10. JMS Samples
21. Mail Support
21.1. Mail-Sending Channel Adapter
21.2. Mail-Receiving Channel Adapter
21.3. Inbound Mail Message Mapping
21.4. Mail Namespace Support
21.5. Marking IMAP Messages When \Recent is Not Supported
21.6. Email Message Filtering
21.7. Transaction Synchronization
22. MongoDb Support
22.1. Introduction
22.2. Connecting to MongoDb
22.3. MongoDB Message Store
22.3.1. MongoDB Channel Message Store
22.3.2. MongoDB Metadata Store
22.4. MongoDB Inbound Channel Adapter
22.5. MongoDB Outbound Channel Adapter
22.6. MongoDB Outbound Gateway
22.6.1. Configuring with Java Configuration
22.6.2. Configuring with the Java DSL
23. MQTT Support
23.1. Introduction
23.2. Inbound (message-driven) Channel Adapter
23.2.1. Adding/Removing Topics at Runtime
23.2.2. Configuring with Java Configuration
23.3. Outbound Channel Adapter
23.3.1. Configuring with Java Configuration
24. Redis Support
24.1. Introduction
24.2. Connecting to Redis
24.3. Messaging with Redis
24.3.1. Redis Publish/Subscribe channel
24.3.2. Redis Inbound Channel Adapter
24.3.3. Redis Outbound Channel Adapter
24.3.4. Redis Queue Inbound Channel Adapter
24.3.5. Redis Queue Outbound Channel Adapter
24.3.6. Redis Application Events
24.4. Redis Message Store
24.4.1. Redis Channel Message Stores
24.5. Redis Metadata Store
24.6. RedisStore Inbound Channel Adapter
24.7. RedisStore Outbound Channel Adapter
24.8. Redis Outbound Command Gateway
24.9. Redis Queue Outbound Gateway
24.10. Redis Queue Inbound Gateway
24.11. Redis Lock Registry
25. Resource Support
25.1. Introduction
25.2. Resource Inbound Channel Adapter
26. RMI Support
26.1. Introduction
26.2. Outbound RMI
26.3. Inbound RMI
26.4. RMI namespace support
26.5. Configuring with Java Configuration
27. SFTP Adapters
27.1. Introduction
27.2. SFTP Session Factory
27.2.1. Configuration Properties
27.3. Proxy Factory Bean
27.4. Delegating Session Factory
27.5. SFTP Session Caching
27.6. RemoteFileTemplate
27.7. SFTP Inbound Channel Adapter
27.7.1. Recovering from Failures
27.7.2. Configuring with Java Configuration
27.7.3. Configuring with the Java DSL
27.7.4. Dealing With Incomplete Data
27.8. SFTP Streaming Inbound Channel Adapter
27.8.1. Configuring with Java Configuration
27.9. Inbound Channel Adapters: Controlling Remote File Fetching
27.10. SFTP Outbound Channel Adapter
27.10.1. Configuring with Java Configuration
27.10.2. Configuring with the Java DSL
27.11. SFTP Outbound Gateway
27.11.1. Configuring with Java Configuration
27.11.2. Configuring with the Java DSL
27.11.3. Outbound Gateway Partial Success (mget and mput)
27.12. SFTP/JSCH Logging
27.13. MessageSessionCallback
28. STOMP Support
28.1. Introduction
28.2. Overview
28.3. STOMP Inbound Channel Adapter
28.4. STOMP Outbound Channel Adapter
28.5. STOMP Headers Mapping
28.6. STOMP Integration Events
28.7. STOMP Adapters Java Configuration
28.8. STOMP Namespace Support
29. Stream Support
29.1. Introduction
29.2. Reading from streams
29.3. Writing to streams
29.4. Stream namespace support
30. Syslog Support
30.1. Introduction
30.2. Syslog <inbound-channel-adapter>
30.2.1. Example Configuration
31. TCP and UDP Support
31.1. Introduction
31.2. UDP Adapters
31.3. TCP Connection Factories
31.3.1. TCP Caching Client Connection Factory
31.3.2. TCP Failover Client Connection Factory
31.3.3. TCP Thread Affinity Connection Factory
31.4. TCP Connection Interceptors
31.5. TCP Connection Events
31.6. TCP Adapters
31.7. TCP Gateways
31.8. TCP Message Correlation
31.8.1. Overview
31.8.2. Gateways
31.8.3. Collaborating Outbound and Inbound Channel Adapters
31.8.4. Transferring Headers
31.9. A Note About NIO
31.9.1. Thread Pool Task Executor with CALLER_RUNS Policy
31.10. SSL/TLS Support
31.10.1. Overview
31.10.2. Getting Started
31.11. Advanced Techniques
31.11.1. Strategy Interfaces
31.11.2. Example: Enabling SSL Client Authentication
31.12. IP Configuration Attributes
31.13. IP Message Headers
31.14. Annotation-Based Configuration
32. Twitter Support
32.1. Introduction
32.2. Twitter OAuth Configuration
32.3. Twitter Template
32.4. Twitter Inbound Adapters
32.4.1. Inbound Message Channel Adapter
32.4.2. Direct Inbound Message Channel Adapter
32.4.3. Mentions Inbound Message Channel Adapter
32.4.4. Search Inbound Message Channel Adapter
32.5. Twitter Outbound Adapter
32.5.1. Twitter Outbound Update Channel Adapter
32.5.2. Twitter Outbound Direct Message Channel Adapter
32.6. Twitter Search Outbound Gateway
33. WebFlux Support
33.1. Introduction
33.2. WebFlux Inbound Components
33.3. WebFlux Outbound Components
33.4. WebFlux Namespace Support
33.4.1. Introduction
33.4.2. Inbound
33.4.3. Outbound
33.5. Configuring WebFlux Endpoints with Java
33.6. WebFlux Header Mappings
34. WebSockets Support
34.1. Introduction
34.2. Overview
34.3. WebSocket Inbound Channel Adapter
34.4. WebSocket Outbound Channel Adapter
34.5. WebSockets Namespace Support
35. Web Services Support
35.1. Outbound Web Service Gateways
35.2. Inbound Web Service Gateways
35.3. Web Service Namespace Support
35.4. Outbound URI Configuration
35.5. WS Message Headers
35.6. MTOM Support
36. XML Support - Dealing with XML Payloads
36.1. Introduction
36.2. Namespace Support
36.2.1. XPath Expressions
Providing Namespaces (Optional) to XPath Expressions
Using XPath Expressions with Default Namespaces
36.3. Transforming XML Payloads
36.3.1. Configuring Transformers as Beans
36.3.2. Namespace Support for XML Transformers
36.3.3. Namespace Configuration and ResultTransformers
36.4. Transforming XML Messages Using XPath
36.5. Splitting XML Messages
36.6. Routing XML Messages Using XPath
36.6.1. XML Payload Converter
36.7. XPath Header Enricher
36.8. Using the XPath Filter
36.9. #xpath SpEL Function
36.10. XML Validating Filter
37. XMPP Support
37.1. Introduction
37.2. XMPP Connection
37.3. XMPP Messages
37.3.1. Inbound Message Channel Adapter
37.3.2. Outbound Message Channel Adapter
37.4. XMPP Presence
37.4.1. Inbound Presence Message Channel Adapter
37.4.2. Outbound Presence Message Channel Adapter
37.5. Advanced Configuration
37.6. XMPP Message Headers
37.7. XMPP Extensions
38. Zookeeper Support
38.1. Introduction
38.2. Zookeeper Metadata Store
38.3. Zookeeper Lock Registry
38.4. Zookeeper Leadership Event Handling
VI. Appendices
A. Spring Expression Language (SpEL)
A.1. Introduction
A.2. SpEL Evaluation Context Customization
A.3. SpEL Functions
A.4. PropertyAccessors
B. Message Publishing
B.1. Message Publishing Configuration
B.1.1. Annotation-driven approach via @Publisher annotation
B.1.2. XML-based approach via the <publishing-interceptor> element
B.1.3. Producing and publishing messages based on a scheduled trigger
C. Transaction Support
C.1. Understanding Transactions in Message flows
C.1.1. Poller Transaction Support
C.2. Transaction Boundaries
C.3. Transaction Synchronization
C.4. Pseudo Transactions
D. Security in Spring Integration
D.1. Introduction
D.2. Securing channels
D.3. SecurityContext Propagation
E. Configuration
E.1. Introduction
E.2. Namespace Support
E.3. Configuring the Task Scheduler
E.4. Error Handling
E.5. Global Properties
E.6. Annotation Support
E.6.1. Messaging Meta-Annotations
E.6.2. Annotations on @Beans
E.6.3. Creating a Bridge with Annotations
E.6.4. Advising Annotated Endpoints
E.7. Message Mapping rules and conventions
E.7.1. Simple Scenarios
E.7.2. Complex Scenarios
F. Testing support
F.1. Introduction
F.2. Testing Utilities
F.2.1. TestUtils
F.2.2. SocketUtils
F.2.3. OnlyOnceTrigger
F.2.4. Support Components
F.2.5. Hamcrest and Mockito Matchers
F.3. Spring Integration and test context
F.4. Integration Mocks
F.4.1. MockIntegration
F.5. Other Resources
G. Spring Integration Samples
G.1. Introduction
G.2. Where to get Samples
G.3. Submitting Samples or Sample Requests
G.4. Samples Structure
G.5. Samples
G.5.1. Loan Broker
G.5.2. The Cafe Sample
G.5.3. The XML Messaging Sample
H. Additional Resources
H.1. Spring Integration Home
I. Change History
I.1. Changes between 4.2 and 4.3
I.2. New Components
I.2.1. AMQP Async Outbound Gateway
I.2.2. MessageGroupFactory
I.2.3. PersistentMessageGroup
I.2.4. FTP/SFTP Streaming Inbound Channel Adapters
I.2.5. Stream Transformer
I.2.6. Integration Graph
I.2.7. JDBC Lock Registry
I.2.8. Leader Initiator for Lock Registry
I.3. General Changes
I.3.1. Core Changes
Outbound Gateway within Chain
Async Service Activator
Messaging Annotation Support changes
I.3.2. Mail Changes
Customizable User Flag
Mail Message Mapping
I.3.3. JMS Changes
Header Mapper
Async Gateway
I.3.4. Aggregator Changes
I.3.5. TCP/UDP Changes
Stream Deserializers
TCP Message Mapper
I.3.6. File Changes
Destination Directory Creation
Buffer Size
Appending and Flushing
Preserving Timestamps
Splitter Changes
File Filters
I.3.7. AMQP Changes
Content Type Message Converter
Headers for Delayed Message Handling
AMQP-Backed Channels
I.3.8. Redis Changes
List Push/Pop Direction
Queue Inbound Gateway Default Serializer
I.3.9. HTTP Changes
I.3.10. SFTP Changes
Factory Bean
I.3.11. FTP Changes
Session Changes
I.3.12. Router Changes
I.3.13. Header Mapping
AMQP Header Mapping
I.3.14. Groovy Scripts
I.3.15. @InboundChannelAdapter
I.3.16. XMPP changes
I.3.17. WireTap Late Binding
I.3.18. ChannelMessageStoreQueryProvider
I.3.19. WebSocket Changes
I.4. Changes between 4.1 and 4.2
I.5. New Components
I.5.1. Major Management/JMX Rework
I.5.2. MongoDB Metadata Store
I.5.3. SecuredChannel Annotation
I.5.4. SecurityContext Propagation
I.5.5. FileSplitter
I.5.6. Zookeeper Support
I.5.7. Thread Barrier
I.5.8. STOMP Support
I.5.9. Codec
I.5.10. Message PreparedStatement Setter
I.6. General Changes
I.6.1. Wire Tap
I.6.2. File Changes
Appending New Lines
Ignoring Hidden Files
Writing InputStream Payloads
Last Modified Filter
WatchService Directory Scanner
Persistent File List Filter Changes
I.6.3. Class Package Change
I.6.4. TCP Changes
TCP Serializers
Server Socket Exceptions
TCP Server Port
TCP Gateway Remote Timeout
TCP SSLSession Available for Header Mapping
TCP Events
I.6.5. @InboundChannelAdapter
I.6.6. API Changes
I.6.7. JMS Changes
Reply Listener Lazy Initialization
Conversion Errors in Message-Driven Endpoints
Default Acknowledge Mode
Shared Subscriptions
I.6.8. Conditional Pollers
I.6.9. AMQP Changes
Publisher Confirms
Correlation Data
The Inbound Gateway properties
I.6.10. XPath Splitter Improvements
I.6.11. HTTP Changes
Inbound Gateway Timeout
Form Data
I.6.12. Gateway Changes
Gateway Methods can Return CompletableFuture<?>
MessagingGateway Annotation
I.6.13. Aggregator Changes
Aggregator Performance
Output Message Group Processor
I.6.14. (S)FTP Changes
Inbound channel adapters
Gateway Partial Results
Delegating Session Factory
Default Sftp Session Factory
Message Session Callback
I.6.15. Websocket Changes
I.6.16. Application Event Adapters changes
I.7. Changes between 4.0 and 4.1
I.7.1. New Components
Promise<?> Gateway
WebSocket support
Scatter-Gather EIP pattern
Routing Slip Pattern
Idempotent Receiver Pattern
Redis Queue Gateways
I.7.2. General Changes
AMQP Inbound Endpoints, Channel
AMQP Outbound Endpoints
Web Service Outbound Gateway: encode-uri
Http Inbound Channel Adapter and StatusCode
MQTT Adapter Changes
FTP/SFTP Adapter Changes
Splitter and Iterator
Content Enricher Improvements
Header Channel Registry
Orderly Shutdown
Management for RecipientListRouter
AbstractHeaderMapper: NON_STANDARD_HEADERS token
AMQP Channels: template-channel-transacted
Syslog Adapter
Async Gateway
Aggregator Advice Chain
Outbound Channel Adapter and Scripts
Resequencer Changes
Optional POJO method parameter
QueueChannel: backed Queue type
ChannelInterceptor Changes
I.8. Changes between 3.0 and 4.0
I.8.1. New Components
MQTT Channel Adapters
Spring Boot @EnableAutoConfiguration
Redis Channel Message Stores
MongodDB Channel Message Store
Redis Command Gateway
RedisLockRegistry and GemfireLockRegistry
@InboundChannelAdapter and SmartLifecycle for Annotated Endpoints
Twitter Search Outbound Gateway
Gemfire Metadata Store
@BridgeFrom and @BridgeTo Annotations
Meta Messaging Annotations
I.8.2. General Changes
Requires Spring Framework 4.0
Header Type for XPath Header Enricher
Object To Json Transformer: Node Result
JMS Header Mapping
JMS Outbound Channel Adapter
JMS Inbound Channel Adapter
Datatype Channels
Simpler Retry Advice Configuration
Correlation Endpoint: Time-based Release Strategy
Redis Metadata Store
JdbcChannelMessageStore and PriorityChannel
AMQP Endpoints Delivery Mode
FTP Timeouts
Twitter: StatusUpdatingMessageHandler
JPA Retrieving Gateway: id-expression
TCP Deserialization Events
Messaging Annotations on @Bean Definitions
I.9. Changes Between 2.2 and 3.0
I.9.1. New Components
HTTP Request Mapping
Spring Expression Language (SpEL) Configuration
SpEL Functions Support
SpEL PropertyAccessors Support
Redis: New Components
Header Channel Registry
MongoDB support: New ConfigurableMongoDbMessageStore
Syslog Support
Tail Support
JMX Support
TCP/IP Connection Events and Connection Management
Inbound Channel Adapter Script Support
Content Enricher: Headers Enrichment Support
I.9.2. General Changes
Message ID Generation
<gateway> Changes
HTTP Endpoint Changes
Jackson Support (JSON)
Chain Elements id Attribute
Aggregator empty-group-min-timeout property
Persistent File List Filters (file, (S)FTP)
Scripting Support: Variables Changes
Direct Channel Load Balancing configuration
PublishSubscribeChannel Behavior
FTP, SFTP and FTPS Changes
requires-reply Attribute for Outbound Gateways
AMQP Outbound Gateway Header Mapping
Stored Procedure Components Improvements
Web Service Outbound URI Configuration
Redis Adapter Changes
Advising Filters
Advising Endpoints using Annotations
ObjectToStringTransformer Improvements
JPA Support Changes
Delayer: delay expression
JDBC Message Store Improvements
IMAP Idle Connection Exceptions
Message Headers and TCP
JMS Message Driven Channel Adapter
RMI Inbound Gateway
I.10. Changes between 2.1 and 2.2
I.10.1. New Components
RedisStore Inbound and Outbound Channel Adapters
MongoDB Inbound and Outbound Channel Adapters
JPA Endpoints
I.10.2. General Changes
Spring 3.1 Used by Default
Adding Behavior to Endpoints
Transaction Synchronization and Pseudo Transactions
File Adapter - Improved File Overwrite/Append Handling
Reply-Timeout added to more Outbound Gateways
Spring-AMQP 1.1
JDBC Support - Stored Procedures Components
JDBC Support - Outbound Gateway
JDBC Support - Channel-specific Message Store Implementation
Orderly Shutdown
JMS Oubound Gateway Improvements
HTTP Support
I.11. Changes between 2.0 and 2.1
I.11.1. New Components
JSR-223 Scripting Support
GemFire Support
AMQP Support
MongoDB Support
Redis Support
Support for Spring’s Resource abstraction
Stored Procedure Components
XPath and XML Validating Filter
Payload Enricher
FTP and SFTP Outbound Gateways
FTP Session Caching
I.11.2. Framework Refactoring
Standardizing Router Configuration
XML Schemas updated to 2.1
I.11.3. Source Control Management and Build Infrastructure
Source Code now hosted on Github
Improved Source Code Visibility with Sonar
I.11.4. New Samples
I.12. Changes between 1.0 and 2.0
I.12.1. Spring 3 support
Support for the Spring Expression Language (SpEL)
ConversionService and Converter
TaskScheduler and Trigger
RestTemplate and HttpMessageConverter
I.12.2. Enterprise Integration Pattern Additions
Message History
Message Store
Claim Check
Control Bus
I.12.3. New Channel Adapters and Gateways
TCP/UDP Adapters
Twitter Adapters
XMPP Adapters
FTP/FTPS Adapters
SFTP Adapters
Feed Adapters
I.12.4. Other Additions
Groovy Support
Map Transformers
JSON Transformers
Serialization Transformers
I.12.5. Framework Refactoring
I.12.6. New Source Control Management and Build Infrastructure
I.12.7. New Spring Integration Samples
I.12.8. Spring Tool Suite Visual Editor for Spring Integration