diff --git a/gradle.properties b/gradle.properties index f73941f3b3..f9e7adb3b5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -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 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index a4b76b9530..1b33c55baa 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d71047787f..9128c7d428 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -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 diff --git a/gradlew b/gradlew index f3b75f3b0d..23d15a9367 100755 --- a/gradlew +++ b/gradlew @@ -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. diff --git a/gradlew.bat b/gradlew.bat index 9b42019c79..5eed7ee845 100755 --- a/gradlew.bat +++ b/gradlew.bat @@ -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 diff --git a/src/reference/antora/modules/ROOT/nav.adoc b/src/reference/antora/modules/ROOT/nav.adoc index c0c110dbc5..9bb2808e5b 100644 --- a/src/reference/antora/modules/ROOT/nav.adoc +++ b/src/reference/antora/modules/ROOT/nav.adoc @@ -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[] diff --git a/src/reference/antora/modules/ROOT/pages/changes-6.4-6.5.adoc b/src/reference/antora/modules/ROOT/pages/changes-6.4-6.5.adoc new file mode 100644 index 0000000000..ce08aabf42 --- /dev/null +++ b/src/reference/antora/modules/ROOT/pages/changes-6.4-6.5.adoc @@ -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 `` 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, RedisStreamCommands.XAddOptions>` to provide additional `XADD` option via convenient `RedisStreamCommands.XAddOptions` API. +See xref:redis.adoc#redis-stream-outbound[Redis Support] for more information. \ No newline at end of file diff --git a/src/reference/antora/modules/ROOT/pages/preface.adoc b/src/reference/antora/modules/ROOT/pages/preface.adoc index 4b35d50539..407c821fd5 100644 --- a/src/reference/antora/modules/ROOT/pages/preface.adoc +++ b/src/reference/antora/modules/ROOT/pages/preface.adoc @@ -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 diff --git a/src/reference/antora/modules/ROOT/pages/whats-new.adoc b/src/reference/antora/modules/ROOT/pages/whats-new.adoc index d097c05cef..b0cf410a9c 100644 --- a/src/reference/antora/modules/ROOT/pages/whats-new.adoc +++ b/src/reference/antora/modules/ROOT/pages/whats-new.adoc @@ -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 `` 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, RedisStreamCommands.XAddOptions>` to provide additional `XADD` option via convenient `RedisStreamCommands.XAddOptions` API. -See xref:redis.adoc#redis-stream-outbound[Redis Support] for more information. \ No newline at end of file