|
2 | 2 | = What's New? |
3 | 3 |
|
4 | 4 | [[spring-integration-intro-new]] |
5 | | -For those who are already familiar with Spring Integration, this chapter provides a brief overview of the new features of version 6.5. |
| 5 | +For those who are already familiar with Spring Integration, this chapter provides a brief overview of the new features of version 7.0. |
6 | 6 |
|
7 | 7 | If you are interested in the changes and features that were introduced in earlier versions, see the xref:history.adoc[Change History]. |
8 | 8 |
|
9 | | -[[what-s-new-in-spring-integration-6-5]] |
10 | | -== What's New in Spring Integration 6.5? |
| 9 | +[[what-s-new-in-spring-integration-7-0]] |
| 10 | +== What's New in Spring Integration 7.0? |
11 | 11 |
|
12 | | -If you are interested in more details, see the Issue Tracker tickets that were resolved as part of the 6.5 development process. |
| 12 | +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. |
13 | 13 |
|
14 | 14 | In general the project has been moved to the latest dependency versions. |
| 15 | +Java 17 is still baseline, but Java 24 is supported. |
15 | 16 |
|
16 | | -[[x6.5-general]] |
| 17 | +[[x7.0-general]] |
17 | 18 | == General Changes |
18 | 19 |
|
19 | | -The deprecated previously usage of `org.springframework.util.concurrent.ListenableFuture` has been removed in favor of `CompletableFuture`. |
20 | | - |
21 | | -The previously deprecated SpEL-based Control Bus components have been removed in favor of functionality around `ControlBusCommandRegistry`. |
22 | | -The `<control-bus use-registry="">` attribute is deprecated now without replacement since only `ControlBusCommandRegistry` functionality is available. |
23 | | -The Java DSL `controlBusOnRegistry()` operator is deprecated in favor of restored `controlBus()` which is fully based now on the `ControlBusCommandRegistry`. |
24 | | -See xref:control-bus.adoc[Control Bus] for more information. |
25 | | - |
26 | | -The `AbstractCorrelatingMessageHandler` does not throw an `IllegalArgumentException` for the collection of payloads as a result of the `MessageGroupProcessor`. |
27 | | -Instead, such a collection is wrapped into a single reply message. |
28 | | -See xref:aggregator.adoc[Aggregator] for more information. |
29 | | - |
30 | | -The `AbstractMessageChannel` beans now throw a special `MessageDispatchingException` when an attempt to send a message to not running application is done. |
31 | | -In general, it is a design error to try to produce a message from `afterPropertiesSet()`, `@PostConstruct` or bean definition methods. |
32 | | -The `SmartLifecycle.start()` is preferred way for this kind of logic, or better to do that via inbound channel adapters. |
33 | | - |
34 | | -The Java DSL `gateway()` operator now fully supports an `async(true)` behavior. |
35 | | -See xref:gateway.adoc[] for more information. |
36 | | - |
37 | | -[[x6.5-lock-request-handler-advice]] |
38 | | -== The `LockRequestHandlerAdvice` |
39 | | - |
40 | | -A new `LockRequestHandlerAdvice` is introduced to keep the lock for a key based on a request message for message handler invocation. |
41 | | -See xref:handler-advice.adoc[] for more information. |
42 | | - |
43 | | -[[x6.5-correlation-changes]] |
44 | | -== The `discardIndividuallyOnExpiry` Option For Correlation Handlers |
45 | | - |
46 | | -The aggregator and resequencer can now discard the whole expired group as a single message via setting `discardIndividuallyOnExpiry` to `false`. |
47 | | -See xref:aggregator.adoc#releasestrategy[ReleaseStrategy] for more information. |
48 | | - |
49 | | -[[x6.5-message-store-with-locks]] |
50 | | -== The `LockRegistry` in the `MessageStore` |
51 | | - |
52 | | -The `AbstractMessageGroupStore` now can be configured with a `LockRegistry` to perform series of persistent operation atomically. |
53 | | -See xref:message-store.adoc#use-lock-registry[Use LockRegistry] for more information. |
54 | | - |
55 | | -[[x6.5-observation-changes]] |
56 | | -== Micrometer Observation Changes |
57 | | - |
58 | | -The `SourcePollingChannelAdapter` endpoint now starts a `CONSUMER` kind observation for the received message. |
59 | | -The `MessageReceiverContext` now distinguishes between `handler`, `message-source` and `message-producer` values for the `spring.integration.type` low cardinality tag. |
60 | | -See xref:metrics.adoc#micrometer-observation[Micrometer Observation] for more information. |
61 | | - |
62 | | -[[x6.5-mqtt-changes]] |
63 | | -== Optional Paho MQTT Dependencies |
64 | | - |
65 | | -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. |
66 | | -See xref:mqtt.adoc[MQTT Support] for more information. |
67 | | - |
68 | | -[[x6.5-kafka-changes]] |
69 | | -== Apache Kafka support Changes |
70 | | - |
71 | | -The `KafkaMessageSource` and `KafkaMessageDrivenChannelAdapter` now generate `MessageHeaders.ID` and `MessageHeaders.TIMESTAMP` headers by default as the rest of Spring Integration channel adapters. |
72 | | -The behavior can be restored to the previous with injection of the `MessagingMessageConverter` with default settings. |
73 | | -See xref:kafka.adoc[Apache Kafka Support] for more information. |
74 | | - |
75 | | -[[x6.5-file-filter-changes]] |
76 | | -== The Recent File Filter Support |
77 | | - |
78 | | -The `AbstractRecentFileListFilter` strategy has been introduced to accept only those files which are not old enough according to the provided `age`. |
79 | | -The respective implementations are provided: `RecentFileListFilter`, `FtpRecentFileListFilter`, `SftpRecentFileListFilter` and `SmbRecentFileListFilter`. |
80 | | -See xref:file/reading.adoc[Reading Files] for more information. |
81 | | - |
82 | | -[[x6.5-file-exists-mode-expression]] |
83 | | -== FileExistsMode Expression Support |
84 | | - |
85 | | -The remote file gateways (`AbstractRemoteFileOutboundGateway`) now support dynamic resolution of `FileExistsMode` at runtime via SpEL expressions. |
86 | | -See xref:ftp/rft.adoc[Remote File Gateways] for more information. |
87 | | - |
88 | | -[[x6.5-hazelcast-changes]] |
89 | | -== Hazelcast Module Deprecations |
90 | | - |
91 | | -The `HazelcastLockRegistry` and Hazelcast `LeaderInitiator` have been deprecated due to Hazelcast CP Subsystem migration to Enterprise Edition. |
92 | | -See xref:hazelcast.adoc[Hazelcast Support] for more information. |
93 | | - |
94 | | -[[x6.5-jdbc-changes]] |
95 | | -== JDBC Support |
96 | | - |
97 | | -The `BeanPropertySqlParameterSourceFactory` uses now internally the `MapSqlParameterSource` if provided input is a `Map`. |
98 | | -Also, `JdbcMessageHandler` exposes a `usePayloadAsParameterSource` flag to allow to deal with parameter source only against message payload. |
99 | | -That's where the mentioned `MapSqlParameterSource` comes useful for request messages with map payloads. |
100 | | -See xref:jdbc.adoc[JDBC Support] for more information. |
101 | | - |
102 | | -[[x6.5-redis-changes]] |
103 | | -== Redis Stream Support |
104 | | - |
105 | | -The `ReactiveRedisStreamMessageHandler` now exposes a `Function<Message<?>, RedisStreamCommands.XAddOptions>` to provide additional `XADD` option via convenient `RedisStreamCommands.XAddOptions` API. |
106 | | -See xref:redis.adoc#redis-stream-outbound[Redis Support] for more information. |
0 commit comments