For those who are already familiar with Spring Integration, this chapter provides a brief overview of the new features of version 5.4.

If you are interested in the changes and features that were introduced in earlier versions, see the Change History.

What’s New in Spring Integration 5.4?

If you are interested in more details, see the Issue Tracker tickets that were resolved as part of the 5.4 development process.

New Components

Apache Kafka Channel Adapters

The standalone Spring Integration Kafka project has been merged as a spring-integration-kafka module to this project.

The KafkaProducerMessageHandler sendTimeoutExpression default has changed.

You can now access the Future<?> for underlying send() operations.

See Spring for Apache Kafka Support for more information.

R2DBC Channel Adapters

The Channel Adapters for R2DBC database interaction have been introduced. See R2DBC Support for more information.

Redis Stream Support

The Channel Adapters for Redis Stream support have been introduced. See Redis Stream Outbound Channel Adapter for more information.

Renewable Lock Registry

A Renewable lock registry has been introduced to allow renew lease of a distributed lock. See JDBC implementation for more information.

ZeroMQ Support

ZeroMqChannel, ZeroMqMessageHandler and ZeroMqMessageProducer have been introduced. See ZeroMQ Support for more information.

General Changes

The one-way messaging gateway (the void method return type) now sets a nullChannel explicitly into the replyChannel header to ignore any possible downstream replies. See Setting the Default Reply Channel for more information.

Also the gateway method invokers (GatewayProxyFactoryBean.MethodInvocationGateway) are now supplied with the managed bean name as a combination of gateway proxy bean name plus method signature. For example: sampleGateway#echo(String). This effects message history and metrics exposed for the gateway method calls and also give fine-grained logs during start and close of application context.

The aggregator (and resequencer) can now expire orphaned groups (groups in a persistent store where no new messages arrive after an application restart). See Aggregator Expiring Groups for more information.

The legacy metrics that were replaced by Micrometer meters have been removed.

The Thread Barrier has now two separate timeout options: requestTimeout and triggerTimeout.

TCP/UDP Changes

Connection factories now support multiple sending components (TcpSender); they remain limited to one receiving component (TcpListener). This allows, for example, an inbound gateway and outbound channel adapter to share the same factory, supporting both request/reply and arbitrary messaging from the server to the client. Shared factories should not be used with outbound gateways, unless single-use connections or the ThreadAffinityClientConnectionFactory are being used. See Collaborating Channel Adapters and TCP Gateways for more information.

The UDP channel adapters can now be configured with a SocketCustomizer which allows the setting of socket properties that are not directly supported by the adapters. See UDP Adapters for more information.

RMI Changes

The spring-integration-rmi module is deprecated with no replacement and is going to be removed in the next major version. See RMI Support for more information.

AMQP Changes

The outbound endpoints now have a new mechanism for handling publisher confirms and returns. See Alternative Mechanism for Publisher Confirms and Returns for more information.

A new BatchMode.EXTRACT_PAYLOAD_WITH_HEADERS is supported by the AmqpInboundChannelAdapter. See Inbound Channel Adapter for more information.

Mail Changes

The AbstractMailReceiver can now produce the MimeMessage as-is without eager fetching its content. See Mail-receiving Channel Adapter for more information.