Skip to content

Commit

Permalink
Move 5.3 changes to history
Browse files Browse the repository at this point in the history
  • Loading branch information
artembilan committed May 26, 2020
1 parent 5562097 commit 8ba27f6
Show file tree
Hide file tree
Showing 3 changed files with 167 additions and 162 deletions.
162 changes: 162 additions & 0 deletions src/reference/asciidoc/changes-5.2-5.3.adoc
@@ -0,0 +1,162 @@
[[migration-5.2-5.3]]
=== Changes between 5.2 and 5.3

[[x5.3-new-components]]
=== New Components

[[x5.3-integration-pattern]]
==== Integration Pattern

The `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 <<./graph.adoc#integration-graph,Integration Graph>> for more information about this abstraction and its use-cases.

[[x5.3-reactive-message-handler]]
==== `ReactiveMessageHandler`

The `ReactiveMessageHandler` is now natively supported in the framework.
See <<./reactive-streams.adoc#reactive-message-handler,ReactiveMessageHandler>> for more information.


[[x5.3-reactive-message-source-producer]]
==== `ReactiveMessageSourceProducer`

The `ReactiveMessageSourceProducer` is a reactive implementation of the `MessageProducerSupport` to wrap a provided `MessageSource` into a `Flux` for on demand `receive()` calls.
See <<./reactive-streams.adoc#reactive-streams,Reactive Streams Support>> for more information.

[[x5.3-java-dsl-extensions]]
==== Java DSL Extensions

A new `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 `IntegrationComponentSpec` extensions.
See <<./dsl.adoc#java-dsl-extensions,DSL Extensions>> for more information.

[[x5.3-kotlin-dsl]]
==== Kotlin DSL

The Kotlin DSL for integration flow configurations has been introduced.
See <<./kotlin-dsl.adoc#kotlin-dsl,Kotlin DSL Chapter>> for more information.

[[x5.3-reactive-request-handler-advice]]
==== ReactiveRequestHandlerAdvice

A `ReactiveRequestHandlerAdvice` is provided to customize `Mono` replies from message handlers.
See <<./handler-advice.adoc#reactive-advice,Reactive Advice>> for more information.

[[x5.3-handle-message-advice-adapter]]
==== HandleMessageAdviceAdapter

A `HandleMessageAdviceAdapter` is provided to wrap any `MethodInterceptor` for applying on the `MessageHandler.handleMessage()` instead of a default `AbstractReplyProducingMessageHandler.RequestHandler.handleRequestMessage()` behavior.
See <<./handler-advice.adoc#handle-message-advice,Handling Message Advice>> for more information.

[[x5.3-mongodb-reactive-channel-adapters]]
==== MongoDB Reactive Channel Adapters

The `spring-integration-mongodb` module now provides channel adapter implementations for the Reactive MongoDb driver support in Spring Data.
Also, a reactive implementation for MongoDb change stream support is present with the `MongoDbChangeStreamMessageProducer`.
See <<./mongodb.adoc#mongodb,MongoDB Support>> for more information.

[[x5.3-receive-message-advice]]
==== ReceiveMessageAdvice

A special `ReceiveMessageAdvice` has been introduced to proxy exactly `MessageSource.receive()` or `PollableChannel.receive()`.
See <<./polling-consumer.adoc#smart-polling,Smart Polling>> for more information.

[[x5.3-general]]
=== General Changes

The gateway proxy now doesn't proxy `default` methods by default.
See <<./gateway.adoc#gateway-calling-default-methods,Invoking `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 <<./graph.adoc#integration-graph,Integration Graph>> for more information.

In the aggregator, when the `MessageGroupProcessor` returns a `Message`, the `MessageBuilder.popSequenceDetails()` is performed on the output message if the `sequenceDetails` matches the header in the first message of the group.
See <<./aggregator.adoc#aggregator-api,Aggregator Programming Model>> for more information.

A new `publishSubscribeChannel()` operator, based on the `BroadcastCapableChannel` and `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 `SubscribableJmsChannel`, `SubscribableRedisChannel` etc.
See <<./dsl.adoc#java-dsl-subflows,Sub-flows support>> for more information.

Transactional support in Spring Integration now also includes options to configure a `ReactiveTransactionManager` if a `MessageSource` or `MessageHandler` implementation produces a reactive type for payload to send.
See `TransactionInterceptorBuilder` for more information.
See also <<./transactions.adoc#reactive-transactions,Reactive Transactions>>.

A new `intercept()` operator to register `ChannelInterceptor` instances without creating explicit channels was added into Java DSL.
See <<./dsl.adoc#java-dsl-intercept,Operator intercept()>> for more information.

The `MessageStoreSelector` has a new mechanism to compare an old and new value.
See <<./handler-advice.adoc#idempotent-receiver,Idempotent Receiver Enterprise Integration Pattern>> for more information.

The `MessageProducerSupport` base class now has a `subscribeToPublisher(Publisher<? extends Message<?>>)` API to allow implementation of message-driven producer endpoints which emit messages via reactive `Publisher`.
See <<./reactive-streams.adoc#reactive-streams,Reactive Streams Support>> for more information.

[[x5.3-amqp]]
=== AMQP Changes

The outbound channel adapter has a new property `multiSend` allowing multiple messages to be sent within the scope of one `RabbitTemplate` invocation.
See <<./amqp.adoc#amqp-outbound-channel-adapter,AMQP Outbound Channel Adapter>> for more information.

The inbound channel adapter now supports a listener container with the `consumerBatchEnabled` property set to `true`.
See <<./amqp.adoc#amqp-inbound-channel-adapter,AMQP Inbound Channel Adapter>>

[[x5.3-http]]
=== HTTP Changes

The `encodeUri` property on the `AbstractHttpRequestExecutingMessageHandler` has been deprecated in favor of newly introduced `encodingMode`.
See `DefaultUriBuilderFactory.EncodingMode` JavaDocs and <<./http.adoc#http-uri-encoding,Controlling URI Encoding>> for more information.
This also affects `WebFluxRequestExecutingMessageHandler`, respective Java DSL and XML configuration.
The same option is added into an `AbstractWebServiceOutboundGateway`.

[[x5.3-ws]]
=== Web Services Changes

Java DSL support has been added for Web Service components.
The `encodeUri` property on the `AbstractWebServiceOutboundGateway` has been deprecated in favor of newly introduced `encodingMode` - similar to HTTP changes above.
See <<./ws.adoc#ws,Web Services Support>> for more information.

[[x5.3-tcp]]
=== TCP Changes

The `FailoverClientConnectionFactory` no longer fails back, by default, until the current connection fails.
See <<./ip.adoc#failover-cf,TCP Failover Client Connection Factory>> for more information.

The `TcpOutboundGateway` now supports asynchronous request/reply.
See <<./ip.adoc#tcp-gateways,TCP Gateways>> for more information.

You can now configure client connections to perform some arbitrary test on new connections.
See <<./ip.adoc#testing-connections,Testing Connections>> for more information.

[[x5.3-rsocket]]
=== RSocket Changes

A `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.adoc#rsocket-inbound,RSocket Inbound Gateway>> for more information.

[[x5.3-zookeeper]]
=== Zookeeper Changes

A `LeaderInitiatorFactoryBean` (as well as its XML `<int-zk:leader-listener>`) exposes a `candidate` option for more control over a `Candidate` configuration.
See <<./zookeeper.adoc#zk-leadership,Leadership event handling>> for more information.

[[x5.3-mqtt]]
=== MQTT Changes

The inbound channel adapter can now be configured to provide user control over when a message is acknowledged as being delivered.
See <<./mqtt.adoc#mqtt-ack-mode,Manual Acks>> for more information.

The outbound adapter now publishes a `MqttConnectionFailedEvent` when a connection can't be created, or is lost.
Previously, only the inbound adapter did so.
See <<./mqtt.adoc#mqtt-events,MQTT Events>>.

[[x5.3-sftp]]
=== (S)FTP Changes

The `FileTransferringMessageHandler` (for FTP and SFTP, for example) in addition to `File`, `byte[]`, `String` and `InputStream` now also supports an `org.springframework.core.io.Resource`.
See <<./sftp.adoc#sftp,SFTP Support>> and <<./ftp.adoc#ftp,FTP Support>> for more information.

[[x5.3-file]]
=== File Changes

The `FileSplitter` doesn't require a Jackson processor (or similar) dependency any more for the `markersJson` mode.
It uses a `SimpleJsonSerializer` for a straightforward string representation of the `FileSplitter.FileMarker` instances.
See <<./file.adoc#file-splitter,FileSplitter>> for more information.
2 changes: 2 additions & 0 deletions src/reference/asciidoc/history.adoc
Expand Up @@ -2,6 +2,8 @@
== Change History

// BE SURE TO PRECEDE ALL include:: with a blank line - see https://github.com/asciidoctor/asciidoctor/issues/1297
include::./changes-5.2-5.3.adoc[]

include::./changes-5.1-5.2.adoc[]

include::./changes-5.0-5.1.adoc[]
Expand Down
165 changes: 3 additions & 162 deletions src/reference/asciidoc/whats-new.adoc
Expand Up @@ -2,172 +2,13 @@
= What's New?

[[spring-integration-intro-new]]
For those who are already familiar with Spring Integration, this chapter provides a brief overview of the new features of version 5.3.
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 <<./history.adoc#history,Change History>>.

[[whats-new]]

== What's New in Spring Integration 5.3?
== 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.3 development process.
If you are interested in more details, see the Issue Tracker tickets that were resolved as part of the 5.4 development process.

[[x5.3-new-components]]
=== New Components

[[x5.3-integration-pattern]]
==== Integration Pattern

The `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 <<./graph.adoc#integration-graph,Integration Graph>> for more information about this abstraction and its use-cases.

[[x5.3-reactive-message-handler]]
==== `ReactiveMessageHandler`

The `ReactiveMessageHandler` is now natively supported in the framework.
See <<./reactive-streams.adoc#reactive-message-handler,ReactiveMessageHandler>> for more information.


[[x5.3-reactive-message-source-producer]]
==== `ReactiveMessageSourceProducer`

The `ReactiveMessageSourceProducer` is a reactive implementation of the `MessageProducerSupport` to wrap a provided `MessageSource` into a `Flux` for on demand `receive()` calls.
See <<./reactive-streams.adoc#reactive-streams,Reactive Streams Support>> for more information.

[[x5.3-java-dsl-extensions]]
==== Java DSL Extensions

A new `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 `IntegrationComponentSpec` extensions.
See <<./dsl.adoc#java-dsl-extensions,DSL Extensions>> for more information.

[[x5.3-kotlin-dsl]]
==== Kotlin DSL

The Kotlin DSL for integration flow configurations has been introduced.
See <<./kotlin-dsl.adoc#kotlin-dsl,Kotlin DSL Chapter>> for more information.

[[x5.3-reactive-request-handler-advice]]
==== ReactiveRequestHandlerAdvice

A `ReactiveRequestHandlerAdvice` is provided to customize `Mono` replies from message handlers.
See <<./handler-advice.adoc#reactive-advice,Reactive Advice>> for more information.

[[x5.3-handle-message-advice-adapter]]
==== HandleMessageAdviceAdapter

A `HandleMessageAdviceAdapter` is provided to wrap any `MethodInterceptor` for applying on the `MessageHandler.handleMessage()` instead of a default `AbstractReplyProducingMessageHandler.RequestHandler.handleRequestMessage()` behavior.
See <<./handler-advice.adoc#handle-message-advice,Handling Message Advice>> for more information.

[[x5.3-mongodb-reactive-channel-adapters]]
==== MongoDB Reactive Channel Adapters

The `spring-integration-mongodb` module now provides channel adapter implementations for the Reactive MongoDb driver support in Spring Data.
Also, a reactive implementation for MongoDb change stream support is present with the `MongoDbChangeStreamMessageProducer`.
See <<./mongodb.adoc#mongodb,MongoDB Support>> for more information.

[[x5.3-receive-message-advice]]
==== ReceiveMessageAdvice

A special `ReceiveMessageAdvice` has been introduced to proxy exactly `MessageSource.receive()` or `PollableChannel.receive()`.
See <<./polling-consumer.adoc#smart-polling,Smart Polling>> for more information.

[[x5.3-general]]
=== General Changes

The gateway proxy now doesn't proxy `default` methods by default.
See <<./gateway.adoc#gateway-calling-default-methods,Invoking `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 <<./graph.adoc#integration-graph,Integration Graph>> for more information.

In the aggregator, when the `MessageGroupProcessor` returns a `Message`, the `MessageBuilder.popSequenceDetails()` is performed on the output message if the `sequenceDetails` matches the header in the first message of the group.
See <<./aggregator.adoc#aggregator-api,Aggregator Programming Model>> for more information.

A new `publishSubscribeChannel()` operator, based on the `BroadcastCapableChannel` and `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 `SubscribableJmsChannel`, `SubscribableRedisChannel` etc.
See <<./dsl.adoc#java-dsl-subflows,Sub-flows support>> for more information.

Transactional support in Spring Integration now also includes options to configure a `ReactiveTransactionManager` if a `MessageSource` or `MessageHandler` implementation produces a reactive type for payload to send.
See `TransactionInterceptorBuilder` for more information.
See also <<./transactions.adoc#reactive-transactions,Reactive Transactions>>.

A new `intercept()` operator to register `ChannelInterceptor` instances without creating explicit channels was added into Java DSL.
See <<./dsl.adoc#java-dsl-intercept,Operator intercept()>> for more information.

The `MessageStoreSelector` has a new mechanism to compare an old and new value.
See <<./handler-advice.adoc#idempotent-receiver,Idempotent Receiver Enterprise Integration Pattern>> for more information.

The `MessageProducerSupport` base class now has a `subscribeToPublisher(Publisher<? extends Message<?>>)` API to allow implementation of message-driven producer endpoints which emit messages via reactive `Publisher`.
See <<./reactive-streams.adoc#reactive-streams,Reactive Streams Support>> for more information.

[[x5.3-amqp]]
=== AMQP Changes

The outbound channel adapter has a new property `multiSend` allowing multiple messages to be sent within the scope of one `RabbitTemplate` invocation.
See <<./amqp.adoc#amqp-outbound-channel-adapter,AMQP Outbound Channel Adapter>> for more information.

The inbound channel adapter now supports a listener container with the `consumerBatchEnabled` property set to `true`.
See <<./amqp.adoc#amqp-inbound-channel-adapter,AMQP Inbound Channel Adapter>>

[[x5.3-http]]
=== HTTP Changes

The `encodeUri` property on the `AbstractHttpRequestExecutingMessageHandler` has been deprecated in favor of newly introduced `encodingMode`.
See `DefaultUriBuilderFactory.EncodingMode` JavaDocs and <<./http.adoc#http-uri-encoding,Controlling URI Encoding>> for more information.
This also affects `WebFluxRequestExecutingMessageHandler`, respective Java DSL and XML configuration.
The same option is added into an `AbstractWebServiceOutboundGateway`.

[[x5.3-ws]]
=== Web Services Changes

Java DSL support has been added for Web Service components.
The `encodeUri` property on the `AbstractWebServiceOutboundGateway` has been deprecated in favor of newly introduced `encodingMode` - similar to HTTP changes above.
See <<./ws.adoc#ws,Web Services Support>> for more information.

[[x5.3-tcp]]
=== TCP Changes

The `FailoverClientConnectionFactory` no longer fails back, by default, until the current connection fails.
See <<./ip.adoc#failover-cf,TCP Failover Client Connection Factory>> for more information.

The `TcpOutboundGateway` now supports asynchronous request/reply.
See <<./ip.adoc#tcp-gateways,TCP Gateways>> for more information.

You can now configure client connections to perform some arbitrary test on new connections.
See <<./ip.adoc#testing-connections,Testing Connections>> for more information.

[[x5.3-rsocket]]
=== RSocket Changes

A `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.adoc#rsocket-inbound,RSocket Inbound Gateway>> for more information.

[[x5.3-zookeeper]]
=== Zookeeper Changes

A `LeaderInitiatorFactoryBean` (as well as its XML `<int-zk:leader-listener>`) exposes a `candidate` option for more control over a `Candidate` configuration.
See <<./zookeeper.adoc#zk-leadership,Leadership event handling>> for more information.

[[x5.3-mqtt]]
=== MQTT Changes

The inbound channel adapter can now be configured to provide user control over when a message is acknowledged as being delivered.
See <<./mqtt.adoc#mqtt-ack-mode,Manual Acks>> for more information.

The outbound adapter now publishes a `MqttConnectionFailedEvent` when a connection can't be created, or is lost.
Previously, only the inbound adapter did so.
See <<./mqtt.adoc#mqtt-events,MQTT Events>>.

[[x5.3-sftp]]
=== (S)FTP Changes

The `FileTransferringMessageHandler` (for FTP and SFTP, for example) in addition to `File`, `byte[]`, `String` and `InputStream` now also supports an `org.springframework.core.io.Resource`.
See <<./sftp.adoc#sftp,SFTP Support>> and <<./ftp.adoc#ftp,FTP Support>> for more information.

[[x5.3-file]]
=== File Changes

The `FileSplitter` doesn't require a Jackson processor (or similar) dependency any more for the `markersJson` mode.
It uses a `SimpleJsonSerializer` for a straightforward string representation of the `FileSplitter.FileMarker` instances.
See <<./file.adoc#file-splitter,FileSplitter>> for more information.

0 comments on commit 8ba27f6

Please sign in to comment.