Start version 7.0

* Upgrade to Gradle `8.14.1`
* Rearrange docs for `7.0` version
This commit is contained in:
Artem Bilan
2025-05-30 15:59:39 -04:00
parent 01db420bae
commit 235228596b
9 changed files with 111 additions and 103 deletions

View File

@@ -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

Binary file not shown.

View File

@@ -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
View File

@@ -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
View File

@@ -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

View File

@@ -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[]

View 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.

View File

@@ -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

View File

@@ -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.