For those who are already familiar with Spring Integration, this chapter provides a brief overview of the new features of version 5.3.
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 5.3 development process.
IntegrationPattern abstraction has been introduced to indicate which enterprise integration pattern (an
IntegrationPatternType) and category a Spring Integration component belongs to.
See its JavaDocs and Integration Graph for more information about this abstraction and its use-cases.
ReactiveMessageHandler is now natively supported in the framework.
See ReactiveMessageHandler for more information.
IntegrationFlowExtension API has been introduced to allow extension of the existing Java DSL with custom or composed EIP-operators.
This also can be used to introduce customizers for any out-of-the-box
See DSL Extensions for more information.
The Kotlin DSL for integration flow configurations has been introduced. See Kotlin DSL Chapter for more information.
ReactiveRequestHandlerAdvice is provided to customize
Mono replies from message handlers.
See Reactive Advice for more information.
spring-integration-mongodb module now provides channel adapter implementations for Reactive MongoDB driver support in Spring Data.
See MongoDB Reactive Channel Adapters for more information.
The gateway proxy now doesn’t proxy
default methods by default.
default Methods for more information.
Internal components (such as
_org.springframework.integration.errorLogger) now have a shortened name when they are represented in the integration graph.
See Integration Graph for more information.
In the aggregator, when the
MessageGroupProcessor returns a
MessageBuilder.popSequenceDetails() is performed on the output message if the
sequenceDetails matches the header in the first message of the group.
See Aggregator Programming Model for more information.
publishSubscribeChannel() operator, based on the
BroadcastPublishSubscribeSpec, was added into Java DSL.
This fluent API has its advantage when we configure sub-flows as pub-sub subscribers for broker-backed channels like
See Sub-flows support for more information.
Transactional support in Spring Integration now also includes options to configure a
ReactiveTransactionManager if a
MessageHandler implementation produces a reactive type for payload to send.
TransactionInterceptorBuilder for more information.
See also Reactive Transactions.
intercept() operator to register
ChannelInterceptor instances without creating explicit channels was added into Java DSL.
See Operator intercept() for more information.
The outbound channel adapter has a new property
multiSend allowing multiple messages to be sent within the scope of one
See AMQP Outbound Channel Adapter for more information.
The inbound channel adapter now supports a listener container with the
consumerBatchEnabled property set to
See AMQP Inbound Channel Adapter
encodeUri property on the
AbstractHttpRequestExecutingMessageHandler has been deprecated in favor of newly introduced
DefaultUriBuilderFactory.EncodingMode JavaDocs and Controlling URI Encoding for more information.
This also affects
WebFluxRequestExecutingMessageHandler, respective Java DSL and XML configuration.
The same option is added into an
Java DSL support has been added for Web Service components.
encodeUri property on the
AbstractWebServiceOutboundGateway has been deprecated in favor of newly introduced
encodingMode - similar to HTTP changes above.
See Web Services Support for more information.
FailoverClientConnectionFactory no longer fails back, by default, until the current connection fails.
See TCP Failover Client Connection Factory for more information.
decodeFluxAsUnit option has been added to the
RSocketInboundGateway with the meaning to decode incoming
Flux as a single unit or apply decoding for each event in it.
See RSocket Inbound Gateway for more information.
LeaderInitiatorFactoryBean (as well as its XML
<int-zk:leader-listener>) exposes a
candidate option for more control over a
See Leadership event handling for more information.