Prepare Master for 4.3
Reference to 4.3 Refactor `what's new` for 4.3
This commit is contained in:
committed by
Artem Bilan
parent
1fe50138f0
commit
051b393ed0
@@ -1,4 +1,385 @@
|
||||
[[migration-4.1-4.2]]
|
||||
=== Changes between 4.1 and 4.2
|
||||
|
||||
For an overview of the changes in Spring Integration 4.2 since version 4.1, please see <<whats-new>>.
|
||||
Please be sure to also see the https://github.com/spring-projects/spring-integration/wiki/Spring-Integration-4.1-to-4.2-Migration-Guide[Migration Guide]
|
||||
for important changes that might affect your applications.
|
||||
Migration guides for all versions back to _2.1_ can be found on the https://github.com/spring-projects/spring-integration/wiki[Wiki].
|
||||
|
||||
[[x4.2-new-components]]
|
||||
=== New Components
|
||||
|
||||
[[x4.2-JMX]]
|
||||
==== Major Management/JMX Rework
|
||||
|
||||
A new `MetricsFactory` strategy interface has been introduced.
|
||||
This, together with other changes in the JMX and management infrastructure provides much more control over management
|
||||
configuration and runtime performance.
|
||||
|
||||
However, this has some important implications for (some) user environments.
|
||||
|
||||
For complete details, see <<metrics-management>> and <<jmx-42-improvements>>.
|
||||
|
||||
[[x4.2-mongodb-metadata-store]]
|
||||
==== MongoDB Metadata Store
|
||||
|
||||
The `MongoDbMetadataStore` is now available. For more information, see <<mongodb-metadata-store>>.
|
||||
|
||||
[[x4.2-secured-channel-annotation]]
|
||||
==== SecuredChannel Annotation
|
||||
|
||||
The `@SecuredChannel` annotation has been introduced, replacing the deprecated `ChannelSecurityInterceptorFactoryBean`.
|
||||
For more information, see <<security>>.
|
||||
|
||||
[[x4.2-security-context-propagation]]
|
||||
==== SecurityContext Propagation
|
||||
|
||||
The `SecurityContextPropagationChannelInterceptor` has been
|
||||
introduced for the `SecurityContext` propagation from one message flow's Thread to another.
|
||||
For more information, see <<security>>.
|
||||
|
||||
|
||||
[[x4.2-file-splitter]]
|
||||
==== FileSplitter
|
||||
|
||||
The `FileSplitter`, which splits text files into lines, was added in 4.1.2.
|
||||
It now has full support in the `int-file:` namespace; see <<file-splitter>> for more information.
|
||||
|
||||
[[x4.2-zk]]
|
||||
==== Zookeeper Support
|
||||
|
||||
Zookeeper support has been added to the framework to assist when running on a clustered/multi-host environment.
|
||||
|
||||
* ZookeeperMetadataStore
|
||||
* ZookeeperLockRegistry
|
||||
* Zookeeper Leadership
|
||||
|
||||
See <<zookeeper>> for more information.
|
||||
|
||||
[[x4.2-barrier]]
|
||||
==== Thread Barrier
|
||||
|
||||
A new thread `<int:barrier/>` component is available allowing a thread to be suspended until some asynchronous event
|
||||
occurs.
|
||||
|
||||
See <<barrier>> for more information.
|
||||
|
||||
[[x4.2-stomp]]
|
||||
==== STOMP Support
|
||||
|
||||
STOMP support has been added to the framework as _inbound_ and _outbound_ channel adapters pair.
|
||||
See <<stomp>> for more information.
|
||||
|
||||
[[x4.2-codec]]
|
||||
==== Codec
|
||||
A new `Codec` abstraction has been introduced, to encode/decode objects to/from `byte[]`.
|
||||
An implementation that uses Kryo is provided.
|
||||
Codec-based transformers and message converters are also provided.
|
||||
|
||||
See <<codec>> for more information.
|
||||
|
||||
[[x4.2-prepared-statement-setter]]
|
||||
==== Message PreparedStatement Setter
|
||||
|
||||
A new `MessagePreparedStatementSetter` functional interface callback is available for the `JdbcMessageHandler`
|
||||
(`<int-jdbc:outbound-gateway>` and `<int-jdbc:outbound-channel-adapter>`) as an alternative to the
|
||||
`SqlParameterSourceFactory` to populate parameters on the `PreparedStatement` with the `requestMessage` context.
|
||||
|
||||
See <<jdbc-outbound-channel-adapter>> for more information.
|
||||
|
||||
[[x4.2-general]]
|
||||
=== General Changes
|
||||
|
||||
[[x4.2-wire-tap]]
|
||||
==== Wire Tap
|
||||
|
||||
As an alternative to the existing `selector` attribute, the `<wire-tap/>` now supports the `selector-expression` attribute.
|
||||
|
||||
[[x4.2-file-changes]]
|
||||
==== File Changes
|
||||
|
||||
See <<files>> for more information about these changes.
|
||||
|
||||
===== Appending New Lines
|
||||
|
||||
The `<int-file:outbound-channel-adapter>` and `<int-file:outbound-gateway>` now support an `append-new-line` attribute.
|
||||
If set to `true`, a new line is appended to the file after a message is written.
|
||||
The default attribute value is `false`.
|
||||
|
||||
===== Ignoring Hidden Files
|
||||
|
||||
The `ignore-hidden` attribute has been introduced for the `<int-file:inbound-channel-adapter>` to pick up or not
|
||||
the _hidden_ files from the source directory.
|
||||
It is `true` by default.
|
||||
|
||||
===== Writing InputStream Payloads
|
||||
|
||||
The `FileWritingMessageHandler` now also accepts `InputStream` as a valid message payload type.
|
||||
|
||||
===== HeadDirectoryScanner
|
||||
|
||||
The `HeadDirectoryScanner` can now be used with other `FileListFilter` s.
|
||||
|
||||
===== Last Modified Filter
|
||||
|
||||
The `LastModifiedFileListFilter` has been added.
|
||||
|
||||
===== WatchService Directory Scanner
|
||||
|
||||
The `WatchServiceDirectoryScanner` is now available.
|
||||
|
||||
===== Persistent File List Filter Changes
|
||||
|
||||
The `AbstractPersistentFileListFilter` has a new property `flushOnUpdate` which, when set to true, will `flush()` the
|
||||
metadata store if it implements `Flushable` (e.g. the `PropertiesPersistingMetadataStore`).
|
||||
|
||||
[[x4.2-class-package-change]]
|
||||
==== Class Package Change
|
||||
|
||||
The `ScatterGatherHandler` class has been moved from the `org.springframework.integration.handler` to the `org.springframework.integration.scattergather`.
|
||||
|
||||
==== TCP Changes
|
||||
|
||||
[[x4.2-tcp-serializers]]
|
||||
===== TCP Serializers
|
||||
|
||||
The TCP `Serializers` no longer `flush()` the `OutputStream`; this is now done by the `TcpNxxConnection` classes.
|
||||
If you are using the serializers directly within user code, you may have to `flush()` the `OutputStream`.
|
||||
|
||||
[[x4.2-tcp-server-exceptions]]
|
||||
===== Server Socket Exceptions
|
||||
|
||||
`TcpConnectionServerExceptionEvent` s are now published whenever an unexpected exception occurs on a TCP server socket (also added to 4.1.3, 4.0.7).
|
||||
See <<tcp-events>> for more information.
|
||||
|
||||
[[x4.2-tcp-server-port]]
|
||||
===== TCP Server Port
|
||||
|
||||
If a TCP server socket factory is configured to listen on a random port, the actual port chosen by the OS can now
|
||||
be obtained using `getPort()`.
|
||||
`getServerSocketAddress()` is also available.
|
||||
|
||||
See <<connection-factories>> for more information.
|
||||
|
||||
[[x4.2-tcp-gw-rto]]
|
||||
===== TCP Gateway Remote Timeout
|
||||
|
||||
The `TcpOutboundGateway` now supports `remote-timeout-expression` as an alternative to the existing `remote-timeout` attribute.
|
||||
This allows setting the timeout based on each message.
|
||||
|
||||
Also, the `remote-timeout` no longer defaults to the same value as `reply-timeout` which has a completely different meaning.
|
||||
|
||||
See <<tcp-ob-gateway-attributes>> for more information.
|
||||
|
||||
[[x4.2-tcp-ssl]]
|
||||
===== TCP SSLSession Available for Header Mapping
|
||||
|
||||
`TcpConnection` s now support `getSslSession()` to enable users to extract information from the session to add to
|
||||
message headers.
|
||||
|
||||
See <<ip-msg-headers>> for more information.
|
||||
|
||||
|
||||
[[x4.2-tcp-events]]
|
||||
===== TCP Events
|
||||
|
||||
New events are now published whenever a correlation exception occurs - for example sending a message to a
|
||||
non-existent socket.
|
||||
|
||||
The `TcpConnectionEventListeningMessageProducer` is deprecated; use the generic event adapter instead.
|
||||
|
||||
See <<tcp-events>> for more information.
|
||||
|
||||
[[x4.2-inbound-channel-adapter-annotation]]
|
||||
==== @InboundChannelAdapter
|
||||
|
||||
Previously, the `@Poller` on an inbound channel adapter defaulted the `maxMessagesPerPoll` attribute to `-1` (infinity).
|
||||
This was inconsistent with the XML configuration of `<inbound-channel-adapter/>` s, which defaults to 1.
|
||||
The annotation now defaults this attribute to 1.
|
||||
|
||||
[[x4.2-api-changes]]
|
||||
==== API Changes
|
||||
|
||||
`o.s.integration.util.FunctionIterator` now requires a `o.s.integration.util.Function` instead of a
|
||||
`reactor.function.Function`.
|
||||
This was done to remove an unnecessary hard dependency on Reactor.
|
||||
Any uses of this iterator will need to change the import.
|
||||
|
||||
Of course, Reactor is still supported for functionality such as the `Promise` gateway; the dependency was removed for those users who don't need it.
|
||||
|
||||
[[x4.2-jms-changes]]
|
||||
==== JMS Changes
|
||||
|
||||
===== Reply Listener Lazy Initialization
|
||||
|
||||
It is now possible to configure the reply listener in JMS outbound gateways to be initialized on-demand and stopped
|
||||
after an idle period, instead of being controlled by the gateway's lifecycle.
|
||||
|
||||
See <<jms-outbound-gateway>> for more information.
|
||||
|
||||
===== Conversion Errors in Message-Driven Endpoints
|
||||
|
||||
The `error-channel` now is used for the conversion errors, which have caused a transaction rollback and message redelivery previously.
|
||||
|
||||
See <<jms-message-driven-channel-adapter>> and <<jms-inbound-gateway>> for more information.
|
||||
|
||||
===== Default Acknowledge Mode
|
||||
|
||||
When using an implicitly defined `DefaultMessageListenerContainer`, the default `acknowledge` is now `transacted`.
|
||||
`transacted` is recommended when using this container, to avoid message loss.
|
||||
This default now applies to the message-driven inbound adapter and the inbound gateway, it was already the
|
||||
default for jms-backed channels.
|
||||
|
||||
See <<jms-message-driven-channel-adapter>> and <<jms-inbound-gateway>> for more information.
|
||||
|
||||
===== Shared Subscriptions
|
||||
|
||||
Namespace support for shared subscriptions (JMS 2.0) has been added to message-driven endpoints and the
|
||||
`<int-jms:publish-subscribe-channel>`.
|
||||
Previously, you had to wire up listener containers as `<bean/>` s to use shared connections.
|
||||
|
||||
See <<jms>> for more information.
|
||||
|
||||
[[x4.2-conditional-pollers]]
|
||||
==== Conditional Pollers
|
||||
Much more flexibility is now provided for dynamic polling.
|
||||
|
||||
See <<conditional-pollers>> for more information.
|
||||
|
||||
[[x4.2-amqp-changes]]
|
||||
==== AMQP Changes
|
||||
|
||||
===== Publisher Confirms
|
||||
|
||||
The `<int-amqp:outbound-gateway>` now supports `confirm-correlation-expression` and `confirm-(n)ack-channel`
|
||||
attributes with similar purpose as for `<int-amqp:outbound-channel-adapter>`.
|
||||
|
||||
===== Correlation Data
|
||||
|
||||
For both the outbound channel adapter and gateway, if the correlation data is a `Message<?>`, it will be the basis
|
||||
of the message on the ack/nack channel, with the additional header(s) added.
|
||||
Previously, any correlation data (including `Message<?>`) was returned as the payload of the ack/nack message.
|
||||
|
||||
===== The Inbound Gateway properties
|
||||
|
||||
The `<int-amqp:inbound-gateway>` now exposes the `amqp-template` attribute to allow more control over an external bean
|
||||
for the reply `RabbitTemplate` or even provide your own `AmqpTemplate` implementation.
|
||||
In addition the `default-reply-to` is exposed to be used if request message doesn't have `replyTo` property.
|
||||
|
||||
See <<amqp>> for more information.
|
||||
|
||||
[[x4.2-xpath-splitter]]
|
||||
==== XPath Splitter Improvements
|
||||
|
||||
The `XPathMessageSplitter` (`<int-xml:xpath-splitter>`) now allows the configuration of `output-properties`
|
||||
for the internal `javax.xml.transform.Transformer` and supports an `Iterator` mode (defaults to `true`) for the xpath
|
||||
evaluation `org.w3c.dom.NodeList` result.
|
||||
|
||||
See <<xml-xpath-splitting>> for more information.
|
||||
|
||||
[[x4.2-http-changes]]
|
||||
==== HTTP Changes
|
||||
|
||||
===== CORS
|
||||
|
||||
The HTTP Inbound Endpoints (`<int-http:inbound-channel-adapter>` and `<int-http:inbound-gateway>`) now allow the
|
||||
configuration of _Cross-Origin Resource Sharing (CORS)_.
|
||||
|
||||
See <<http-cors>> for more information.
|
||||
|
||||
===== Inbound Gateway Timeout
|
||||
|
||||
The HTTP inbound gateway can be configured as to what status code to return when a request times out.
|
||||
The default is now `500 Internal Server Error` instead of `200 OK`.
|
||||
|
||||
See <<http-response-statuscode>> for more information.
|
||||
|
||||
===== Form Data
|
||||
|
||||
Documentation is provided for when proxying `multipart/form-data` requests.
|
||||
See <<http>> for more information.
|
||||
|
||||
[[x4.2-gw]]
|
||||
==== Gateway Changes
|
||||
|
||||
===== Gateway Methods can Return CompletableFuture<?>
|
||||
|
||||
When using Java 8, gateway methods can now return `CompletableFuture<?>`.
|
||||
See <<gw-completable-future>> for more information.
|
||||
|
||||
===== MessagingGateway Annotation
|
||||
|
||||
The request and reply timeout properties are now `String` instead of `Long` to allow configuration with property
|
||||
placeholders or SpEL. See <<messaging-gateway-annotation>>.
|
||||
|
||||
[[x4.2-aggregator-changes]]
|
||||
==== Aggregator Changes
|
||||
|
||||
===== Aggregator Performance
|
||||
|
||||
This release includes some performance improvements for aggregating components (aggregator, resequencer, etc),
|
||||
by more efficiently removing messages from groups when they are released.
|
||||
New methods (`removeMessagesFromGroup`) have been added to the message store.
|
||||
Set the `removeBatchSize` property (default `100`) to adjust the number of messages deleted in each operation.
|
||||
Currently, JDBC, Redis and MongoDB message stores support this property.
|
||||
|
||||
===== Output Message Group Processor
|
||||
|
||||
When using a `ref` or inner bean for the aggregator, it is now possible to bind a `MessageGroupProcessor` directly.
|
||||
In addition, a `SimpleMessageGroupProcessor` is provided that simply returns the collection of messages in the group.
|
||||
When an output processor produces a collection of `Message<?>`, the aggregator releases those messages individually.
|
||||
Configuring the `SimpleMessageGroupProcessor` makes the aggregator a message barrier, were messages are held up
|
||||
until they all arrive, and are then released individually. See <<aggregator>> for more information.
|
||||
|
||||
==== (S)FTP Changes
|
||||
|
||||
===== Inbound channel adapters
|
||||
|
||||
You can now specify a `remote-directory-expression` on the inbound channel adapters, to determine the directory
|
||||
at runtime.
|
||||
See <<ftp>> and <<sftp>> for more information.
|
||||
|
||||
===== Gateway Partial Results
|
||||
|
||||
When use FTP/SFTP outbound gateways to operate on multiple files (`mget`, `mput`), it is possible for an exception to
|
||||
occur after part of the request is completed.
|
||||
If such a condition occurs, a `PartialSuccessException` is thrown containing the partial results.
|
||||
See <<ftp-outbound-gateway>> and <<sftp-outbound-gateway>> for more information.
|
||||
|
||||
===== Delegating Session Factory
|
||||
|
||||
A delegating session factory is now available, enabling the selection of a particular session factory based on some
|
||||
thread context value.
|
||||
|
||||
See <<ftp-dsf>> and <<sftp-dsf>> for more information.
|
||||
|
||||
===== Default Sftp Session Factory
|
||||
|
||||
Previously, the `DefaultSftpSessionFactory` unconditionally allowed connections to unknown hosts.
|
||||
This is now configurable (default false).
|
||||
|
||||
The factory now requires a configured `knownHosts` file unless the `allowUnknownKeys` property is `true` (default
|
||||
false).
|
||||
|
||||
See <<sftp-unk-hosts>> for more information.
|
||||
|
||||
===== Message Session Callback
|
||||
|
||||
The `MessageSessionCallback<F, T>` has been introduced to perform any custom `Session` operation(s) with the
|
||||
`requestMessage` context in the `<int-(s)ftp:outbound-gateway/>`.
|
||||
|
||||
See <<ftp-session-callback>> and <<sftp-session-callback>> for more information.
|
||||
|
||||
|
||||
==== Websocket Changes
|
||||
|
||||
`WebSocketHandlerDecoratorFactory` support has been added to the `ServerWebSocketContainer`
|
||||
to allow chained customization for the internal `WebSocketHandler`.
|
||||
See <<web-sockets-namespace>> for more information.
|
||||
|
||||
==== Application Event Adapters changes
|
||||
|
||||
The `ApplicationEvent` adapters can now operate with `payload` as `event` directly allow omitting custom
|
||||
`ApplicationEvent` extensions.
|
||||
The `publish-payload` boolean attribute has been introduced on the `<int-event:outbound-channel-adapter>` for this
|
||||
purpose.
|
||||
See <<applicationevent>> for more information.
|
||||
|
||||
@@ -10,10 +10,10 @@ This section details the compatible http://www.oracle.com/technetwork/java/javas
|
||||
[[supported-java-versions]]
|
||||
=== Compatible Java Versions
|
||||
|
||||
For _Spring Integration_ *4.2.x*, the *minimum* compatible Java version is *Java SE 6*.
|
||||
For _Spring Integration_ *4.3.x*, the *minimum* compatible Java version is *Java SE 6*.
|
||||
Older versions of Java are not supported.
|
||||
|
||||
_Spring Integration_ *4.2.x* is also compatible with *Java SE 7* as well as *Java SE 8*.
|
||||
_Spring Integration_ *4.3.x* is also compatible with *Java SE 7* as well as *Java SE 8*.
|
||||
|
||||
Certain features (such as `Optional<?>` payloads and `CompletableFuture` gateway method return types) require Java 8.
|
||||
|
||||
@@ -23,7 +23,7 @@ see https://github.com/spring-projects/spring-integration#checking-out-and-build
|
||||
[[supported-spring-versions]]
|
||||
=== Compatible Versions of the Spring Framework
|
||||
|
||||
_Spring Integration_ *4.2.x* requires _Spring Framework_ *4.2.0* or later.
|
||||
_Spring Integration_ *4.3.x* requires _Spring Framework_ *4.2.3* or later.
|
||||
|
||||
[[code-conventions]]
|
||||
=== Code Conventions
|
||||
|
||||
@@ -1,384 +1,15 @@
|
||||
[[whats-new]]
|
||||
== What's new in Spring Integration 4.2?
|
||||
== What's new in Spring Integration 4.3?
|
||||
|
||||
This chapter provides an overview of the new features and improvements that have been introduced with Spring Integration 4.1.
|
||||
If you are interested in more details, please see the Issue Tracker tickets that were resolved as part of the 4.1 development process.
|
||||
This chapter provides an overview of the new features and improvements that have been introduced with Spring
|
||||
Integration 4.3.
|
||||
If you are interested in more details, please see the Issue Tracker tickets that were resolved as part of the 4.3
|
||||
development process.
|
||||
|
||||
[[x4.2-new-components]]
|
||||
[[x4.3-new-components]]
|
||||
=== New Components
|
||||
|
||||
[[x4.2-JMX]]
|
||||
==== Major Management/JMX Rework
|
||||
|
||||
A new `MetricsFactory` strategy interface has been introduced.
|
||||
This, together with other changes in the JMX and management infrastructure provides much more control over management
|
||||
configuration and runtime performance.
|
||||
|
||||
However, this has some important implications for (some) user environments.
|
||||
|
||||
For complete details, see <<metrics-management>> and <<jmx-42-improvements>>.
|
||||
|
||||
[[x4.2-mongodb-metadata-store]]
|
||||
==== MongoDB Metadata Store
|
||||
|
||||
The `MongoDbMetadataStore` is now available. For more information, see <<mongodb-metadata-store>>.
|
||||
|
||||
[[x4.2-secured-channel-annotation]]
|
||||
==== SecuredChannel Annotation
|
||||
|
||||
The `@SecuredChannel` annotation has been introduced, replacing the deprecated `ChannelSecurityInterceptorFactoryBean`.
|
||||
For more information, see <<security>>.
|
||||
|
||||
[[x4.2-security-context-propagation]]
|
||||
==== SecurityContext Propagation
|
||||
|
||||
The `SecurityContextPropagationChannelInterceptor` has been
|
||||
introduced for the `SecurityContext` propagation from one message flow's Thread to another.
|
||||
For more information, see <<security>>.
|
||||
|
||||
|
||||
[[x4.2-file-splitter]]
|
||||
==== FileSplitter
|
||||
|
||||
The `FileSplitter`, which splits text files into lines, was added in 4.1.2.
|
||||
It now has full support in the `int-file:` namespace; see <<file-splitter>> for more information.
|
||||
|
||||
[[x4.2-zk]]
|
||||
==== Zookeeper Support
|
||||
|
||||
Zookeeper support has been added to the framework to assist when running on a clustered/multi-host environment.
|
||||
|
||||
* ZookeeperMetadataStore
|
||||
* ZookeeperLockRegistry
|
||||
* Zookeeper Leadership
|
||||
|
||||
See <<zookeeper>> for more information.
|
||||
|
||||
[[x4.2-barrier]]
|
||||
==== Thread Barrier
|
||||
|
||||
A new thread `<int:barrier/>` component is available allowing a thread to be suspended until some asynchronous event
|
||||
occurs.
|
||||
|
||||
See <<barrier>> for more information.
|
||||
|
||||
[[x4.2-stomp]]
|
||||
==== STOMP Support
|
||||
|
||||
STOMP support has been added to the framework as _inbound_ and _outbound_ channel adapters pair.
|
||||
See <<stomp>> for more information.
|
||||
|
||||
[[x4.2-codec]]
|
||||
==== Codec
|
||||
A new `Codec` abstraction has been introduced, to encode/decode objects to/from `byte[]`.
|
||||
An implementation that uses Kryo is provided.
|
||||
Codec-based transformers and message converters are also provided.
|
||||
|
||||
See <<codec>> for more information.
|
||||
|
||||
[[x4.2-prepared-statement-setter]]
|
||||
==== Message PreparedStatement Setter
|
||||
|
||||
A new `MessagePreparedStatementSetter` functional interface callback is available for the `JdbcMessageHandler`
|
||||
(`<int-jdbc:outbound-gateway>` and `<int-jdbc:outbound-channel-adapter>`) as an alternative to the
|
||||
`SqlParameterSourceFactory` to populate parameters on the `PreparedStatement` with the `requestMessage` context.
|
||||
|
||||
See <<jdbc-outbound-channel-adapter>> for more information.
|
||||
|
||||
[[x4.2-general]]
|
||||
[[x4.3-general]]
|
||||
=== General Changes
|
||||
|
||||
[[x4.2-wire-tap]]
|
||||
==== Wire Tap
|
||||
|
||||
As an alternative to the existing `selector` attribute, the `<wire-tap/>` now supports the `selector-expression` attribute.
|
||||
|
||||
[[x4.2-file-changes]]
|
||||
==== File Changes
|
||||
|
||||
See <<files>> for more information about these changes.
|
||||
|
||||
===== Appending New Lines
|
||||
|
||||
The `<int-file:outbound-channel-adapter>` and `<int-file:outbound-gateway>` now support an `append-new-line` attribute.
|
||||
If set to `true`, a new line is appended to the file after a message is written.
|
||||
The default attribute value is `false`.
|
||||
|
||||
===== Ignoring Hidden Files
|
||||
|
||||
The `ignore-hidden` attribute has been introduced for the `<int-file:inbound-channel-adapter>` to pick up or not
|
||||
the _hidden_ files from the source directory.
|
||||
It is `true` by default.
|
||||
|
||||
===== Writing InputStream Payloads
|
||||
|
||||
The `FileWritingMessageHandler` now also accepts `InputStream` as a valid message payload type.
|
||||
|
||||
===== HeadDirectoryScanner
|
||||
|
||||
The `HeadDirectoryScanner` can now be used with other `FileListFilter` s.
|
||||
|
||||
===== Last Modified Filter
|
||||
|
||||
The `LastModifiedFileListFilter` has been added.
|
||||
|
||||
===== WatchService Directory Scanner
|
||||
|
||||
The `WatchServiceDirectoryScanner` is now available.
|
||||
|
||||
===== Persistent File List Filter Changes
|
||||
|
||||
The `AbstractPersistentFileListFilter` has a new property `flushOnUpdate` which, when set to true, will `flush()` the
|
||||
metadata store if it implements `Flushable` (e.g. the `PropertiesPersistingMetadataStore`).
|
||||
|
||||
[[x4.2-class-package-change]]
|
||||
==== Class Package Change
|
||||
|
||||
The `ScatterGatherHandler` class has been moved from the `org.springframework.integration.handler` to the `org.springframework.integration.scattergather`.
|
||||
|
||||
==== TCP Changes
|
||||
|
||||
[[x4.2-tcp-serializers]]
|
||||
===== TCP Serializers
|
||||
|
||||
The TCP `Serializers` no longer `flush()` the `OutputStream`; this is now done by the `TcpNxxConnection` classes.
|
||||
If you are using the serializers directly within user code, you may have to `flush()` the `OutputStream`.
|
||||
|
||||
[[x4.2-tcp-server-exceptions]]
|
||||
===== Server Socket Exceptions
|
||||
|
||||
`TcpConnectionServerExceptionEvent` s are now published whenever an unexpected exception occurs on a TCP server socket (also added to 4.1.3, 4.0.7).
|
||||
See <<tcp-events>> for more information.
|
||||
|
||||
[[x4.2-tcp-server-port]]
|
||||
===== TCP Server Port
|
||||
|
||||
If a TCP server socket factory is configured to listen on a random port, the actual port chosen by the OS can now
|
||||
be obtained using `getPort()`.
|
||||
`getServerSocketAddress()` is also available.
|
||||
|
||||
See <<connection-factories>> for more information.
|
||||
|
||||
[[x4.2-tcp-gw-rto]]
|
||||
===== TCP Gateway Remote Timeout
|
||||
|
||||
The `TcpOutboundGateway` now supports `remote-timeout-expression` as an alternative to the existing `remote-timeout` attribute.
|
||||
This allows setting the timeout based on each message.
|
||||
|
||||
Also, the `remote-timeout` no longer defaults to the same value as `reply-timeout` which has a completely different meaning.
|
||||
|
||||
See <<tcp-ob-gateway-attributes>> for more information.
|
||||
|
||||
[[x4.2-tcp-ssl]]
|
||||
===== TCP SSLSession Available for Header Mapping
|
||||
|
||||
`TcpConnection` s now support `getSslSession()` to enable users to extract information from the session to add to
|
||||
message headers.
|
||||
|
||||
See <<ip-msg-headers>> for more information.
|
||||
|
||||
|
||||
[[x4.2-tcp-events]]
|
||||
===== TCP Events
|
||||
|
||||
New events are now published whenever a correlation exception occurs - for example sending a message to a
|
||||
non-existent socket.
|
||||
|
||||
The `TcpConnectionEventListeningMessageProducer` is deprecated; use the generic event adapter instead.
|
||||
|
||||
See <<tcp-events>> for more information.
|
||||
|
||||
[[x4.2-inbound-channel-adapter-annotation]]
|
||||
==== @InboundChannelAdapter
|
||||
|
||||
Previously, the `@Poller` on an inbound channel adapter defaulted the `maxMessagesPerPoll` attribute to `-1` (infinity).
|
||||
This was inconsistent with the XML configuration of `<inbound-channel-adapter/>` s, which defaults to 1.
|
||||
The annotation now defaults this attribute to 1.
|
||||
|
||||
[[x4.2-api-changes]]
|
||||
==== API Changes
|
||||
|
||||
`o.s.integration.util.FunctionIterator` now requires a `o.s.integration.util.Function` instead of a
|
||||
`reactor.function.Function`.
|
||||
This was done to remove an unnecessary hard dependency on Reactor.
|
||||
Any uses of this iterator will need to change the import.
|
||||
|
||||
Of course, Reactor is still supported for functionality such as the `Promise` gateway; the dependency was removed for those users who don't need it.
|
||||
|
||||
[[x4.2-jms-changes]]
|
||||
==== JMS Changes
|
||||
|
||||
===== Reply Listener Lazy Initialization
|
||||
|
||||
It is now possible to configure the reply listener in JMS outbound gateways to be initialized on-demand and stopped
|
||||
after an idle period, instead of being controlled by the gateway's lifecycle.
|
||||
|
||||
See <<jms-outbound-gateway>> for more information.
|
||||
|
||||
===== Conversion Errors in Message-Driven Endpoints
|
||||
|
||||
The `error-channel` now is used for the conversion errors, which have caused a transaction rollback and message redelivery previously.
|
||||
|
||||
See <<jms-message-driven-channel-adapter>> and <<jms-inbound-gateway>> for more information.
|
||||
|
||||
===== Default Acknowledge Mode
|
||||
|
||||
When using an implicitly defined `DefaultMessageListenerContainer`, the default `acknowledge` is now `transacted`.
|
||||
`transacted` is recommended when using this container, to avoid message loss.
|
||||
This default now applies to the message-driven inbound adapter and the inbound gateway, it was already the
|
||||
default for jms-backed channels.
|
||||
|
||||
See <<jms-message-driven-channel-adapter>> and <<jms-inbound-gateway>> for more information.
|
||||
|
||||
===== Shared Subscriptions
|
||||
|
||||
Namespace support for shared subscriptions (JMS 2.0) has been added to message-driven endpoints and the
|
||||
`<int-jms:publish-subscribe-channel>`.
|
||||
Previously, you had to wire up listener containers as `<bean/>` s to use shared connections.
|
||||
|
||||
See <<jms>> for more information.
|
||||
|
||||
[[x4.2-conditional-pollers]]
|
||||
==== Conditional Pollers
|
||||
Much more flexibility is now provided for dynamic polling.
|
||||
|
||||
See <<conditional-pollers>> for more information.
|
||||
|
||||
[[x4.2-amqp-changes]]
|
||||
==== AMQP Changes
|
||||
|
||||
===== Publisher Confirms
|
||||
|
||||
The `<int-amqp:outbound-gateway>` now supports `confirm-correlation-expression` and `confirm-(n)ack-channel`
|
||||
attributes with similar purpose as for `<int-amqp:outbound-channel-adapter>`.
|
||||
|
||||
===== Correlation Data
|
||||
|
||||
For both the outbound channel adapter and gateway, if the correlation data is a `Message<?>`, it will be the basis
|
||||
of the message on the ack/nack channel, with the additional header(s) added.
|
||||
Previously, any correlation data (including `Message<?>`) was returned as the payload of the ack/nack message.
|
||||
|
||||
===== The Inbound Gateway properties
|
||||
|
||||
The `<int-amqp:inbound-gateway>` now exposes the `amqp-template` attribute to allow more control over an external bean
|
||||
for the reply `RabbitTemplate` or even provide your own `AmqpTemplate` implementation.
|
||||
In addition the `default-reply-to` is exposed to be used if request message doesn't have `replyTo` property.
|
||||
|
||||
See <<amqp>> for more information.
|
||||
|
||||
[[x4.2-xpath-splitter]]
|
||||
==== XPath Splitter Improvements
|
||||
|
||||
The `XPathMessageSplitter` (`<int-xml:xpath-splitter>`) now allows the configuration of `output-properties`
|
||||
for the internal `javax.xml.transform.Transformer` and supports an `Iterator` mode (defaults to `true`) for the xpath
|
||||
evaluation `org.w3c.dom.NodeList` result.
|
||||
|
||||
See <<xml-xpath-splitting>> for more information.
|
||||
|
||||
[[x4.2-http-changes]]
|
||||
==== HTTP Changes
|
||||
|
||||
===== CORS
|
||||
|
||||
The HTTP Inbound Endpoints (`<int-http:inbound-channel-adapter>` and `<int-http:inbound-gateway>`) now allow the
|
||||
configuration of _Cross-Origin Resource Sharing (CORS)_.
|
||||
|
||||
See <<http-cors>> for more information.
|
||||
|
||||
===== Inbound Gateway Timeout
|
||||
|
||||
The HTTP inbound gateway can be configured as to what status code to return when a request times out.
|
||||
The default is now `500 Internal Server Error` instead of `200 OK`.
|
||||
|
||||
See <<http-response-statuscode>> for more information.
|
||||
|
||||
===== Form Data
|
||||
|
||||
Documentation is provided for when proxying `multipart/form-data` requests.
|
||||
See <<http>> for more information.
|
||||
|
||||
[[x4.2-gw]]
|
||||
==== Gateway Changes
|
||||
|
||||
===== Gateway Methods can Return CompletableFuture<?>
|
||||
|
||||
When using Java 8, gateway methods can now return `CompletableFuture<?>`.
|
||||
See <<gw-completable-future>> for more information.
|
||||
|
||||
===== MessagingGateway Annotation
|
||||
|
||||
The request and reply timeout properties are now `String` instead of `Long` to allow configuration with property
|
||||
placeholders or SpEL. See <<messaging-gateway-annotation>>.
|
||||
|
||||
[[x4.2-aggregator-changes]]
|
||||
==== Aggregator Changes
|
||||
|
||||
===== Aggregator Performance
|
||||
|
||||
This release includes some performance improvements for aggregating components (aggregator, resequencer, etc),
|
||||
by more efficiently removing messages from groups when they are released.
|
||||
New methods (`removeMessagesFromGroup`) have been added to the message store.
|
||||
Set the `removeBatchSize` property (default `100`) to adjust the number of messages deleted in each operation.
|
||||
Currently, JDBC, Redis and MongoDB message stores support this property.
|
||||
|
||||
===== Output Message Group Processor
|
||||
|
||||
When using a `ref` or inner bean for the aggregator, it is now possible to bind a `MessageGroupProcessor` directly.
|
||||
In addition, a `SimpleMessageGroupProcessor` is provided that simply returns the collection of messages in the group.
|
||||
When an output processor produces a collection of `Message<?>`, the aggregator releases those messages individually.
|
||||
Configuring the `SimpleMessageGroupProcessor` makes the aggregator a message barrier, were messages are held up
|
||||
until they all arrive, and are then released individually. See <<aggregator>> for more information.
|
||||
|
||||
==== (S)FTP Changes
|
||||
|
||||
===== Inbound channel adapters
|
||||
|
||||
You can now specify a `remote-directory-expression` on the inbound channel adapters, to determine the directory
|
||||
at runtime.
|
||||
See <<ftp>> and <<sftp>> for more information.
|
||||
|
||||
===== Gateway Partial Results
|
||||
|
||||
When use FTP/SFTP outbound gateways to operate on multiple files (`mget`, `mput`), it is possible for an exception to
|
||||
occur after part of the request is completed.
|
||||
If such a condition occurs, a `PartialSuccessException` is thrown containing the partial results.
|
||||
See <<ftp-outbound-gateway>> and <<sftp-outbound-gateway>> for more information.
|
||||
|
||||
===== Delegating Session Factory
|
||||
|
||||
A delegating session factory is now available, enabling the selection of a particular session factory based on some
|
||||
thread context value.
|
||||
|
||||
See <<ftp-dsf>> and <<sftp-dsf>> for more information.
|
||||
|
||||
===== Default Sftp Session Factory
|
||||
|
||||
Previously, the `DefaultSftpSessionFactory` unconditionally allowed connections to unknown hosts.
|
||||
This is now configurable (default false).
|
||||
|
||||
The factory now requires a configured `knownHosts` file unless the `allowUnknownKeys` property is `true` (default
|
||||
false).
|
||||
|
||||
See <<sftp-unk-hosts>> for more information.
|
||||
|
||||
===== Message Session Callback
|
||||
|
||||
The `MessageSessionCallback<F, T>` has been introduced to perform any custom `Session` operation(s) with the
|
||||
`requestMessage` context in the `<int-(s)ftp:outbound-gateway/>`.
|
||||
|
||||
See <<ftp-session-callback>> and <<sftp-session-callback>> for more information.
|
||||
|
||||
|
||||
==== Websocket Changes
|
||||
|
||||
`WebSocketHandlerDecoratorFactory` support has been added to the `ServerWebSocketContainer`
|
||||
to allow chained customization for the internal `WebSocketHandler`.
|
||||
See <<web-sockets-namespace>> for more information.
|
||||
|
||||
==== Application Event Adapters changes
|
||||
|
||||
The `ApplicationEvent` adapters can now operate with `payload` as `event` directly allow omitting custom
|
||||
`ApplicationEvent` extensions.
|
||||
The `publish-payload` boolean attribute has been introduced on the `<int-event:outbound-channel-adapter>` for this
|
||||
purpose.
|
||||
See <<applicationevent>> for more information.
|
||||
|
||||
Reference in New Issue
Block a user