INT-4390: Fix tangles
JIRA: https://jira.spring.io/browse/INT-4390 Phase I: flow context/registration cycle - extract interfaces - rename implementations to `Standard...` Phase II - dsl<->dsl.channel tangles Move the channel specs to dsl. Fix missing refactorings (Not related to DSL) - rename core `event` package to `events` - avoid collision with event module package - fix tangle caused by `MessageGroupExpiredEvent`. Phase III - dsl<->config.dsl - move classes from config.dsl to dsl (Not related to DSL) - fix many tangles caused by graph being a sub-package of support.management - make `graph` a top-level package (Not related to DSL) - move `IntegrationManagementConfigurer` from `management` to `config` - tangle between core and management * Polishing Copyrights, diamonds, some JavaDocs and What's New
This commit is contained in:
committed by
Artem Bilan
parent
7f25cba262
commit
82f252dd00
312
src/reference/asciidoc/changes-4.3-5.0.adoc
Normal file
312
src/reference/asciidoc/changes-4.3-5.0.adoc
Normal file
@@ -0,0 +1,312 @@
|
||||
[[migration-4.3-5.0]]
|
||||
=== Changes between 4.3 and 5.0
|
||||
|
||||
[[x5.0-new-components]]
|
||||
=== New Components
|
||||
|
||||
==== Java DSL
|
||||
|
||||
The separate https://github.com/spring-projects/spring-integration-java-dsl[Spring Integration Java DSL] project has now been merged into the core Spring Integration project.
|
||||
The `IntegrationComponentSpec` implementations for channel adapters and gateways are distributed to their specific modules.
|
||||
See <<java-dsl>> for more information about Java DSL support.
|
||||
Also see the https://github.com/spring-projects/spring-integration/wiki/Spring-Integration-4.3-to-5.0-Migration-Guide#java-dsl[4.3 to 5.0 Migration Guide] for the required steps to move to Spring Integration 5.0.
|
||||
|
||||
==== Testing Support
|
||||
|
||||
A new Spring Integration Test Framework has been created to assist with testing Spring Integration applications.
|
||||
Now, with the `@SpringIntegrationTest` annotation on test class and `MockIntegration` factory you can make your JUnit tests for integration flows somewhat easier.
|
||||
|
||||
See <<testing>> for more information.
|
||||
|
||||
==== MongoDB Outbound Gateway
|
||||
|
||||
The new `MongoDbOutboundGateway` allows you to make queries to the database on demand by sending a message to its request channel.
|
||||
|
||||
See <<mongodb-outbound-gateway>> for more information.
|
||||
|
||||
==== WebFlux Gateways and Channel Adapters
|
||||
|
||||
The new WebFlux support module has been introduced for Spring WebFlux Framework gateways and channel adapters.
|
||||
|
||||
See <<webflux>> for more information.
|
||||
|
||||
==== Content Type Conversion
|
||||
|
||||
Now that we use the new `InvocableHandlerMethod` -based infrastructure for service method invocations, we can perform `contentType` conversion from payload to target method argument.
|
||||
|
||||
See <<content-type-conversion>> for more information.
|
||||
|
||||
==== ErrorMessagePublisher and ErrorMessageStrategy
|
||||
|
||||
The `ErrorMessagePublisher` and the `ErrorMessageStrategy` are provided for creating `ErrorMessage` instances.
|
||||
|
||||
See <<namespace-errorhandler>> for more information.
|
||||
|
||||
==== JDBC Metadata Store
|
||||
|
||||
A JDBC implementation of `MetadataStore` implementation is now provided.
|
||||
This is useful when it is necessary to ensure transactional boundaries for metadata.
|
||||
|
||||
See <<jdbc-metadata-store>> for more information.
|
||||
|
||||
[[x5.0-general]]
|
||||
=== General Changes
|
||||
|
||||
Spring Integration is now fully based on Spring Framework `5.0` and Project Reactor `3.1`.
|
||||
Previous Project Reactor versions are no longer supported.
|
||||
|
||||
==== Core Changes
|
||||
|
||||
The `@Poller` annotation now has the `errorChannel` attribute for easier configuration of the underlying `MessagePublishingErrorHandler`.
|
||||
|
||||
See <<annotations>> for more information.
|
||||
|
||||
All the request-reply endpoints (based on `AbstractReplyProducingMessageHandler`) can now start transaction and, therefore, make the whole downstream flow transactional.
|
||||
|
||||
See <<tx-handle-message-advice>> for more information.
|
||||
|
||||
The `SmartLifecycleRoleController` now provides methods to obtain status of endpoints in roles.
|
||||
|
||||
See <<endpoint-roles>> for more information.
|
||||
|
||||
POJO methods are now invoked using an `InvocableHandlerMethod` by default, but can be configured to use SpEL as before.
|
||||
|
||||
See <<pojo-invocation>> for more information.
|
||||
|
||||
When targeting POJO methods as message handlers, one of the service methods can now be marked with the `@Default` annotation to provide a fallback mechanism for non-matched conditions.
|
||||
|
||||
See <<service-activator-namespace>> for more information.
|
||||
|
||||
A simple `PassThroughTransactionSynchronizationFactory` is provided to always store a polled message in the current transaction context.
|
||||
That message is used as a `failedMessage` property of the `MessagingException` which wraps a raw exception thrown during transaction completion.
|
||||
|
||||
See <<transaction-synchronization>> for more information.
|
||||
|
||||
The aggregator expression-based `ReleaseStrategy` now evaluates the expression against the `MessageGroup` instead of just the collection of `Message<?>`.
|
||||
|
||||
See <<aggregator-spel>> for more information.
|
||||
|
||||
The `ObjectToMapTransformer` can now be supplied with a customised `JsonObjectMapper`.
|
||||
|
||||
See <<aggregator-spel>> for more information.
|
||||
|
||||
The `@GlobalChannelInterceptor` annotation and `<int:channel-interceptor>` now support negative patterns (via `!` prepending) for component names matching.
|
||||
|
||||
See <<global-channel-configuration-interceptors>> for more information.
|
||||
|
||||
A new `OnFailedToAcquireMutexEvent` is emitted now via `DefaultLeaderEventPublisher` by the `LockRegistryLeaderInitiator`, when candidate is failed to acquire the lock.
|
||||
|
||||
See <<leadership-event-handling>> for more information.
|
||||
|
||||
==== Gateway Changes
|
||||
|
||||
The gateway now correctly sets the `errorChannel` header when the gateway method has a `void` return type and an error channel is provided.
|
||||
Previously, the header was not populated.
|
||||
This had the effect that synchronous downstream flows (running on the calling thread) would send the exception to the configured channel but an exception on an async downstream flow would be sent to the default `errorChannel` instead.
|
||||
|
||||
The `RequestReplyExchanger` interface now has a `throws MessagingException` clause to meet all the proposed messages exchange contract.
|
||||
|
||||
The request and reply timeouts can now be specified as SpEL expressions.
|
||||
|
||||
See <<gateway>> for more information.
|
||||
|
||||
==== Aggregator Performance Changes
|
||||
|
||||
Aggregators now use a `SimpleSequenceSizeReleaseStrategy` by default, which is more efficient, especially with large groups.
|
||||
Empty groups are now scheduled for removal after `empty-group-min-timeout`.
|
||||
|
||||
See <<aggregator>> for more information.
|
||||
|
||||
==== Splitter Changes
|
||||
|
||||
The Splitter component now can handle and split Java `Stream` and Reactive Streams `Publisher` objects.
|
||||
If the output channel is a `ReactiveStreamsSubscribableChannel`, the `AbstractMessageSplitter` builds a `Flux` for subsequent iteration instead of a regular `Iterator` independent of object being split.
|
||||
In addition, `AbstractMessageSplitter` provides `protected obtainSizeIfPossible()` methods to allow the determination of the size of the `Iterable` and `Iterator` objects if that is possible.
|
||||
|
||||
See <<splitter>> for more information.
|
||||
|
||||
==== JMS Changes
|
||||
|
||||
Previously, Spring Integration JMS XML configuration used a default bean name `connectionFactory` for the JMS Connection Factory, allowing the property to be omitted from component definitions.
|
||||
It has now been renamed to `jmsConnectionFactory`, which is the bean name used by Spring Boot to auto-configure the JMS Connection Factory bean.
|
||||
|
||||
If your application is relying on the previous behavior, rename your `connectionFactory` bean to `jmsConnectionFactory`, or specifically configure your components to use your bean using its current name.
|
||||
|
||||
See <<jms>> for more information.
|
||||
|
||||
==== Mail Changes
|
||||
|
||||
Some inconsistencies with rendering IMAP mail content have been resolved.
|
||||
|
||||
See <<imap-format-important, the note in the Mail-Receiving Channel Adapter Section>> for more information.
|
||||
|
||||
==== Feed Changes
|
||||
|
||||
Instead of the `com.rometools.fetcher.FeedFetcher`, which is deprecated in ROME, a new `Resource` property has been introduced to the `FeedEntryMessageSource`.
|
||||
|
||||
See <<feed>> for more information.
|
||||
|
||||
|
||||
==== File Changes
|
||||
|
||||
The new `FileHeaders.RELATIVE_PATH` Message header has been introduced to represent relative path in the `FileReadingMessageSource`.
|
||||
|
||||
The tail adapter now supports `idleEventInterval` to emit events when there is no data in the file during that period.
|
||||
|
||||
The flush predicates for the `FileWritingMessageHandler` now have an additional parameter.
|
||||
|
||||
The file outbound channel adapter and gateway (`FileWritingMessageHandler`) now support the `REPLACE_IF_MODIFIED` `FileExistsMode`.
|
||||
|
||||
They also now support setting file permissions on the newly written file.
|
||||
|
||||
A new `FileSystemMarkerFilePresentFileListFilter` is now available; see <<file-incomplete>> for more information.
|
||||
|
||||
The `FileSplitter` now provides a `firstLineAsHeader` option to carry the first line of content as a header in the messages emitted for the remaining lines.
|
||||
|
||||
See <<files>> for more information.
|
||||
|
||||
==== (S)FTP Changes
|
||||
|
||||
The Inbound Channel Adapters now have a property `max-fetch-size` which is used to limit the number of files fetched during a poll when there are no files currently in the local directory.
|
||||
They also are configured with a `FileSystemPersistentAcceptOnceFileListFilter` in the `local-filter` by default.
|
||||
|
||||
You can also provide a custom `DirectoryScanner` implementation to Inbound Channel Adapters via the newly introduced `scanner` attribute.
|
||||
|
||||
The regex and pattern filters can now be configured to always pass directories.
|
||||
This can be useful when using recursion in the outbound gateways.
|
||||
|
||||
All the Inbound Channel Adapters (streaming and synchronization-based) now use an appropriate `AbstractPersistentAcceptOnceFileListFilter` implementation by default to prevent remote files duplicate downloads.
|
||||
|
||||
The FTP and SFTP outbound gateways now support the `REPLACE_IF_MODIFIED` `FileExistsMode` when fetching remote files.
|
||||
|
||||
The (S)FTP streaming inbound channel adapters now add remote file information in a message header.
|
||||
|
||||
The FTP and SFTP outbound channel adapters, as well as `PUT` command of the outbound gateways, now support `InputStream` as `payload`, too.
|
||||
|
||||
The inbound channel adapters now can build file tree locally using a newly introduced `RecursiveDirectoryScanner`.
|
||||
See `scanner` option for injection.
|
||||
Also these adapters can now be switched to the `WatchService` instead.
|
||||
|
||||
The `NLST` command has been added to the `AbstractRemoteFileOutboundGateway` to perform only list files names remote command.
|
||||
|
||||
The `FtpOutboundGateway` can now be supplied with `workingDirExpression` to change the FTP client working directory for the current request message.
|
||||
|
||||
The `RemoteFileTemplate` is supplied now with the `invoke(OperationsCallback<F, T> action)` to perform several `RemoteFileOperations` calls in the scope of the same, thread-bounded, `Session`.
|
||||
|
||||
New filters for detecting incomplete remote files are now provided.
|
||||
|
||||
The `FtpOutboundGateway` and `SftpOutboundGateway` now support an option to remove the remote file after a successful transfer using the `GET` or `MGET` commands.
|
||||
|
||||
See <<ftp>> and <<sftp>> for more information.
|
||||
|
||||
==== Integration Properties
|
||||
|
||||
Since _version 4.3.2_ a new `spring.integration.readOnly.headers` global property has been added to customize the list of headers which should not be copied to a newly created `Message` by the `MessageBuilder`.
|
||||
|
||||
See <<global-properties>> for more information.
|
||||
|
||||
==== Stream Changes
|
||||
|
||||
There is a new option on the `CharacterStreamReadingMessageSource` to allow it to be used to "pipe" stdin and publish an application event when the pipe is closed.
|
||||
|
||||
See <<stream-reading>> for more information.
|
||||
|
||||
==== Barrier Changes
|
||||
|
||||
The `BarrierMessageHandler` now supports a discard channel to which late-arriving trigger messages are sent.
|
||||
|
||||
See <<barrier>> for more information.
|
||||
|
||||
==== AMQP Changes
|
||||
|
||||
The AMQP outbound endpoints now support setting a delay expression for when using the RabbitMQ Delayed Message Exchange plugin.
|
||||
|
||||
The inbound endpoints now support the Spring AMQP `DirectMessageListenerContainer`.
|
||||
|
||||
Pollable AMQP-backed channels now block the poller thread for the poller's configured `receiveTimeout` (default 1 second).
|
||||
|
||||
Headers, such as `contentType` that are added to message properties by the message converter are now used in the final message; previously, it depended on the converter type as to which headers/message properties appeared in the final message.
|
||||
To override headers set by the converter, set the `headersMappedLast` property to `true`.
|
||||
|
||||
See <<amqp>> for more information.
|
||||
|
||||
==== HTTP Changes
|
||||
|
||||
The `DefaultHttpHeaderMapper.userDefinedHeaderPrefix` property is now an empty string by default instead of `X-`.
|
||||
|
||||
See <<http-header-mapping>> for more information.
|
||||
|
||||
==== MQTT Changes
|
||||
|
||||
Inbound messages are now mapped with headers `RECEIVED_TOPIC`, `RECEIVED_QOS` and `RECEIVED_RETAINED` to avoid inadvertent propagation to outbound messages when an application is relaying messages.
|
||||
|
||||
The outbound channel adapter now supports expressions for the topic, qos and retained properties; the defaults remain the same.
|
||||
|
||||
See <<mqtt>> for more information.
|
||||
|
||||
==== STOMP Changes
|
||||
|
||||
The STOMP module has been changed to use `ReactorNettyTcpStompClient`, based on the Project Reactor `3.1` and `reactor-netty` extension.
|
||||
The `Reactor2TcpStompSessionManager` has been renamed to the `ReactorNettyTcpStompSessionManager` according to the `ReactorNettyTcpStompClient` foundation.
|
||||
|
||||
See <<stomp>> for more information.
|
||||
|
||||
==== Web Services Changes
|
||||
|
||||
- The `WebServiceOutboundGateway` s can now be supplied with an externally configured `WebServiceTemplate` instances.
|
||||
|
||||
- The `DefaultSoapHeaderMapper` can now map a `javax.xml.transform.Source` user-defined header to a SOAP header element.
|
||||
|
||||
- Simple WebService Inbound and Outbound gateways can now deal with the complete `WebServiceMessage` as a `payload`, allowing the manipulation of MTOM attachments.
|
||||
|
||||
See <<ws>> for more information.
|
||||
|
||||
==== Redis Changes
|
||||
|
||||
The `RedisStoreWritingMessageHandler` is supplied now with additional String-based setters for SpEL expressions - for convenience with Java configuration.
|
||||
The `zsetIncrementExpression` can now be configured on the `RedisStoreWritingMessageHandler`, as well.
|
||||
In addition this property has been changed from `true` to `false` since `INCR` option on `ZADD` Redis command is optional.
|
||||
|
||||
The `RedisInboundChannelAdapter` can now be supplied with an `Executor` for executing Redis listener invokers.
|
||||
In addition the received messages now contains a `RedisHeaders.MESSAGE_SOURCE` header to indicate the source of the message - topic or pattern.
|
||||
|
||||
See <<redis>> for more information.
|
||||
|
||||
==== TCP Changes
|
||||
|
||||
A new `ThreadAffinityClientConnectionFactory` is provided that binds TCP connections to threads.
|
||||
|
||||
You can now configure the TCP connection factories to support `PushbackInputStream` s, allowing deserializers to "unread" (push back) bytes after "reading ahead".
|
||||
|
||||
A `ByteArrayElasticRawDeserializer` has been added without `maxMessageSize` control and buffer incoming data as needed.
|
||||
|
||||
See <<ip>> for more information.
|
||||
|
||||
==== Gemfire Changes
|
||||
|
||||
The `GemfireMetadataStore` now implements `ListenableMetadataStore`, allowing users to listen to cache events by providing `MetadataStoreListener` instances to the store.
|
||||
|
||||
See <<gemfire>> for more information.
|
||||
|
||||
==== Jdbc Changes
|
||||
|
||||
The `JdbcMessageChannelStore` now provides setter for the `ChannelMessageStorePreparedStatementSetter` allowing users to customize a message insertion in the store.
|
||||
|
||||
The `ExpressionEvaluatingSqlParameterSourceFactory` now provides setter for the sqlParameterTypes allowing users to customize sql types of the parameters.
|
||||
|
||||
See <<jdbc>> for more information.
|
||||
|
||||
|
||||
==== Metrics Changes
|
||||
|
||||
http://micrometer.io/[Micrometer] application monitoring is now supported (since _version 5.0.2_).
|
||||
See <<micrometer-integration>> for more information.
|
||||
|
||||
IMPORTANT: Changes were made to the Micrometer `Meters` in _version 5.0.3_ to make them more suitable for use in dimensional systems.
|
||||
Further changes were made in 5.0.4; if using Micrometer, a minimum of version 5.0.4 is recommended.
|
||||
|
||||
|
||||
==== @EndpointId Annotations
|
||||
|
||||
Introduced in _version 5.0.4_, this annotation provides control over bean naming when using Java configuration.
|
||||
See <<endpoint-bean-names>> for more information.
|
||||
@@ -2,6 +2,8 @@
|
||||
== Change History
|
||||
|
||||
// BE SURE TO PRECEDE ALL include:: with a blank line - see https://github.com/asciidoctor/asciidoctor/issues/1297
|
||||
include::./changes-4.3-5.0.adoc[]
|
||||
|
||||
include::./changes-4.2-4.3.adoc[]
|
||||
|
||||
include::./changes-4.1-4.2.adoc[]
|
||||
|
||||
@@ -1,317 +1,17 @@
|
||||
[[whats-new]]
|
||||
== What's new in Spring Integration 5.0?
|
||||
|
||||
== What's new in Spring Integration 5.1?
|
||||
|
||||
This chapter provides an overview of the new features and improvements that have been introduced with Spring
|
||||
Integration 5.0.
|
||||
If you are interested in more details, please see the Issue Tracker tickets that were resolved as part of the 5.0
|
||||
development process.
|
||||
Integration `5.1`.
|
||||
If you are interested in more details, please see the Issue Tracker tickets that were resolved as part of the 5.1 development process.
|
||||
|
||||
[[x5.0-new-components]]
|
||||
[[x5.1-new-components]]
|
||||
=== New Components
|
||||
|
||||
[[x5.1-general]]
|
||||
=== General Changes
|
||||
|
||||
==== Java DSL
|
||||
|
||||
The separate https://github.com/spring-projects/spring-integration-java-dsl[Spring Integration Java DSL] project has now been merged into the core Spring Integration project.
|
||||
The `IntegrationComponentSpec` implementations for channel adapters and gateways are distributed to their specific modules.
|
||||
See <<java-dsl>> for more information about Java DSL support.
|
||||
Also see the https://github.com/spring-projects/spring-integration/wiki/Spring-Integration-4.3-to-5.0-Migration-Guide#java-dsl[4.3 to 5.0 Migration Guide] for the required steps to move to Spring Integration 5.0.
|
||||
|
||||
==== Testing Support
|
||||
|
||||
A new Spring Integration Test Framework has been created to assist with testing Spring Integration applications.
|
||||
Now, with the `@SpringIntegrationTest` annotation on test class and `MockIntegration` factory you can make your JUnit tests for integration flows somewhat easier.
|
||||
|
||||
See <<testing>> for more information.
|
||||
|
||||
==== MongoDB Outbound Gateway
|
||||
|
||||
The new `MongoDbOutboundGateway` allows you to make queries to the database on demand by sending a message to its request channel.
|
||||
|
||||
See <<mongodb-outbound-gateway>> for more information.
|
||||
|
||||
==== WebFlux Gateways and Channel Adapters
|
||||
|
||||
The new WebFlux support module has been introduced for Spring WebFlux Framework gateways and channel adapters.
|
||||
|
||||
See <<webflux>> for more information.
|
||||
|
||||
==== Content Type Conversion
|
||||
|
||||
Now that we use the new `InvocableHandlerMethod` -based infrastructure for service method invocations, we can perform `contentType` conversion from payload to target method argument.
|
||||
|
||||
See <<content-type-conversion>> for more information.
|
||||
|
||||
==== ErrorMessagePublisher and ErrorMessageStrategy
|
||||
|
||||
The `ErrorMessagePublisher` and the `ErrorMessageStrategy` are provided for creating `ErrorMessage` instances.
|
||||
|
||||
See <<namespace-errorhandler>> for more information.
|
||||
|
||||
==== JDBC Metadata Store
|
||||
|
||||
A JDBC implementation of `MetadataStore` implementation is now provided.
|
||||
This is useful when it is necessary to ensure transactional boundaries for metadata.
|
||||
|
||||
See <<jdbc-metadata-store>> for more information.
|
||||
|
||||
[[x5.0-general]]
|
||||
=== General Changes
|
||||
|
||||
Spring Integration is now fully based on Spring Framework `5.0` and Project Reactor `3.1`.
|
||||
Previous Project Reactor versions are no longer supported.
|
||||
|
||||
==== Core Changes
|
||||
|
||||
The `@Poller` annotation now has the `errorChannel` attribute for easier configuration of the underlying `MessagePublishingErrorHandler`.
|
||||
|
||||
See <<annotations>> for more information.
|
||||
|
||||
All the request-reply endpoints (based on `AbstractReplyProducingMessageHandler`) can now start transaction and, therefore, make the whole downstream flow transactional.
|
||||
|
||||
See <<tx-handle-message-advice>> for more information.
|
||||
|
||||
The `SmartLifecycleRoleController` now provides methods to obtain status of endpoints in roles.
|
||||
|
||||
See <<endpoint-roles>> for more information.
|
||||
|
||||
POJO methods are now invoked using an `InvocableHandlerMethod` by default, but can be configured to use SpEL as before.
|
||||
|
||||
See <<pojo-invocation>> for more information.
|
||||
|
||||
When targeting POJO methods as message handlers, one of the service methods can now be marked with the `@Default` annotation to provide a fallback mechanism for non-matched conditions.
|
||||
|
||||
See <<service-activator-namespace>> for more information.
|
||||
|
||||
A simple `PassThroughTransactionSynchronizationFactory` is provided to always store a polled message in the current transaction context.
|
||||
That message is used as a `failedMessage` property of the `MessagingException` which wraps a raw exception thrown during transaction completion.
|
||||
|
||||
See <<transaction-synchronization>> for more information.
|
||||
|
||||
The aggregator expression-based `ReleaseStrategy` now evaluates the expression against the `MessageGroup` instead of just the collection of `Message<?>`.
|
||||
|
||||
See <<aggregator-spel>> for more information.
|
||||
|
||||
The `ObjectToMapTransformer` can now be supplied with a customised `JsonObjectMapper`.
|
||||
|
||||
See <<aggregator-spel>> for more information.
|
||||
|
||||
The `@GlobalChannelInterceptor` annotation and `<int:channel-interceptor>` now support negative patterns (via `!` prepending) for component names matching.
|
||||
|
||||
See <<global-channel-configuration-interceptors>> for more information.
|
||||
|
||||
A new `OnFailedToAcquireMutexEvent` is emitted now via `DefaultLeaderEventPublisher` by the `LockRegistryLeaderInitiator`, when candidate is failed to acquire the lock.
|
||||
|
||||
See <<leadership-event-handling>> for more information.
|
||||
|
||||
==== Gateway Changes
|
||||
|
||||
The gateway now correctly sets the `errorChannel` header when the gateway method has a `void` return type and an error channel is provided.
|
||||
Previously, the header was not populated.
|
||||
This had the effect that synchronous downstream flows (running on the calling thread) would send the exception to the configured channel but an exception on an async downstream flow would be sent to the default `errorChannel` instead.
|
||||
|
||||
The `RequestReplyExchanger` interface now has a `throws MessagingException` clause to meet all the proposed messages exchange contract.
|
||||
|
||||
The request and reply timeouts can now be specified as SpEL expressions.
|
||||
|
||||
See <<gateway>> for more information.
|
||||
|
||||
==== Aggregator Performance Changes
|
||||
|
||||
Aggregators now use a `SimpleSequenceSizeReleaseStrategy` by default, which is more efficient, especially with large groups.
|
||||
Empty groups are now scheduled for removal after `empty-group-min-timeout`.
|
||||
|
||||
See <<aggregator>> for more information.
|
||||
|
||||
==== Splitter Changes
|
||||
|
||||
The Splitter component now can handle and split Java `Stream` and Reactive Streams `Publisher` objects.
|
||||
If the output channel is a `ReactiveStreamsSubscribableChannel`, the `AbstractMessageSplitter` builds a `Flux` for subsequent iteration instead of a regular `Iterator` independent of object being split.
|
||||
In addition, `AbstractMessageSplitter` provides `protected obtainSizeIfPossible()` methods to allow the determination of the size of the `Iterable` and `Iterator` objects if that is possible.
|
||||
|
||||
See <<splitter>> for more information.
|
||||
|
||||
==== JMS Changes
|
||||
|
||||
Previously, Spring Integration JMS XML configuration used a default bean name `connectionFactory` for the JMS Connection Factory, allowing the property to be omitted from component definitions.
|
||||
It has now been renamed to `jmsConnectionFactory`, which is the bean name used by Spring Boot to auto-configure the JMS Connection Factory bean.
|
||||
|
||||
If your application is relying on the previous behavior, rename your `connectionFactory` bean to `jmsConnectionFactory`, or specifically configure your components to use your bean using its current name.
|
||||
|
||||
See <<jms>> for more information.
|
||||
|
||||
==== Mail Changes
|
||||
|
||||
Some inconsistencies with rendering IMAP mail content have been resolved.
|
||||
|
||||
See <<imap-format-important, the note in the Mail-Receiving Channel Adapter Section>> for more information.
|
||||
|
||||
==== Feed Changes
|
||||
|
||||
Instead of the `com.rometools.fetcher.FeedFetcher`, which is deprecated in ROME, a new `Resource` property has been introduced to the `FeedEntryMessageSource`.
|
||||
|
||||
See <<feed>> for more information.
|
||||
|
||||
|
||||
==== File Changes
|
||||
|
||||
The new `FileHeaders.RELATIVE_PATH` Message header has been introduced to represent relative path in the `FileReadingMessageSource`.
|
||||
|
||||
The tail adapter now supports `idleEventInterval` to emit events when there is no data in the file during that period.
|
||||
|
||||
The flush predicates for the `FileWritingMessageHandler` now have an additional parameter.
|
||||
|
||||
The file outbound channel adapter and gateway (`FileWritingMessageHandler`) now support the `REPLACE_IF_MODIFIED` `FileExistsMode`.
|
||||
|
||||
They also now support setting file permissions on the newly written file.
|
||||
|
||||
A new `FileSystemMarkerFilePresentFileListFilter` is now available; see <<file-incomplete>> for more information.
|
||||
|
||||
The `FileSplitter` now provides a `firstLineAsHeader` option to carry the first line of content as a header in the messages emitted for the remaining lines.
|
||||
|
||||
See <<files>> for more information.
|
||||
|
||||
==== (S)FTP Changes
|
||||
|
||||
The Inbound Channel Adapters now have a property `max-fetch-size` which is used to limit the number of files fetched during a poll when there are no files currently in the local directory.
|
||||
They also are configured with a `FileSystemPersistentAcceptOnceFileListFilter` in the `local-filter` by default.
|
||||
|
||||
You can also provide a custom `DirectoryScanner` implementation to Inbound Channel Adapters via the newly introduced `scanner` attribute.
|
||||
|
||||
The regex and pattern filters can now be configured to always pass directories.
|
||||
This can be useful when using recursion in the outbound gateways.
|
||||
|
||||
All the Inbound Channel Adapters (streaming and synchronization-based) now use an appropriate `AbstractPersistentAcceptOnceFileListFilter` implementation by default to prevent remote files duplicate downloads.
|
||||
|
||||
The FTP and SFTP outbound gateways now support the `REPLACE_IF_MODIFIED` `FileExistsMode` when fetching remote files.
|
||||
|
||||
The (S)FTP streaming inbound channel adapters now add remote file information in a message header.
|
||||
|
||||
The FTP and SFTP outbound channel adapters, as well as `PUT` command of the outbound gateways, now support `InputStream` as `payload`, too.
|
||||
|
||||
The inbound channel adapters now can build file tree locally using a newly introduced `RecursiveDirectoryScanner`.
|
||||
See `scanner` option for injection.
|
||||
Also these adapters can now be switched to the `WatchService` instead.
|
||||
|
||||
The `NLST` command has been added to the `AbstractRemoteFileOutboundGateway` to perform only list files names remote command.
|
||||
|
||||
The `FtpOutboundGateway` can now be supplied with `workingDirExpression` to change the FTP client working directory for the current request message.
|
||||
|
||||
The `RemoteFileTemplate` is supplied now with the `invoke(OperationsCallback<F, T> action)` to perform several `RemoteFileOperations` calls in the scope of the same, thread-bounded, `Session`.
|
||||
|
||||
New filters for detecting incomplete remote files are now provided.
|
||||
|
||||
The `FtpOutboundGateway` and `SftpOutboundGateway` now support an option to remove the remote file after a successful transfer using the `GET` or `MGET` commands.
|
||||
|
||||
See <<ftp>> and <<sftp>> for more information.
|
||||
|
||||
==== Integration Properties
|
||||
|
||||
Since _version 4.3.2_ a new `spring.integration.readOnly.headers` global property has been added to customize the list of headers which should not be copied to a newly created `Message` by the `MessageBuilder`.
|
||||
|
||||
See <<global-properties>> for more information.
|
||||
|
||||
==== Stream Changes
|
||||
|
||||
There is a new option on the `CharacterStreamReadingMessageSource` to allow it to be used to "pipe" stdin and publish an application event when the pipe is closed.
|
||||
|
||||
See <<stream-reading>> for more information.
|
||||
|
||||
==== Barrier Changes
|
||||
|
||||
The `BarrierMessageHandler` now supports a discard channel to which late-arriving trigger messages are sent.
|
||||
|
||||
See <<barrier>> for more information.
|
||||
|
||||
==== AMQP Changes
|
||||
|
||||
The AMQP outbound endpoints now support setting a delay expression for when using the RabbitMQ Delayed Message Exchange plugin.
|
||||
|
||||
The inbound endpoints now support the Spring AMQP `DirectMessageListenerContainer`.
|
||||
|
||||
Pollable AMQP-backed channels now block the poller thread for the poller's configured `receiveTimeout` (default 1 second).
|
||||
|
||||
Headers, such as `contentType` that are added to message properties by the message converter are now used in the final message; previously, it depended on the converter type as to which headers/message properties appeared in the final message.
|
||||
To override headers set by the converter, set the `headersMappedLast` property to `true`.
|
||||
|
||||
See <<amqp>> for more information.
|
||||
|
||||
==== HTTP Changes
|
||||
|
||||
The `DefaultHttpHeaderMapper.userDefinedHeaderPrefix` property is now an empty string by default instead of `X-`.
|
||||
|
||||
See <<http-header-mapping>> for more information.
|
||||
|
||||
==== MQTT Changes
|
||||
|
||||
Inbound messages are now mapped with headers `RECEIVED_TOPIC`, `RECEIVED_QOS` and `RECEIVED_RETAINED` to avoid inadvertent propagation to outbound messages when an application is relaying messages.
|
||||
|
||||
The outbound channel adapter now supports expressions for the topic, qos and retained properties; the defaults remain the same.
|
||||
|
||||
See <<mqtt>> for more information.
|
||||
|
||||
==== STOMP Changes
|
||||
|
||||
The STOMP module has been changed to use `ReactorNettyTcpStompClient`, based on the Project Reactor `3.1` and `reactor-netty` extension.
|
||||
The `Reactor2TcpStompSessionManager` has been renamed to the `ReactorNettyTcpStompSessionManager` according to the `ReactorNettyTcpStompClient` foundation.
|
||||
|
||||
See <<stomp>> for more information.
|
||||
|
||||
==== Web Services Changes
|
||||
|
||||
- The `WebServiceOutboundGateway` s can now be supplied with an externally configured `WebServiceTemplate` instances.
|
||||
|
||||
- The `DefaultSoapHeaderMapper` can now map a `javax.xml.transform.Source` user-defined header to a SOAP header element.
|
||||
|
||||
- Simple WebService Inbound and Outbound gateways can now deal with the complete `WebServiceMessage` as a `payload`, allowing the manipulation of MTOM attachments.
|
||||
|
||||
See <<ws>> for more information.
|
||||
|
||||
==== Redis Changes
|
||||
|
||||
The `RedisStoreWritingMessageHandler` is supplied now with additional String-based setters for SpEL expressions - for convenience with Java configuration.
|
||||
The `zsetIncrementExpression` can now be configured on the `RedisStoreWritingMessageHandler`, as well.
|
||||
In addition this property has been changed from `true` to `false` since `INCR` option on `ZADD` Redis command is optional.
|
||||
|
||||
The `RedisInboundChannelAdapter` can now be supplied with an `Executor` for executing Redis listener invokers.
|
||||
In addition the received messages now contains a `RedisHeaders.MESSAGE_SOURCE` header to indicate the source of the message - topic or pattern.
|
||||
|
||||
See <<redis>> for more information.
|
||||
|
||||
==== TCP Changes
|
||||
|
||||
A new `ThreadAffinityClientConnectionFactory` is provided that binds TCP connections to threads.
|
||||
|
||||
You can now configure the TCP connection factories to support `PushbackInputStream` s, allowing deserializers to "unread" (push back) bytes after "reading ahead".
|
||||
|
||||
A `ByteArrayElasticRawDeserializer` has been added without `maxMessageSize` control and buffer incoming data as needed.
|
||||
|
||||
See <<ip>> for more information.
|
||||
|
||||
==== Gemfire Changes
|
||||
|
||||
The `GemfireMetadataStore` now implements `ListenableMetadataStore`, allowing users to listen to cache events by providing `MetadataStoreListener` instances to the store.
|
||||
|
||||
See <<gemfire>> for more information.
|
||||
|
||||
==== Jdbc Changes
|
||||
|
||||
The `JdbcMessageChannelStore` now provides setter for the `ChannelMessageStorePreparedStatementSetter` allowing users to customize a message insertion in the store.
|
||||
|
||||
The `ExpressionEvaluatingSqlParameterSourceFactory` now provides setter for the sqlParameterTypes allowing users to customize sql types of the parameters.
|
||||
|
||||
See <<jdbc>> for more information.
|
||||
|
||||
|
||||
==== Metrics Changes
|
||||
|
||||
http://micrometer.io/[Micrometer] application monitoring is now supported (since _version 5.0.2_).
|
||||
See <<micrometer-integration>> for more information.
|
||||
|
||||
IMPORTANT: Changes were made to the Micrometer `Meters` in _version 5.0.3_ to make them more suitable for use in dimensional systems.
|
||||
Further changes were made in 5.0.4; if using Micrometer, a minimum of version 5.0.4 is recommended.
|
||||
|
||||
|
||||
==== @EndpointId Annotations
|
||||
|
||||
Introduced in _version 5.0.4_, this annotation provides control over bean naming when using Java configuration.
|
||||
See <<endpoint-bean-names>> for more information.
|
||||
The `IntegrationFlowContext` is now an interface and `IntegrationFlowRegistration` is an inner interface of the `IntegrationFlowContext`.
|
||||
|
||||
Reference in New Issue
Block a user