Changes between 2.1 and 2.2
New Components
RedisStore Inbound and Outbound Channel Adapters Spring Integration now has RedisStore Inbound and Outbound Channel Adapters allowing you to write and read Message payloads to/from Redis collection(s). For more information please see and .
MongoDB Inbound and Outbound Channel Adapters Spring Integration now has MongoDB Inbound and Outbound Channel Adapters allowing you to write and read Message payloads to/from a MongoDB document store. For more information please see and .
JPA Endpoints Spring Integration now includes components for the Java Persistence API (JPA) for retrieving and persisting JPA entity objects. The JPA Adapter includes the following components: Inbound Channel Adapter Outbound Channel Adapter Updating Outbound Gateway Retrieving Outbound Gateway For more information please see
General Changes
Spring 3.1 Used by Default Spring Integration now uses Spring 3.1.
Adding Behavior to Endpoints The ability to add an <advice-chain/> to a poller has been available for some time. However, the behavior added by this affects the entire integration flow. It did not address the ability to add, say, retry, to an individual endpoint. The 2.2. release introduces the <request-handler-advice-chain/> to many endpoints. In addition, 3 standard Advice classes have been provided for this purpose: MessageHandlerRetryAdvice MessageHandlerCircuitBreakerAdvice ExpressionEvaluatingMessageHandlerAdvice For more information, see .
Transaction Synchronization and Pseudo Transactions Pollers can now participate in Spring's Transaction Synchronization feature. This allows for synchronizing such operations as renaming files by an inbound channel adapter depending on whether the transaction commits, or rolls back. In addition, these features can be enabled when there is not a 'real' transaction present, by means of a PseudoTransactionManager. For more information see .
File Adapter - Improved File Overwrite/Append Handling When using the File Oubound Channel Adapter or the File Outbound Gateway, a new mode property was added. Prior to Spring Integration 2.2, target files were replaced when they existed. Now you can specify the following options: REPLACE (Default) APPEND FAIL IGNORE For more information please see .
Reply-Timeout added to more Outbound Gateways The XML Namespace support adds the reply-timeout attribute to the following Outbound Gateways: Amqp Outbound Gateway File Outbound Gateway Ftp Outbound Gateway Sftp Outbound Gateway Ws Outbound Gateway
Spring-AMQP 1.1 Spring Integration now uses Spring AMQP 1.1. This enables several features to be used within a Spring Integration application, including... A fixed reply queue for the outbound gateway HA (mirrored) queues Publisher Confirms Returned Messages Support for Dead Letter Exchanges/Dead Letter Queues
JDBC Support - Stored Procedures Components SpEL Support When using the Stored Procedure components of the Spring Integration JDBC Adapter, you can now provide Stored Procedure Names or Stored Function Names using Spring Expression Language (SpEL). This allows you to specify the Stored Procedures to be invoked at runtime. For example, you can provide Stored Procedure names that you would like to execute via Message Headers. For more information please see . JMX Support The Stored Procedure components now provide basic JMX support, exposing some of their properties as MBeans: Stored Procedure Name Stored Procedure Name Expression JdbcCallOperations Cache Statistics
JDBC Support - Outbound Gateway When using the JDBC Outbound Gateway, the update query is no longer mandatory. You can now provide solely a select query using the request message as a source of parameters.
JDBC Support - Channel-specific Message Store Implementation A new Message Channel-specific Message Store Implementation has been added, providing a more scalable solution using database-specific SQL queries. For more information please see: .
Orderly Shutdown A method stopActiveComponents() has been added to the IntegrationMBeanExporter. This allows a Spring Integration application to be shut down in an orderly manner, disallowing new inbound messages to certain adapters and waiting for some time to allow in-flight messages to complete.
JMS Oubound Gateway Improvements The JMS Outbound Gateway can now be configured to use a MessageListener container to receive replies. This can improve performance of the gateway.
object-to-json-transformer The ObjectToJsonTransformer now sets the content-type header to application/json by default. For more information see .
HTTP Support Java serialization over HTTP is no longer enabled by default. Previously, when setting a expected-response-type to a Serializable object, the Accept header was not properly set up. The SerializingHttpMessageConverter has now been updated to set the Accept header to application/x-java-serialized-object. However, because this could cause incompatibility with existing applications, it was decided to no longer automatically add this converter to the HTTP endpoints. If you wish to use Java serialization, you will need to add the SerializingHttpMessageConverter to the appropriate endpoints, using the message-converters attribute, when using XML configuration, or using the setMessageConverters() method. Alternatively, you may wish to consider using JSON instead which is enabled by simply having Jackson on the classpath.