Upgrades and doc fixes
* Upgrade to Gradle 5.2.1, SonarQube 2.7, asciidoctor 1.5.10, Apache Sshd 2.2.0, AsertJ 3.12.0, Curator Framework 4.1.0, room Tool 1.12.0, Checkstyle 8.17 * remove Eclipse Link support in JPA tests since it is not compatible with Java 11 * Move 5.1 changes to the `changes-5.0-5.1.adoc`; start new "What's New"
This commit is contained in:
240
src/reference/asciidoc/changes-5.0-5.1.adoc
Normal file
240
src/reference/asciidoc/changes-5.0-5.1.adoc
Normal file
@@ -0,0 +1,240 @@
|
||||
[[migration-5.0-5.1]]
|
||||
=== Changes between 5.1 and 5.1
|
||||
|
||||
[[x5.1-new-components]]
|
||||
=== New Components
|
||||
|
||||
The following components are new in 5.1:
|
||||
|
||||
* <<x5.1-AmqpDedicatedChannelAdvice>>
|
||||
|
||||
[[x5.1-AmqpDedicatedChannelAdvice]]
|
||||
==== `AmqpDedicatedChannelAdvice`
|
||||
|
||||
See <<amqp-strict-ordering>>.
|
||||
|
||||
[[x5.1-Functions]]
|
||||
==== Improved Function Support
|
||||
|
||||
The `java.util.function` interfaces now have improved integration support in the Framework components.
|
||||
Also Kotlin lambdas now can be used for handler and source methods.
|
||||
|
||||
See <<functions-support>>.
|
||||
|
||||
[[x5.1-LongRunningTest]]
|
||||
==== `@LongRunningTest`
|
||||
|
||||
A JUnit 5 `@LongRunningTest` conditional annotation is provided to check the environment or system properties for the `RUN_LONG_INTEGRATION_TESTS` entry with the value of `true` to determine if test should be run or skipped.
|
||||
|
||||
See <<test-junit-rules>>.
|
||||
|
||||
[[x5.1-general]]
|
||||
=== General Changes
|
||||
|
||||
The following changes have been made in version 5.1:
|
||||
|
||||
* <<x5.1-java-dsl>>
|
||||
* <<x5.1-dispatcher-exceptions>>
|
||||
* <<x5.1-global-channel-interceptors>>
|
||||
* <<x5.1-object-to-json-transformer>>
|
||||
* <<x5.1-integration-flows-generated-bean-names>>
|
||||
* <<x5.1-aggregator>>
|
||||
* <<x5.1-publisher>>
|
||||
* <<x51.-integration-graph>>
|
||||
* <<x51.-global-properties>>
|
||||
* <<x51.-poller-annotation>>
|
||||
|
||||
[[x5.1-java-dsl]]
|
||||
==== Java DSL
|
||||
|
||||
The `IntegrationFlowContext` is now an interface and `IntegrationFlowRegistration` is an inner interface of `IntegrationFlowContext`.
|
||||
|
||||
A new `logAndReply()` operator has been introduced for convenience when you wish to log at the end of a flow for request-reply configurations.
|
||||
This avoid confusion with `log()` which is treated as a one-way end flow component.
|
||||
|
||||
A generated bean name for any `NamedComponent` within an integration flow is now based on the component type for better readability from visual tools, logs analyzers and metrics collectors.
|
||||
|
||||
The `GenericHandler.handle()` now excepts a `MessageHeaders` type for the second argument.
|
||||
|
||||
[[x5.1-dispatcher-exceptions]]
|
||||
==== Dispatcher Exceptions
|
||||
|
||||
Exceptions caught and re-thrown by `AbstractDispatcher` are now more consistent:
|
||||
|
||||
* A `MessagingException` of any kind that has a `failedMessage` property is re-thrown unchanged.
|
||||
* All other exceptions are wrapped in a `MessageDeliveryException` with the `failedMessage` property set.
|
||||
|
||||
Previously:
|
||||
|
||||
* A `MessagingException` of any kind that has a `failedMessage` property was re-thrown unchanged
|
||||
* A `MessagingException` that had no `failedMessage` property was wrapped in a `MessagingException` with the `failedMessage` property set.
|
||||
* Other `RuntimeException` instances were re-thrown unchanged.
|
||||
* Checked exceptions were wrapped in a `MessageDeliveryException` with the `failedMessage` property set.
|
||||
|
||||
[[x5.1-global-channel-interceptors]]
|
||||
==== Global Channel Interceptors
|
||||
|
||||
Global channel interceptors now apply to dynamically registered channels, such as through the `IntegrationFlowContext` when using the Java DSL or beans that are initialized using `beanFactory.initializeBean()`.
|
||||
Previously, when beans were created after the application context was refreshed, interceptors were not applied.
|
||||
|
||||
[[x5.1-channel-interceptors]]
|
||||
==== Channel Interceptors
|
||||
|
||||
`ChannelInterceptor.postReceive()` is no longer called when no message is received; it is no longer necessary to check for a `null` `Message<?>`.
|
||||
Previously, the method was called.
|
||||
If you have an interceptor that relies on the previous behavior, implement `afterReceiveCompleted()` instead, since that method is invoked, regardless of whether a message is received or not.
|
||||
Furthermore, the `PolledAmqpChannel` and `PolledJmsChannel` previously did not invoke `afterReceiveCompleted()` with `null`; they now do.
|
||||
|
||||
[[x5.1-object-to-json-transformer]]
|
||||
==== `ObjectToJsonTransformer`
|
||||
|
||||
A new `ResultType.BYTES` mode is introduced for the `ObjectToJsonTransformer`.
|
||||
|
||||
See <<json-transformers>> for more information.
|
||||
|
||||
[[x5.1-integration-flows-generated-bean-names]]
|
||||
==== Integration Flows: Generated Bean Names
|
||||
|
||||
Starting with version 5.0.5, generated bean names for the components in an `IntegrationFlow` include the flow bean name, followed by a dot, as a prefix.
|
||||
For example, if a flow bean were named `flowBean`, a generated bean might be named `flowBean.generatedBean`.
|
||||
|
||||
See <<java-dsl-flows>> for more information.
|
||||
|
||||
[[x5.1-aggregator]]
|
||||
==== Aggregator Changes
|
||||
|
||||
If the `groupTimeout` is evaluated to a negative value, an aggregator now expires the group immediately.
|
||||
Only `null` is considered as a signal to do nothing for the current message.
|
||||
|
||||
A new `popSequence` property has been introduced to allow (by default) to call a `MessageBuilder.popSequenceDetails()` for the output message.
|
||||
Also an `AbstractAggregatingMessageGroupProcessor` returns now an `AbstractIntegrationMessageBuilder` instead of the whole `Message` for optimization.
|
||||
|
||||
See <<aggregator>> for more information.
|
||||
|
||||
[[x5.1-publisher]]
|
||||
==== @Publisher annotation changes
|
||||
|
||||
Starting with version 5.1, you must explicitly turn on the `@Publisher` AOP functionality by using `@EnablePublisher` or by using the `<int:enable-publisher>` child element on `<int:annotation-config>`.
|
||||
Also the `proxy-target-class` and `order` attributes have been added for tuning the `ProxyFactory` configuration.
|
||||
|
||||
See <<publisher-annotation>> for more information.
|
||||
|
||||
[[x5.1-files]]
|
||||
=== Files Changes
|
||||
|
||||
If you are using `FileExistsMode.APPEND` or `FileExistsMode.APPEND_NO_FLUSH` you can provide a `newFileCallback` that will be called when creating a new file.
|
||||
This callback receives the newly created file and the message that triggered the callback.
|
||||
This could be used to write a CSV header, for an example.
|
||||
|
||||
The `FileReadingMessageSource` now doesn't check and create a directory until its `start()` is called.
|
||||
So, if an Inbound Channel Adapter for the `FileReadingMessageSource` has `autoStartup = false`, there are no failures against the file system during application start up.
|
||||
|
||||
See <<files>> for more information.
|
||||
|
||||
[[x5.1-amqp]]
|
||||
=== AMQP Changes
|
||||
|
||||
We have made `ID` and `Timestamp` header mapping changes in the `DefaultAmqpHeaderMapper`.
|
||||
See the note near the bottom of <<amqp-message-headers>> for more information.
|
||||
|
||||
The `contentType` header is now correctly mapped as an entry in the general headers map.
|
||||
See <<amqp-content-type>> for more information.
|
||||
|
||||
Starting with version 5.1.3, if a message conversion exception occurs when using manual acknowledgments, and an error channel is defined, the payload is a `ManualAckListenerExecutionFailedException` with additional `channel` and `deliveryTag` properties.
|
||||
This enables the error flow to ack/nack the original message.
|
||||
See <<amqp-conversion-inbound>> for more information.
|
||||
|
||||
[[x5.1-jdbc]]
|
||||
=== JDBC Changes
|
||||
|
||||
A confusing `max-rows-per-poll` property on the JDBC Inbound Channel Adapter and JDBC Outbound Gateway has been deprecated in favor of the newly introduced `max-rows` property.
|
||||
|
||||
The `JdbcMessageHandler` supports now a `batchUpdate` functionality when the payload of the request message is an instance of an `Iterable` type.
|
||||
|
||||
The indexes for the `INT_CHANNEL_MESSAGE` table (for the `JdbcChannelMessageStore`) have been optimized.
|
||||
If you have large message groups in such a store, you may wish to alter the indexes.
|
||||
|
||||
See <<jdbc>> for more information.
|
||||
|
||||
[[x5.1-ftp-sftp]]
|
||||
=== FTP and SFTP Changes
|
||||
|
||||
A `RotatingServerAdvice` is now available to poll multiple servers and directories with the inbound channel adapters.
|
||||
See <<ftp-rotating-server-advice>> and <<sftp-rotating-server-advice>> for more information.
|
||||
|
||||
Also, inbound adapter `localFilenameExpression` instances can contain the `#remoteDirectory` variable, which contains the remote directory being polled.
|
||||
The generic type of the comparators (used to sort the fetched file list for the streaming adapters) has changed from `Comparator<AbstractFileInfo<F>>` to `Comparator<F>`.
|
||||
See <<ftp-streaming>> and <<sftp-streaming>> for more information.
|
||||
|
||||
In addition, the synchronizers for inbound channel adapters can now be provided with a `Comparator`.
|
||||
This is useful when using `maxFetchSize` to limit the files retrieved.
|
||||
|
||||
The `CachingSessionFactory` has a new property `testSession` which, when true, causes the factory to perform a `test()` operation on the `Session` when checking out an existing session from the cache.
|
||||
|
||||
See <<sftp-session-caching>> and <<ftp-session-caching>> for more information.
|
||||
|
||||
The outbound gateway MPUT command now supports a message payload with a collection of files or strings.
|
||||
See <<sftp-outbound-gateway>> and <<ftp-outbound-gateway>> for more information.
|
||||
|
||||
[[x51.-tcp]]
|
||||
=== TCP Support
|
||||
|
||||
When using SSL, host verification is now enabled, by default, to prevent man-in-the-middle attacks with a trusted certificate.
|
||||
See <<tcp-ssl-host-verification>> for more information.
|
||||
|
||||
In addition the key and trust store types can now be configured on the `DefaultTcpSSLContextSupport`.
|
||||
|
||||
[[x5.1-twitter]]
|
||||
=== Twitter Support
|
||||
|
||||
Since the Spring Social project has moved to https://spring.io/blog/2018/07/03/spring-social-end-of-life-announcement[end of life status], Twitter support in Spring Integration has been moved to the Extensions project.
|
||||
See https://github.com/spring-projects/spring-integration-extensions/tree/master/spring-integration-social-twitter[Spring Integration Social Twitter] for more information.
|
||||
|
||||
[[x51.-jms]]
|
||||
=== JMS Support
|
||||
|
||||
The `JmsSendingMessageHandler` now provides `deliveryModeExpression` and `timeToLiveExpression` options to determine respective QoS options for JMS message to send at runtime.
|
||||
The `DefaultJmsHeaderMapper` now allows to map inbound `JMSDeliveryMode` and `JMSExpiration` properties via setting to `true` respective `setMapInboundDeliveryMode()` and `setMapInboundExpiration()` options.
|
||||
When a `JmsMessageDrivenEndpoint` or `JmsInboundGateway` is stopped, the associated listener container is now shut down; this closes its shared connection and any consumers.
|
||||
You can configure the endpoints to revert to the previous behavior.
|
||||
|
||||
See <<jms>> for more information.
|
||||
|
||||
[[x51.-http]]
|
||||
=== HTTP/WebFlux Support
|
||||
|
||||
The `statusCodeExpression` (and `Function`) is now supplied with the `RequestEntity<?>` as a root object for evaluation context, so request headers, method, URI and body are available for target status code calculation.
|
||||
|
||||
See <<http>> and <<webflux>> for more information.
|
||||
|
||||
[[x51.-jmx]]
|
||||
=== JMX Changes
|
||||
|
||||
Object name key values are now quoted if they contain any characters other than those allowed in a Java identifier (or period `.`).
|
||||
For example `org.springframework.integration:type=MessageChannel,` `name="input:foo.myGroup.errors"`.
|
||||
This has the side effect that previously "allowed" names, with such characters, will now be quoted.
|
||||
For example `org.springframework.integration:type=MessageChannel,` `name="input#foo.myGroup.errors"`.
|
||||
|
||||
[[x51.-micrometer]]
|
||||
=== Micrometer Support Changes
|
||||
|
||||
It is now simpler to customize the standard Micrometer meters created by the framework.
|
||||
See <<micrometer-integration>> for more information.
|
||||
|
||||
[[x51.-integration-graph]]
|
||||
=== Integration Graph Customization
|
||||
|
||||
It is now possible to add additional properties to the `IntegrationNode` s via `Function<NamedComponent, Map<String, Object>> additionalPropertiesCallback` on the `IntegrationGraphServer`.
|
||||
See <<integration-graph>> for more information.
|
||||
|
||||
[[x51.-global-properties]]
|
||||
=== Integration Global Properties
|
||||
|
||||
The Integration global properties (including defaults) can now be printed in the logs, when a `DEBUG` logic level is turned on for the `org.springframework.integration` category.
|
||||
See <<global-properties>> for more information.
|
||||
|
||||
[[x51.-poller-annotation]]
|
||||
=== The `receiveTimeout` for `@Poller`
|
||||
|
||||
The `@Poller` annotation now provides a `receiveTimeout` option for convenience.
|
||||
See <<configuration-using-poller-annotation>> for more information.
|
||||
5
src/reference/asciidoc/docinfo.html
Normal file
5
src/reference/asciidoc/docinfo.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<style>
|
||||
#header #revnumber {
|
||||
display: none
|
||||
}
|
||||
</style>
|
||||
@@ -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-5.0-5.1.adoc[]
|
||||
|
||||
include::./changes-4.3-5.0.adoc[]
|
||||
|
||||
include::./changes-4.2-4.3.adoc[]
|
||||
|
||||
@@ -7,7 +7,9 @@
|
||||
:hide-uri-scheme:
|
||||
Mark Fisher; Marius Bogoevici; Iwein Fuld; Jonas Partner; Oleg Zhurakousky; Gary Russell; Dave Syer; Josh Long; David Turanski; Gunnar Hillert; Artem Bilan; Amol Nayak; Jay Bryant
|
||||
|
||||
ifdef::backend-html5[]
|
||||
*{project-version}*
|
||||
endif::[]
|
||||
|
||||
(C) 2009 - 2019 Pivotal Software, Inc.
|
||||
All rights reserved.
|
||||
@@ -20,7 +22,7 @@ include::./preface.adoc[]
|
||||
= What's New?
|
||||
|
||||
[[spring-integration-intro-new]]
|
||||
For those who are already familiar with Spring Integration, this chapter provides a brief overview of the new features of version 5.1.
|
||||
For those who are already familiar with Spring Integration, this chapter provides a brief overview of the new features of version 5.2.
|
||||
|
||||
If you are interested in the changes and features that were introduced in earlier versions, see the <<history>>.
|
||||
|
||||
|
||||
@@ -432,7 +432,7 @@ The `@IntegrationConverter` annotation marks `Converter`, `GenericConverter`, or
|
||||
This annotation is an analogue of the `<int:converter>` XML element (see <<payload-type-conversion>>).
|
||||
You can place `@IntegrationConverter` annotations at the class level (with a `@Component` stereotype annotation) or on `@Bean` methods within `@Configuration` classes.
|
||||
|
||||
See <<annotations>> for more information about messaging mnnotations.
|
||||
See <<annotations>> for more information about messaging annotations.
|
||||
|
||||
[[programming-considerations]]
|
||||
=== Programming Considerations
|
||||
|
||||
@@ -15,13 +15,13 @@ This section details the compatible http://www.oracle.com/technetwork/java/javas
|
||||
[[supported-java-versions]]
|
||||
=== Compatible Java Versions
|
||||
|
||||
For Spring Integration 5.1.x, the minimum compatible Java version is Java SE 8.
|
||||
For Spring Integration 5.2.x, the minimum compatible Java version is Java SE 8.
|
||||
Older versions of Java are not supported.
|
||||
|
||||
[[supported-spring-versions]]
|
||||
=== Compatible Versions of the Spring Framework
|
||||
|
||||
Spring Integration 5.1.x requires Spring Framework 5.1 or later.
|
||||
Spring Integration 5.2.x requires Spring Framework 5.2 or later.
|
||||
|
||||
[[code-conventions]]
|
||||
== Code Conventions
|
||||
|
||||
@@ -1,245 +1,13 @@
|
||||
[[whats-new]]
|
||||
|
||||
== What's New in Spring Integration 5.1?
|
||||
== What's New in Spring Integration 5.2?
|
||||
|
||||
This chapter provides an overview of the new features and improvements that have been introduced with Spring
|
||||
Integration `5.1`.
|
||||
If you are interested in more details, see the Issue Tracker tickets that were resolved as part of the 5.1 development process.
|
||||
If you are interested in more details, see the Issue Tracker tickets that were resolved as part of the 5.2 development process.
|
||||
|
||||
[[x5.1-new-components]]
|
||||
[[x5.2-new-components]]
|
||||
=== New Components
|
||||
|
||||
The following components are new in 5.1:
|
||||
|
||||
* <<x5.1-AmqpDedicatedChannelAdvice>>
|
||||
|
||||
[[x5.1-AmqpDedicatedChannelAdvice]]
|
||||
==== `AmqpDedicatedChannelAdvice`
|
||||
|
||||
See <<amqp-strict-ordering>>.
|
||||
|
||||
[[x5.1-Functions]]
|
||||
==== Improved Function Support
|
||||
|
||||
The `java.util.function` interfaces now have improved integration support in the Framework components.
|
||||
Also Kotlin lambdas now can be used for handler and source methods.
|
||||
|
||||
See <<functions-support>>.
|
||||
|
||||
[[x5.1-LongRunningTest]]
|
||||
==== `@LongRunningTest`
|
||||
|
||||
A JUnit 5 `@LongRunningTest` conditional annotation is provided to check the environment or system properties for the `RUN_LONG_INTEGRATION_TESTS` entry with the value of `true` to determine if test should be run or skipped.
|
||||
|
||||
See <<test-junit-rules>>.
|
||||
|
||||
[[x5.1-general]]
|
||||
[[x5.2-general]]
|
||||
=== General Changes
|
||||
|
||||
The following changes have been made in version 5.1:
|
||||
|
||||
* <<x5.1-java-dsl>>
|
||||
* <<x5.1-dispatcher-exceptions>>
|
||||
* <<x5.1-global-channel-interceptors>>
|
||||
* <<x5.1-object-to-json-transformer>>
|
||||
* <<x5.1-integration-flows-generated-bean-names>>
|
||||
* <<x5.1-aggregator>>
|
||||
* <<x5.1-publisher>>
|
||||
* <<x51.-integration-graph>>
|
||||
* <<x51.-global-properties>>
|
||||
* <<x51.-poller-annotation>>
|
||||
|
||||
[[x5.1-java-dsl]]
|
||||
==== Java DSL
|
||||
|
||||
The `IntegrationFlowContext` is now an interface and `IntegrationFlowRegistration` is an inner interface of `IntegrationFlowContext`.
|
||||
|
||||
A new `logAndReply()` operator has been introduced for convenience when you wish to log at the end of a flow for request-reply configurations.
|
||||
This avoid confusion with `log()` which is treated as a one-way end flow component.
|
||||
|
||||
A generated bean name for any `NamedComponent` within an integration flow is now based on the component type for better readability from visual tools, logs analyzers and metrics collectors.
|
||||
|
||||
The `GenericHandler.handle()` now excepts a `MessageHeaders` type for the second argument.
|
||||
|
||||
[[x5.1-dispatcher-exceptions]]
|
||||
==== Dispatcher Exceptions
|
||||
|
||||
Exceptions caught and re-thrown by `AbstractDispatcher` are now more consistent:
|
||||
|
||||
* A `MessagingException` of any kind that has a `failedMessage` property is re-thrown unchanged.
|
||||
* All other exceptions are wrapped in a `MessageDeliveryException` with the `failedMessage` property set.
|
||||
|
||||
Previously:
|
||||
|
||||
* A `MessagingException` of any kind that has a `failedMessage` property was re-thrown unchanged
|
||||
* A `MessagingException` that had no `failedMessage` property was wrapped in a `MessagingException` with the `failedMessage` property set.
|
||||
* Other `RuntimeException` instances were re-thrown unchanged.
|
||||
* Checked exceptions were wrapped in a `MessageDeliveryException` with the `failedMessage` property set.
|
||||
|
||||
[[x5.1-global-channel-interceptors]]
|
||||
==== Global Channel Interceptors
|
||||
|
||||
Global channel interceptors now apply to dynamically registered channels, such as through the `IntegrationFlowContext` when using the Java DSL or beans that are initialized using `beanFactory.initializeBean()`.
|
||||
Previously, when beans were created after the application context was refreshed, interceptors were not applied.
|
||||
|
||||
[[x5.1-channel-interceptors]]
|
||||
==== Channel Interceptors
|
||||
|
||||
`ChannelInterceptor.postReceive()` is no longer called when no message is received; it is no longer necessary to check for a `null` `Message<?>`.
|
||||
Previously, the method was called.
|
||||
If you have an interceptor that relies on the previous behavior, implement `afterReceiveCompleted()` instead, since that method is invoked, regardless of whether a message is received or not.
|
||||
Furthermore, the `PolledAmqpChannel` and `PolledJmsChannel` previously did not invoke `afterReceiveCompleted()` with `null`; they now do.
|
||||
|
||||
[[x5.1-object-to-json-transformer]]
|
||||
==== `ObjectToJsonTransformer`
|
||||
|
||||
A new `ResultType.BYTES` mode is introduced for the `ObjectToJsonTransformer`.
|
||||
|
||||
See <<json-transformers>> for more information.
|
||||
|
||||
[[x5.1-integration-flows-generated-bean-names]]
|
||||
==== Integration Flows: Generated Bean Names
|
||||
|
||||
Starting with version 5.0.5, generated bean names for the components in an `IntegrationFlow` include the flow bean name, followed by a dot, as a prefix.
|
||||
For example, if a flow bean were named `flowBean`, a generated bean might be named `flowBean.generatedBean`.
|
||||
|
||||
See <<java-dsl-flows>> for more information.
|
||||
|
||||
[[x5.1-aggregator]]
|
||||
==== Aggregator Changes
|
||||
|
||||
If the `groupTimeout` is evaluated to a negative value, an aggregator now expires the group immediately.
|
||||
Only `null` is considered as a signal to do nothing for the current message.
|
||||
|
||||
A new `popSequence` property has been introduced to allow (by default) to call a `MessageBuilder.popSequenceDetails()` for the output message.
|
||||
Also an `AbstractAggregatingMessageGroupProcessor` returns now an `AbstractIntegrationMessageBuilder` instead of the whole `Message` for optimization.
|
||||
|
||||
See <<aggregator>> for more information.
|
||||
|
||||
[[x5.1-publisher]]
|
||||
==== @Publisher annotation changes
|
||||
|
||||
Starting with version 5.1, you must explicitly turn on the `@Publisher` AOP functionality by using `@EnablePublisher` or by using the `<int:enable-publisher>` child element on `<int:annotation-config>`.
|
||||
Also the `proxy-target-class` and `order` attributes have been added for tuning the `ProxyFactory` configuration.
|
||||
|
||||
See <<publisher-annotation>> for more information.
|
||||
|
||||
[[x5.1-files]]
|
||||
=== Files Changes
|
||||
|
||||
If you are using `FileExistsMode.APPEND` or `FileExistsMode.APPEND_NO_FLUSH` you can provide a `newFileCallback` that will be called when creating a new file.
|
||||
This callback receives the newly created file and the message that triggered the callback.
|
||||
This could be used to write a CSV header, for an example.
|
||||
|
||||
The `FileReadingMessageSource` now doesn't check and create a directory until its `start()` is called.
|
||||
So, if an Inbound Channel Adapter for the `FileReadingMessageSource` has `autoStartup = false`, there are no failures against the file system during application start up.
|
||||
|
||||
See <<files>> for more information.
|
||||
|
||||
[[x5.1-amqp]]
|
||||
=== AMQP Changes
|
||||
|
||||
We have made `ID` and `Timestamp` header mapping changes in the `DefaultAmqpHeaderMapper`.
|
||||
See the note near the bottom of <<amqp-message-headers>> for more information.
|
||||
|
||||
The `contentType` header is now correctly mapped as an entry in the general headers map.
|
||||
See <<amqp-content-type>> for more information.
|
||||
|
||||
Starting with version 5.1.3, if a message conversion exception occurs when using manual acknowledgments, and an error channel is defined, the payload is a `ManualAckListenerExecutionFailedException` with additional `channel` and `deliveryTag` properties.
|
||||
This enables the error flow to ack/nack the original message.
|
||||
See <<amqp-conversion-inbound>> for more information.
|
||||
|
||||
[[x5.1-jdbc]]
|
||||
=== JDBC Changes
|
||||
|
||||
A confusing `max-rows-per-poll` property on the JDBC Inbound Channel Adapter and JDBC Outbound Gateway has been deprecated in favor of the newly introduced `max-rows` property.
|
||||
|
||||
The `JdbcMessageHandler` supports now a `batchUpdate` functionality when the payload of the request message is an instance of an `Iterable` type.
|
||||
|
||||
The indexes for the `INT_CHANNEL_MESSAGE` table (for the `JdbcChannelMessageStore`) have been optimized.
|
||||
If you have large message groups in such a store, you may wish to alter the indexes.
|
||||
|
||||
See <<jdbc>> for more information.
|
||||
|
||||
[[x5.1-ftp-sftp]]
|
||||
=== FTP and SFTP Changes
|
||||
|
||||
A `RotatingServerAdvice` is now available to poll multiple servers and directories with the inbound channel adapters.
|
||||
See <<ftp-rotating-server-advice>> and <<sftp-rotating-server-advice>> for more information.
|
||||
|
||||
Also, inbound adapter `localFilenameExpression` instances can contain the `#remoteDirectory` variable, which contains the remote directory being polled.
|
||||
The generic type of the comparators (used to sort the fetched file list for the streaming adapters) has changed from `Comparator<AbstractFileInfo<F>>` to `Comparator<F>`.
|
||||
See <<ftp-streaming>> and <<sftp-streaming>> for more information.
|
||||
|
||||
In addition, the synchronizers for inbound channel adapters can now be provided with a `Comparator`.
|
||||
This is useful when using `maxFetchSize` to limit the files retrieved.
|
||||
|
||||
The `CachingSessionFactory` has a new property `testSession` which, when true, causes the factory to perform a `test()` operation on the `Session` when checking out an existing session from the cache.
|
||||
|
||||
See <<sftp-session-caching>> and <<ftp-session-caching>> for more information.
|
||||
|
||||
The outbound gateway MPUT command now supports a message payload with a collection of files or strings.
|
||||
See <<sftp-outbound-gateway>> and <<ftp-outbound-gateway>> for more information.
|
||||
|
||||
[[x51.-tcp]]
|
||||
=== TCP Support
|
||||
|
||||
When using SSL, host verification is now enabled, by default, to prevent man-in-the-middle attacks with a trusted certificate.
|
||||
See <<tcp-ssl-host-verification>> for more information.
|
||||
|
||||
In addition the key and trust store types can now be configured on the `DefaultTcpSSLContextSupport`.
|
||||
|
||||
[[x5.1-twitter]]
|
||||
=== Twitter Support
|
||||
|
||||
Since the Spring Social project has moved to https://spring.io/blog/2018/07/03/spring-social-end-of-life-announcement[end of life status], Twitter support in Spring Integration has been moved to the Extensions project.
|
||||
See https://github.com/spring-projects/spring-integration-extensions/tree/master/spring-integration-social-twitter[Spring Integration Social Twitter] for more information.
|
||||
|
||||
[[x51.-jms]]
|
||||
=== JMS Support
|
||||
|
||||
The `JmsSendingMessageHandler` now provides `deliveryModeExpression` and `timeToLiveExpression` options to determine respective QoS options for JMS message to send at runtime.
|
||||
The `DefaultJmsHeaderMapper` now allows to map inbound `JMSDeliveryMode` and `JMSExpiration` properties via setting to `true` respective `setMapInboundDeliveryMode()` and `setMapInboundExpiration()` options.
|
||||
When a `JmsMessageDrivenEndpoint` or `JmsInboundGateway` is stopped, the associated listener container is now shut down; this closes its shared connection and any consumers.
|
||||
You can configure the endpoints to revert to the previous behavior.
|
||||
|
||||
See <<jms>> for more information.
|
||||
|
||||
[[x51.-http]]
|
||||
=== HTTP/WebFlux Support
|
||||
|
||||
The `statusCodeExpression` (and `Function`) is now supplied with the `RequestEntity<?>` as a root object for evaluation context, so request headers, method, URI and body are available for target status code calculation.
|
||||
|
||||
See <<http>> and <<webflux>> for more information.
|
||||
|
||||
[[x51.-jmx]]
|
||||
=== JMX Changes
|
||||
|
||||
Object name key values are now quoted if they contain any characters other than those allowed in a Java identifier (or period `.`).
|
||||
For example `org.springframework.integration:type=MessageChannel,` `name="input:foo.myGroup.errors"`.
|
||||
This has the side effect that previously "allowed" names, with such characters, will now be quoted.
|
||||
For example `org.springframework.integration:type=MessageChannel,` `name="input#foo.myGroup.errors"`.
|
||||
|
||||
[[x51.-micrometer]]
|
||||
=== Micrometer Support Changes
|
||||
|
||||
It is now simpler to customize the standard Micrometer meters created by the framework.
|
||||
See <<micrometer-integration>> for more information.
|
||||
|
||||
[[x51.-integration-graph]]
|
||||
=== Integration Graph Customization
|
||||
|
||||
It is now possible to add additional properties to the `IntegrationNode` s via `Function<NamedComponent, Map<String, Object>> additionalPropertiesCallback` on the `IntegrationGraphServer`.
|
||||
See <<integration-graph>> for more information.
|
||||
|
||||
[[x51.-global-properties]]
|
||||
=== Integration Global Properties
|
||||
|
||||
The Integration global properties (including defaults) can now be printed in the logs, when a `DEBUG` logic level is turned on for the `org.springframework.integration` category.
|
||||
See <<global-properties>> for more information.
|
||||
|
||||
[[x51.-poller-annotation]]
|
||||
=== The `receiveTimeout` for `@Poller`
|
||||
|
||||
The `@Poller` annotation now provides a `receiveTimeout` option for convenience.
|
||||
See <<configuration-using-poller-annotation>> for more information.
|
||||
|
||||
Reference in New Issue
Block a user