Spring Integration5.5, as well as the Spring Integration5.4.7 patch GA version has been released.

Both versions are available from the Maven center, and it is recommended to upgrade the project or extract them from their latest Spring Boot patch versions.

The compile 'org. Springframework. Integration: spring - integration - the core: 5.5.0'Copy the code

The Spring Integration5.4.7 release mainly contains key bug fixes. The following are the obvious changes to Spring Integration5.5, which are generally based on community feedback to make the framework useful for end-user usage.

  • Support for Spring Native compatibility — many Bean definitions have been redesigned for a functional style, which even improves startup time for normal JVM applications.

  • The FileAggregator component was introduced. See its JavaDocs for more information.

  • All persistent MessageGroupStore implementations provide a streamMessagesForGroup(Object groupId) contract based on the target database flow API.

  • IntegrationGlobalProperties custom bean must now is org springframework. Integration. Context. IntegrationProperties instance, Instead of the deprecated java.util.properties representation. All of these integration properties are now exposed as auto-configuration properties in Spring Boot.

  • AbstractPollingEndpoint’s maxMessagesPerPoll == 0 is now considered to skip the call source.

  • The @reactive child annotation has been introduced for the annotation configuration to apply Function
    >,? extends Publisher

    >> reactiveCustomizer and make it a reaction independent of the input channel. In the Java DSL can through ConsumerEndpointSpec. Reactive () option to achieve the same behavior.
    >

  • The MongoDb message source now has an optional Update to mark documents that have just been extracted from the collection.

  • Channel adapters based on WebSocket server endpoints can now be registered (and removed) at run time.

  • The MessageGroup abstraction now has a condition attribute that can be looked up later, rather than an iteration of the entire group. AbstractCorrelatingMessageHandler, in turn, exposing a BiFunction < Message
    , String, String> conditionSupplier, which extracts possible group conditions from the message being processed.

  • DelayHandler registered a TransactionSynchronization now, only in the current transaction commit time to arrange a delay task.

  • The GreenMail library is now being used for E-mail integration testing.

See “What’s New” in the documentation for more information. Be sure to check the “Migration Guide” as upgrading can cause some disruptive changes.

What ‘s New

A new component

File aggregator

An implementation of CorrelationStrategy, ReleaseStrategy and MessageGroupProcessor based on filesplitter. FileMaker is introduced as a component of FileAggregator. See file aggregators for more information.

General change

All persistent MessageGroupStore implementations provide a streamMessagesForGroup(Object groupId) contract based on the target database flow API. See Message Store for more information.

If integrationGlobalProperties Bean (declared) must now is org. Springframework. Integration. Context. IntegrationProperties instance, Instead of java.util.properties, which has been deprecated for backward compatibility. Added spring. Integration. Channels. Error. RequireSubscribers = true global properties, to indicate that global default errorChannel must configure requireSubscribers option (or configuration). Added spring. Integration. Channels. Error. IgnoreFailures = true global properties, to indicate that global default errorChannel must ignore (or ignore) scheduling error and pass the message to a handler. See Global Properties for more information.

An AbstractPollingEndpoint (source polling channel adapter and polling consumer) treats maxMessagesPerPoll == 0 as a skipped call source. It can be changed to a different value later, for example via the control bus. See polling Consumers for more information.

ConsumerEndpointFactoryBean now accept a reactiveCustomizer Function in response to any input channel current source, and USES a ReactiveStreamsConsumer below. This in Java DSL as a ConsumerEndpointSpec reactive () options and annotations of news as a @ reactive nested comments are covered. See Reaction Flow Support for more information.

The groupTimeoutExpression (an Aggregator and Resequencer) of the associated message handler can now be evaluated as a java.util.date for some fine-grained scheduling use cases. At the same time, BiFunction groupConditionSupplier options have been added to the AbstractCorrelatingMessageHandler, to provide a MessageGroup conditions of the message to be added to the group. See aggregators for more information.

The MessageGroup abstraction can provide a condition that can be evaluated later to make a decision for the group. See Message Group Conditions for more information.

It changes

AmqpInboundChannelAdapter and AmqpInboundGateway (and their respective Java DSL builder) now supports a org. Springframework. Closer. Rabbit. Retry. MessageRecoverer, as a general purpose RecoveryCallback it specific alternative. See AMQP Support for more information.

The change of Redis

ReactiveRedisStreamMessageProducer now with all StreamReceiver StreamReceiverOptionsBuilder option Settings, including a onErrorResume function. See Redis Support for more information.

HTTP changes

HttpRequestExecutingMessageHandler no longer back to application/x – Java – serialized – object content type, Instead, let the RestTemplate ultimately decide on the transformation of the request body based on the supplied HttpMessageConverter. It now also has an extractResponseBody flag (default true) that can return only the response body or the entire ResponseEntity as the payload of the reply message, independent of the supplied expectedResponseType. The same options appear on the WebFluxRequestExecutingMessageHandler. See HTTP Support for more information.

The file /FTP/SFTP is changed

The persistent file list filter now has a Boolean attribute forRecursion. Setting this property to true also sets alwaysAcceptDirectories, which means that recursive operations on the outbound gateway (ls and MGET) now traverse the entire directory tree each time. This is to solve the problem that changes deep in the directory tree cannot be detected. In addition, forRecursion=true causes the full path of the file to be used as the metadata store key; This solves a problem where the filter does not work properly if a file with the same name appears multiple times in different directories. Importantly: this means that existing keys in a persistent metadata store will not be found in files under the top-level directory. For this reason, the property defaults to false; This may change in future releases.

FileInboundChannelAdapterSpec now has a convenient recursive (Boolean) option, rather than needs RecursiveDirectoryScanner specifically referenced.

Directing a change

MongoDbMessageSourceSpec is added to the MongoDd Java DSL. In the now, and the realization of the ReactiveMongoDbMessageSource MongoDbMessageSource has an update options.

Web sockets to change

WebSocket channel adapters based on ServerWebSocketContainer can now be registered and removed at run time.