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

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 6.1?

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

In general the project has been moved to the latest dependency versions.

New Components

Zip Support

The Zip Spring Integration Extension project has been migrated as the spring-integration-zip module. See Zip Support for more information.


The ContextHolderRequestHandlerAdvice allows to store a value from a request message into some context around MessageHandler execution. See Context Holder Advice for more information.

The handleReactive() operator for Java DSL

The IntegrationFlow can now end with a convenient handleReactive(ReactiveMessageHandler) operator. See ReactiveMessageHandler for more information.


A new PartitionedChannel has been introduced to process messages with the same partition key in the same thread. See PartitionedChannel for more information.

General Changes

  • Added support for transforming to/from Protocol Buffers. See Protocol Buffers Transformers for more information.

  • The MessageFilter now emits a warning into logs when message is silently discarded and dropped. See Filter for more information.

  • The default timeout for send and receive operations in gateways and replying channel adapters has been changed from infinity to 30 seconds. Only one left as a 1 second is a receiveTimeout for PollingConsumer to not block a scheduler thread too long and let other queued tasks to be performed with the TaskScheduler.

  • The IntegrationComponentSpec.get() method has been deprecated with removal planned for the next version. Since IntegrationComponentSpec is a FactoryBean, its bean definition must stay as is without any target object resolutions. The Java DSL and the framework by itself will manage the IntegrationComponentSpec lifecycle. See Java DSL for more information.

  • The AbstractMessageProducingHandler is marked as an async by default if its output channel is configured to a ReactiveStreamsSubscribableChannel. See Asynchronous Service Activator for more information.

Web Sockets Changes

A ClientWebSocketContainer can now be configured with a predefined URI instead of a combination of uriTemplate and uriVariables. See WebSocket Overview for more information.

JMS Changes

The JmsInboundGateway, via its ChannelPublishingJmsMessageListener, can now be configured with a replyToExpression to resolve a reply destination against the request message at runtime. See JMS Inbound Gateway for more information.

Mail Changes

The (previously deprecated) ImapIdleChannelAdapter.sendingTaskExecutor property has been removed in favor of an asynchronous message process downstream in the flow. See Mail-receiving Channel Adapter for more information.

Files Changes

The FileReadingMessageSource now exposes watchMaxDepth and watchDirPredicate options for the WatchService. See WatchServiceDirectoryScanner for more information.

AMQP Changes

The Java DSL API for Rabbit Streams (the RabbitStream factory) exposes additional properties for simple configurations. See RabbitMQ Stream Queue Support for more information.

JDBC Changes

The DefaultLockRepository now exposes setters for insert, update and renew queries. See JDBC Lock Registry for more information.