For those who are already familiar with Spring Integration, this chapter provides a brief overview of the new features of version 6.0.
If you are interested in the changes and features that were introduced in earlier versions, see the Change History.
If you are interested in more details, see the Issue Tracker tickets that were resolved as part of the 6.0 development process.
In general the project has been moved to Java 17 baseline and migrated from Java EE to Jakarta EE.
A Groovy DSL implementation for integration flow definitions has been added. See Groovy DSL for more information.
A new MQTT
ClientManager has been added to support a reusable MQTT connection across different channel adapters.
See Shared MQTT Client Support for more information.
The GraphQL support has been added. See GraphQL Support for more information.
Support for Apache Camel routes has been introduced. See Apache Camel Support for more information.
The Hazelcast Spring Integration Extensions project has been migrated as the
See Hazelcast Support for more information.
SMB support has been added from the Spring Integration Extensions project.
The Java DSL (see
org.springframework.integration.smb.dsl.Smb factory) also has been added to this module.
SmbOutboundGateway implementation are introduced.
See SMB Support for more information.
PostgresSubscribableChannel allows to receive push notifications via
PostgresChannelMessageTableSubscriber upon new messages add to the
See PostgreSQL: Receiving Push Notifications for more information.
The AMQP module has been enhanced to provide support for inbound and outbound channel adapters using RabbitMQ Stream Queues. See RabbitMQ Stream Queue Support for more information.
The SFTP modules has been fully reworked from outdated JCraft JSch library to more robust and modern
org.apache.sshd:sshd-sftp module of the Apache MINA project.
See SFTP Adapters for more information.
Enabling observation for timers and tracing using Micrometer is now supported. See Micrometer Observation for more information.
The Scripting module now provides a
PolyglotScriptExecutor implementation based on the GraalVM Polyglot support.
See Scripting Support for more information.
The Apache Cassandra Spring Integration Extensions project has been migrated as the
See Apache Cassandra Support for more information.
Kotlin Coroutines support has been introduced to the framework.
See Kotlin Coroutines for more information.
Support for creating GraalVM native images is provided. See Native Images Support for more information.
The messaging annotations are now
@Repeatable and the same type can be declared several times on the same service method.
The messaging annotations don’t require a
poller attribute as an array of
See Annotation Support for more information.
For convenience, the XML and Java DSL for Scatter-Gather, based on the
RecipientListRouter, now sets an
applySequence = true, so the gatherer part can rely on the default correlation strategies.
See Scatter-Gather for more information.
Another convenient behavior change has been made to the
Now, setting a
defaultOutputChannel also resets the
channelKeyFallback property to
false, so no attempts will be made to resolve a channel from its key, but the logic immediately falls back to sending the message to the
See Router Options for more information.
AggregatingMessageHandler now does not split a
Collection<Message<?>> result of the
MessageGroupProcessor (unless it is a
SimpleMessageGroupProcessor) on the output, but emits a single message containing this whole collection as a payload.
See Aggregator for more information.
IntegrationFlows factory is now marked as deprecated in favor of the fluent API available in the
IntegrationFlow interface itself.
The factory class will be removed in the future releases.
See Java DSL for more information.
org.springframework.util.concurrent.ListenableFuture has been deprecated starting with Spring Framework
All Spring Integration async API has been migrated to the
The Messaging Gateway interface method can now return
Mono<Void> with a proper asynchronous execution of the downstream flow.
Alongside with a
@MessagingGateway annotation the interface can also be marked with a
@MessagingGateway interfaces can now be use as an
@Import resources for configuration.
The default naming strategy for gateway proxy beans can be customized via
AnnotationConfigUtils.CONFIGURATION_BEAN_NAME_GENERATOR bean is present, it is consulted otherwise before falling back to the
See Messaging Gateway for more information.
integrationGlobalProperties bean is now declared by the framework as an instance of
org.springframework.integration.context.IntegrationProperties instead of the previously deprecated
Message handlers which produce a collection as a reply (e.g.
JdbcOutboundGateway and other DB-based gateways) now return an empty result list if no records are returned by the query.
null was returned ending the flow, or throwing an exception, depending on
spring-integration-rmi module has been removed altogether after being deprecated in previous versions.
There is no replacement: it is recommended to migrate to more secure network and application protocols, such as WebSockets, RSockets, gRPC or REST.
spring-integration-gemfire module has been removed altogether since there is no Spring Data
2022.0.0 support for VMware GemFire or Apache Geode.
#cookies variable for expression evaluation context, exposed in the
HttpRequestHandlingEndpointSupport, is now a
MultiValueMap to carry all the values for cookies set by the client.
See HTTP Support for more information.
When providing a
RetryTemplate on the inbound gateway or message-driven channel adapter, if an
errorChannel is also provided, an
ErrorMessageSendingRecoverer is automatically configured.
In addition, the new
KafkaErrorMessageSendingRecoverer is provided; this can be used with a
DefaultErrorHandler to avoid issues with long aggregated retry delays causing partitions rebalances.
See Spring for Apache Kafka Support for more information.
DefaultLockRepository can now be supplied with a
PlatformTransactionManager instead of relying on the primary bean from the application context.
See JDBC Lock Registry for more information.
lookupHost property of the
DatagramPacketMessageMapper is now set to
false by default to avoid delays in the environments where DNS is not configured.
See TCP and UDP Support for more information.
JmsOutboundGateway now creates a
TemporaryTopic instead of
replyPubSubDomain option is set to
See JMS Support for more information.
ChannelSecurityInterceptor and its annotation
@SecuredChannel and XML
<secured-channels> configurations have been deprecated in favor of
See Security Support for more information.
Webclient Request attributes support has been added for
See WebFlux Request Attributes for more information.