Start version 7.0
* Upgrade to Gradle `8.14.1` * Rearrange docs for `7.0` version
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
version=6.5.1-SNAPSHOT
|
||||
version=7.0.0-SNAPSHOT
|
||||
org.gradle.jvmargs=-Xmx2g -XX:+HeapDumpOnOutOfMemoryError -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8
|
||||
kotlin.jvm.target.validation.mode=IGNORE
|
||||
org.gradle.caching=true
|
||||
|
||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,7 +1,7 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionSha256Sum=8d97a97984f6cbd2b85fe4c60a743440a347544bf18818048e611f5288d46c94
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
|
||||
distributionSha256Sum=845952a9d6afa783db70bb3b0effaae45ae5542ca2bb7929619e8af49cb634cf
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
||||
6
gradlew
vendored
6
gradlew
vendored
@@ -114,7 +114,7 @@ case "$( uname )" in #(
|
||||
NONSTOP* ) nonstop=true ;;
|
||||
esac
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
CLASSPATH="\\\"\\\""
|
||||
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
@@ -205,7 +205,7 @@ fi
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Collect all arguments for the java command:
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||
# and any embedded shellness will be escaped.
|
||||
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||
# treated as '${Hostname}' itself on the command line.
|
||||
@@ -213,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
set -- \
|
||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||
-classpath "$CLASSPATH" \
|
||||
org.gradle.wrapper.GradleWrapperMain \
|
||||
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
|
||||
"$@"
|
||||
|
||||
# Stop when "xargs" is not available.
|
||||
|
||||
4
gradlew.bat
vendored
4
gradlew.bat
vendored
@@ -70,11 +70,11 @@ goto fail
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
set CLASSPATH=
|
||||
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
|
||||
@@ -255,6 +255,7 @@
|
||||
* xref:samples.adoc[]
|
||||
* xref:resources.adoc[]
|
||||
* xref:history.adoc[]
|
||||
** xref:changes-6.4-6.5.adoc[]
|
||||
** xref:changes-6.3-6.4.adoc[]
|
||||
** xref:changes-6.2-6.3.adoc[]
|
||||
** xref:changes-6.1-6.2.adoc[]
|
||||
|
||||
94
src/reference/antora/modules/ROOT/pages/changes-6.4-6.5.adoc
Normal file
94
src/reference/antora/modules/ROOT/pages/changes-6.4-6.5.adoc
Normal file
@@ -0,0 +1,94 @@
|
||||
[[migration-6.4-6.5]]
|
||||
= Changes between 6.4 and 6.5
|
||||
|
||||
[[x6.5-general]]
|
||||
== General Changes
|
||||
|
||||
The deprecated previously usage of `org.springframework.util.concurrent.ListenableFuture` has been removed in favor of `CompletableFuture`.
|
||||
|
||||
The previously deprecated SpEL-based Control Bus components have been removed in favor of functionality around `ControlBusCommandRegistry`.
|
||||
The `<control-bus use-registry="">` attribute is deprecated now without replacement since only `ControlBusCommandRegistry` functionality is available.
|
||||
The Java DSL `controlBusOnRegistry()` operator is deprecated in favor of restored `controlBus()` which is fully based now on the `ControlBusCommandRegistry`.
|
||||
See xref:control-bus.adoc[Control Bus] for more information.
|
||||
|
||||
The `AbstractCorrelatingMessageHandler` does not throw an `IllegalArgumentException` for the collection of payloads as a result of the `MessageGroupProcessor`.
|
||||
Instead, such a collection is wrapped into a single reply message.
|
||||
See xref:aggregator.adoc[Aggregator] for more information.
|
||||
|
||||
The `AbstractMessageChannel` beans now throw a special `MessageDispatchingException` when an attempt to send a message to not running application is done.
|
||||
In general, it is a design error to try to produce a message from `afterPropertiesSet()`, `@PostConstruct` or bean definition methods.
|
||||
The `SmartLifecycle.start()` is preferred way for this kind of logic, or better to do that via inbound channel adapters.
|
||||
|
||||
The Java DSL `gateway()` operator now fully supports an `async(true)` behavior.
|
||||
See xref:gateway.adoc[] for more information.
|
||||
|
||||
[[x6.5-lock-request-handler-advice]]
|
||||
== The `LockRequestHandlerAdvice`
|
||||
|
||||
A new `LockRequestHandlerAdvice` is introduced to keep the lock for a key based on a request message for message handler invocation.
|
||||
See xref:handler-advice.adoc[] for more information.
|
||||
|
||||
[[x6.5-correlation-changes]]
|
||||
== The `discardIndividuallyOnExpiry` Option For Correlation Handlers
|
||||
|
||||
The aggregator and resequencer can now discard the whole expired group as a single message via setting `discardIndividuallyOnExpiry` to `false`.
|
||||
See xref:aggregator.adoc#releasestrategy[ReleaseStrategy] for more information.
|
||||
|
||||
[[x6.5-message-store-with-locks]]
|
||||
== The `LockRegistry` in the `MessageStore`
|
||||
|
||||
The `AbstractMessageGroupStore` now can be configured with a `LockRegistry` to perform series of persistent operation atomically.
|
||||
See xref:message-store.adoc#use-lock-registry[Use LockRegistry] for more information.
|
||||
|
||||
[[x6.5-observation-changes]]
|
||||
== Micrometer Observation Changes
|
||||
|
||||
The `SourcePollingChannelAdapter` endpoint now starts a `CONSUMER` kind observation for the received message.
|
||||
The `MessageReceiverContext` now distinguishes between `handler`, `message-source` and `message-producer` values for the `spring.integration.type` low cardinality tag.
|
||||
See xref:metrics.adoc#micrometer-observation[Micrometer Observation] for more information.
|
||||
|
||||
[[x6.5-mqtt-changes]]
|
||||
== Optional Paho MQTT Dependencies
|
||||
|
||||
The `org.eclipse.paho:org.eclipse.paho.client.mqttv3` dependency for `spring-integration-mqtt` is now also optional as `org.eclipse.paho:org.eclipse.paho.mqttv5.client` always was.
|
||||
See xref:mqtt.adoc[MQTT Support] for more information.
|
||||
|
||||
[[x6.5-kafka-changes]]
|
||||
== Apache Kafka support Changes
|
||||
|
||||
The `KafkaMessageSource` and `KafkaMessageDrivenChannelAdapter` now generate `MessageHeaders.ID` and `MessageHeaders.TIMESTAMP` headers by default as the rest of Spring Integration channel adapters.
|
||||
The behavior can be restored to the previous with injection of the `MessagingMessageConverter` with default settings.
|
||||
See xref:kafka.adoc[Apache Kafka Support] for more information.
|
||||
|
||||
[[x6.5-file-filter-changes]]
|
||||
== The Recent File Filter Support
|
||||
|
||||
The `AbstractRecentFileListFilter` strategy has been introduced to accept only those files which are not old enough according to the provided `age`.
|
||||
The respective implementations are provided: `RecentFileListFilter`, `FtpRecentFileListFilter`, `SftpRecentFileListFilter` and `SmbRecentFileListFilter`.
|
||||
See xref:file/reading.adoc[Reading Files] for more information.
|
||||
|
||||
[[x6.5-file-exists-mode-expression]]
|
||||
== FileExistsMode Expression Support
|
||||
|
||||
The remote file gateways (`AbstractRemoteFileOutboundGateway`) now support dynamic resolution of `FileExistsMode` at runtime via SpEL expressions.
|
||||
See xref:ftp/rft.adoc[Remote File Gateways] for more information.
|
||||
|
||||
[[x6.5-hazelcast-changes]]
|
||||
== Hazelcast Module Deprecations
|
||||
|
||||
The `HazelcastLockRegistry` and Hazelcast `LeaderInitiator` have been deprecated due to Hazelcast CP Subsystem migration to Enterprise Edition.
|
||||
See xref:hazelcast.adoc[Hazelcast Support] for more information.
|
||||
|
||||
[[x6.5-jdbc-changes]]
|
||||
== JDBC Support
|
||||
|
||||
The `BeanPropertySqlParameterSourceFactory` uses now internally the `MapSqlParameterSource` if provided input is a `Map`.
|
||||
Also, `JdbcMessageHandler` exposes a `usePayloadAsParameterSource` flag to allow to deal with parameter source only against message payload.
|
||||
That's where the mentioned `MapSqlParameterSource` comes useful for request messages with map payloads.
|
||||
See xref:jdbc.adoc[JDBC Support] for more information.
|
||||
|
||||
[[x6.5-redis-changes]]
|
||||
== Redis Stream Support
|
||||
|
||||
The `ReactiveRedisStreamMessageHandler` now exposes a `Function<Message<?>, RedisStreamCommands.XAddOptions>` to provide additional `XADD` option via convenient `RedisStreamCommands.XAddOptions` API.
|
||||
See xref:redis.adoc#redis-stream-outbound[Redis Support] for more information.
|
||||
@@ -15,13 +15,13 @@ This section details the compatible https://www.oracle.com/technetwork/java/java
|
||||
[[supported-java-versions]]
|
||||
=== Compatible Java Versions
|
||||
|
||||
For Spring Integration 6.4.x, the minimum compatible Java version is Java SE 17.
|
||||
For Spring Integration 7.0.x, the minimum compatible Java version is Java SE 17.
|
||||
Older versions of Java are not supported.
|
||||
|
||||
[[supported-spring-versions]]
|
||||
=== Compatible Versions of the Spring Framework
|
||||
|
||||
Spring Integration 6.4.x requires Spring Framework 6.2 or later.
|
||||
Spring Integration 7.0.x requires Spring Framework 7.0 or later.
|
||||
|
||||
[[code-conventions]]
|
||||
== Code Conventions
|
||||
|
||||
@@ -2,105 +2,18 @@
|
||||
= 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 6.5.
|
||||
For those who are already familiar with Spring Integration, this chapter provides a brief overview of the new features of version 7.0.
|
||||
|
||||
If you are interested in the changes and features that were introduced in earlier versions, see the xref:history.adoc[Change History].
|
||||
|
||||
[[what-s-new-in-spring-integration-6-5]]
|
||||
== What's New in Spring Integration 6.5?
|
||||
[[what-s-new-in-spring-integration-7-0]]
|
||||
== What's New in Spring Integration 7.0?
|
||||
|
||||
If you are interested in more details, see the Issue Tracker tickets that were resolved as part of the 6.5 development process.
|
||||
For more details, see the https://github.com/spring-projects/spring-integration/issues[GitHub Issues] that were resolved as part of the 7.0 development process.
|
||||
|
||||
In general the project has been moved to the latest dependency versions.
|
||||
Java 17 is still baseline, but Java 24 is supported.
|
||||
|
||||
[[x6.5-general]]
|
||||
[[x7.0-general]]
|
||||
== General Changes
|
||||
|
||||
The deprecated previously usage of `org.springframework.util.concurrent.ListenableFuture` has been removed in favor of `CompletableFuture`.
|
||||
|
||||
The previously deprecated SpEL-based Control Bus components have been removed in favor of functionality around `ControlBusCommandRegistry`.
|
||||
The `<control-bus use-registry="">` attribute is deprecated now without replacement since only `ControlBusCommandRegistry` functionality is available.
|
||||
The Java DSL `controlBusOnRegistry()` operator is deprecated in favor of restored `controlBus()` which is fully based now on the `ControlBusCommandRegistry`.
|
||||
See xref:control-bus.adoc[Control Bus] for more information.
|
||||
|
||||
The `AbstractCorrelatingMessageHandler` does not throw an `IllegalArgumentException` for the collection of payloads as a result of the `MessageGroupProcessor`.
|
||||
Instead, such a collection is wrapped into a single reply message.
|
||||
See xref:aggregator.adoc[Aggregator] for more information.
|
||||
|
||||
The `AbstractMessageChannel` beans now throw a special `MessageDispatchingException` when an attempt to send a message to not running application is done.
|
||||
In general, it is a design error to try to produce a message from `afterPropertiesSet()`, `@PostConstruct` or bean definition methods.
|
||||
The `SmartLifecycle.start()` is preferred way for this kind of logic, or better to do that via inbound channel adapters.
|
||||
|
||||
The Java DSL `gateway()` operator now fully supports an `async(true)` behavior.
|
||||
See xref:gateway.adoc[] for more information.
|
||||
|
||||
[[x6.5-lock-request-handler-advice]]
|
||||
== The `LockRequestHandlerAdvice`
|
||||
|
||||
A new `LockRequestHandlerAdvice` is introduced to keep the lock for a key based on a request message for message handler invocation.
|
||||
See xref:handler-advice.adoc[] for more information.
|
||||
|
||||
[[x6.5-correlation-changes]]
|
||||
== The `discardIndividuallyOnExpiry` Option For Correlation Handlers
|
||||
|
||||
The aggregator and resequencer can now discard the whole expired group as a single message via setting `discardIndividuallyOnExpiry` to `false`.
|
||||
See xref:aggregator.adoc#releasestrategy[ReleaseStrategy] for more information.
|
||||
|
||||
[[x6.5-message-store-with-locks]]
|
||||
== The `LockRegistry` in the `MessageStore`
|
||||
|
||||
The `AbstractMessageGroupStore` now can be configured with a `LockRegistry` to perform series of persistent operation atomically.
|
||||
See xref:message-store.adoc#use-lock-registry[Use LockRegistry] for more information.
|
||||
|
||||
[[x6.5-observation-changes]]
|
||||
== Micrometer Observation Changes
|
||||
|
||||
The `SourcePollingChannelAdapter` endpoint now starts a `CONSUMER` kind observation for the received message.
|
||||
The `MessageReceiverContext` now distinguishes between `handler`, `message-source` and `message-producer` values for the `spring.integration.type` low cardinality tag.
|
||||
See xref:metrics.adoc#micrometer-observation[Micrometer Observation] for more information.
|
||||
|
||||
[[x6.5-mqtt-changes]]
|
||||
== Optional Paho MQTT Dependencies
|
||||
|
||||
The `org.eclipse.paho:org.eclipse.paho.client.mqttv3` dependency for `spring-integration-mqtt` is now also optional as `org.eclipse.paho:org.eclipse.paho.mqttv5.client` always was.
|
||||
See xref:mqtt.adoc[MQTT Support] for more information.
|
||||
|
||||
[[x6.5-kafka-changes]]
|
||||
== Apache Kafka support Changes
|
||||
|
||||
The `KafkaMessageSource` and `KafkaMessageDrivenChannelAdapter` now generate `MessageHeaders.ID` and `MessageHeaders.TIMESTAMP` headers by default as the rest of Spring Integration channel adapters.
|
||||
The behavior can be restored to the previous with injection of the `MessagingMessageConverter` with default settings.
|
||||
See xref:kafka.adoc[Apache Kafka Support] for more information.
|
||||
|
||||
[[x6.5-file-filter-changes]]
|
||||
== The Recent File Filter Support
|
||||
|
||||
The `AbstractRecentFileListFilter` strategy has been introduced to accept only those files which are not old enough according to the provided `age`.
|
||||
The respective implementations are provided: `RecentFileListFilter`, `FtpRecentFileListFilter`, `SftpRecentFileListFilter` and `SmbRecentFileListFilter`.
|
||||
See xref:file/reading.adoc[Reading Files] for more information.
|
||||
|
||||
[[x6.5-file-exists-mode-expression]]
|
||||
== FileExistsMode Expression Support
|
||||
|
||||
The remote file gateways (`AbstractRemoteFileOutboundGateway`) now support dynamic resolution of `FileExistsMode` at runtime via SpEL expressions.
|
||||
See xref:ftp/rft.adoc[Remote File Gateways] for more information.
|
||||
|
||||
[[x6.5-hazelcast-changes]]
|
||||
== Hazelcast Module Deprecations
|
||||
|
||||
The `HazelcastLockRegistry` and Hazelcast `LeaderInitiator` have been deprecated due to Hazelcast CP Subsystem migration to Enterprise Edition.
|
||||
See xref:hazelcast.adoc[Hazelcast Support] for more information.
|
||||
|
||||
[[x6.5-jdbc-changes]]
|
||||
== JDBC Support
|
||||
|
||||
The `BeanPropertySqlParameterSourceFactory` uses now internally the `MapSqlParameterSource` if provided input is a `Map`.
|
||||
Also, `JdbcMessageHandler` exposes a `usePayloadAsParameterSource` flag to allow to deal with parameter source only against message payload.
|
||||
That's where the mentioned `MapSqlParameterSource` comes useful for request messages with map payloads.
|
||||
See xref:jdbc.adoc[JDBC Support] for more information.
|
||||
|
||||
[[x6.5-redis-changes]]
|
||||
== Redis Stream Support
|
||||
|
||||
The `ReactiveRedisStreamMessageHandler` now exposes a `Function<Message<?>, RedisStreamCommands.XAddOptions>` to provide additional `XADD` option via convenient `RedisStreamCommands.XAddOptions` API.
|
||||
See xref:redis.adoc#redis-stream-outbound[Redis Support] for more information.
|
||||
Reference in New Issue
Block a user