|
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