close

Artem Bilan

Artem Bilan

Spring Integration Lead

Philadelphia, PA

Blog Posts by Artem Bilan

Spring Integration 5.3 RC1, 5.2.6 & 5.1.10 Available

I’m pleased to announce the first (and the last) release candidate for Spring Integration 5.3.

This release ships several bug fixes, a bunch of new features and improvements and will be picked up by Spring Boot 2.3 RC1.

It can be downloaded from our milestone repository:

compile 'org.springframework.integration:spring-integration-core:5.3.0.RC1'

The most important new features are:

  • The MongoDbChangeStreamMessageProducer - a reactive MessageProducerSupport implementation for the Spring Data ReactiveMongoOperations.changeStream(String, ChangeStreamOptions, Class) API. This component produces a Flux of messages with a body of ChangeStreamEvent as the payload by default and some change stream related headers (see MongoHeaders).

  • The ReactiveMessageSourceProducer - a reactive implementation of the MessageProducerSupport to wrap a provided MessageSource into a Flux for on demand receive() calls.

  • The ReceiveMessageAdvice - a former AbstractMessageSourceAdvice is graduated now to more common advice approach which can be used also for the PollableChannel.receive() proxying.

  • The TcpOutboundGateway now can work in an async mode - you’ll get an actual reply from the returned Future.

  • We also have applied a GitHub default community health. Check this out when you try to raise a new issue https://github.com/spring-projects/spring-integration/issues/new/choose!

See What’s New? in the Reference Manual for more information. Also see a blog post for the previous Milestone 3.

We’re looking forward to your feedback for upcoming GA in May!

In addition to this 5.3 RC1 we also have released maintenance versions - 5.2.6 & 5.1.10 with some bug fixes and upgrades. Based on Spring Integration 5.3 RC1 and Spring for Apache Kafka 2.5 RC1 a spring-integration-kafka-3.3.0.RC1 was also released to pick up improvements and new feature from its "parents".

Read more...

Spring Integration 5.3 Milestone 3 Available

I’m pleased to announce the third milestone for Spring Integration 5.3.

This release ships several bug fixes, a bunch of new features and improvements and will be picked up by Spring Boot 2.3 M3 in the near future.

It can be downloaded from our milestone repository:

compile "org.springframework.integration:spring-integration-core:5.3.0.M3"

The most important new features are:

  • Reactive transactions support. The ReactiveTransactionManager can now be configured for endpoints which produces reactive type for replies or just implement ReactiveMessageHandler.

  • ReactiveRequestHandlerAdvice - a MethodInterceptor for message handlers producing a Mono as a payload for reply. The BiFunction<Message<?>, Mono<?>, Publisher<?>> customized is applied for the returned Mono via Mono.transform(Function) operator to add some aspects into a produced result. Typically it is used for timeout, retry, tag options applied for the remote reactive requests, e.g. Webflux or RSocket.

  • Kotlin DSL. As we promised before, we have merged spring-integration-kotlin-dsl project into core one for general availability and for further possible improvements which are possible only with direct access to core Spring Integration classes. See org.springframework.integration.dsl.IntegrationFlowDsl.kt for more information.

  • Web Services Java DSL. With a lot of community requests the Java DSL components for Web Services modules has made it into project. See org.springframework.integration.ws.dsl.Ws for more information.

See What’s New? in the Reference Manual for more information.

We’re looking forward to your feedback for upcoming RC in April!

Read more...

Spring Integration 5.3 Milestone 2 Available

On behalf of the Spring Integration team, I’m pleased to announce the second milestone for Spring Integration 5.3.

This release ships several bug fixes, a bunch of new features and improvements and will be picked up by Spring Boot 2.3 M2 in the near future.

It can be downloaded from our milestone repository:

compile "org.springframework.integration:spring-integration-core:5.3.0.M2"

The most important new features are:

  • With the IntegrationFlowExtension implementation we now can right our own Java DSL for Spring Integration. It allows to introduce custom or composed EIP-operators. The existing IntegrationComponentSpec implementations can now be extended for additional (missed?) options. So, now any custom and reusable solutions in Java DSL can be implemented in the target project:

public class CustomIntegrationFlowDefinition
        extends IntegrationFlowExtension<CustomIntegrationFlowDefinition> {

    public CustomIntegrationFlowDefinition upperCaseAfterSplit() {
        return split()
                .transform("payload.toUpperCase()");
    }

    public CustomIntegrationFlowDefinition customAggregate(
                    Consumer<CustomAggregatorSpec> aggregator) {
        return register(new CustomAggregatorSpec(), aggregator);
    }

}

public class CustomAggregatorSpec extends AggregatorSpec {

    CustomAggregatorSpec() {
        outputProcessor(group ->
                group.getMessages()
                        .stream()
                        .map(Message::getPayload)
                        .map(String.class::cast)
                        .collect(Collectors.joining(", ")));
    }

}

@Bean
public IntegrationFlow customFlowDefinition() {
    return
            new CustomIntegrationFlowDefinition()
                    .log()
                    .upperCaseAfterSplit()
                    .channel("innerChannel")
                    .customAggregate(customAggregatorSpec ->
                            customAggregatorSpec.expireGroupsUponCompletion(true))
                    .logAndReply();
}
  • HTTP and WebFlux outbound channel adapters now support an UriBuilderFactory.EncodingMode option instead of previous`encodeUri` boolean flag.

  • The AMQP outbound channel adapter has a new property multiSend allowing multiple messages to be sent within the scope of one RabbitTemplate invocation.

  • The AMQP inbound channel adapter now supports a listener container with the consumerBatchEnabled property set to true.

See What’s New? in the Reference Manual for more information.

The next and last M3 milestone is scheduled for March before entering the RC phase in April. Expect an upgrade to the latest milestone releases: Spring Data Neumann, Spring Security 5.3 etc.

We’re looking forward to your feedback!

Read more...

Spring Integration 5.3 Milestone 1 Available

Dear Spring Community,

On behalf of the Spring Integration team I’m excited to announce that with the New Year we have some news to share with you. First of all, it is an honor to have taken over the lead role for the Spring Integration project. Gary Russell is still in the team and he leads Spring AMQP and Spring for Apache Kafka projects. Secondly we have just released the first milestone for Spring Integration of version 5.3.

It can be downloaded from our milestone repository:

compile "org.springframework.integration:spring-integration-core:5.3.0.M1"
Read more...

Spring Integration AWS 2.3.1 & Spring Cloud Stream Kinesis Binder 2.0.1 Available

Dear Spring Community,

Today it’s my pleasure to announce patch releases of Spring Integration for Amazon Web Services extension version 2.3.1 and Spring Cloud Stream Binder for AWS Kinesis version 2.0.1.

These releases can be downloaded from Maven Central, JCenter, and our release repository:

compile "org.springframework.integration:spring-integration-aws:2.3.1.RELEASE"

If you don’t use Kinesis Binder. Or via Binder dependency:

compile "org.springframework.cloud:spring-cloud-stream-binder-kinesis:2.0.1.RELEASE"
Read more...

Spring Integration AWS 2.3 GA and Spring Cloud Stream Kinesis Binder 2.0 GA Available

Dear Spring Community,

Today it’s my pleasure to announce General Availability of Spring Integration for Amazon Web Services extension version 2.3.0 and Spring Cloud Stream Binder for AWS Kinesis version 2.0.0.

These releases can be downloaded from Maven Central, JCenter, and our release repository:

compile "org.springframework.integration:spring-integration-aws:2.3.0.RELEASE"

If you don’t use Kinesis Binder. Or via Binder dependency:

compile "org.springframework.cloud:spring-cloud-stream-binder-kinesis:2.0.0.RELEASE"
Read more...

Spring Integration Extensions Releases

Dear Spring Community,

Following several requests from community members, it is my pleasure to announce that some Spring Integration Extensions have made it to their new generations and up-to-date dependencies. Of course, first of all, thank you everybody contributed, even if that was just a GitHub issue or StackOverflow question!

Below are highlights for those projects. All of them are available on Maven Central, JCenter and Spring Release repositories. Since all these projects are not a part of Spring Integration BOM (and they cannot be because of different release cycles) you have to specify their versions in your dependency management explicitly.

Read more...

Spring Cloud Stream - and Spring Integration.

If you listened to Oleg Zhurakousky's talk at Spring One Platform 2019 about Spring Cloud Stream & Functions or read his recent blog posts about Simplified Spring Cloud Stream and Functional Spring Cloud Stream, you may want to say: "Wait! What happened with Spring Integration support? What do I now do with my @ServiceActivator or IntegrationFlow? I used to deal with the Sink.input() as a channel to consume binder destination with some Spring Integration logic!" As Oleg mentions in his blog post, it is still possible with existing @EnableBinding and so on, but we are moving away from that model, so how can we still benefit from all the features of Spring Integration in the world of functional Spring Cloud Stream?

Read more...

Spring Integration 5.2 GA Available

Dear Spring Community,

On behalf of Spring Integration team I’m excited to announce that Spring Integration 5.2.0.RELEASE is available.

It can be downloaded from our release repository and Maven Central:

compile "org.springframework.integration:spring-integration-core:5.2.0.RELEASE"

What’s New in this generation?

  • RSocket Support - an RSocketInboundGateway and RSocketOutboundGateway are implemented for Reactive Streams support in the RSocket protocol. See spring-integration-rsocket module.

  • FluxAggregatorMessageHandler to produces window or buffer results based on the Project Reactor Flux grouping and windowing functionality.

  • RateLimiterRequestHandlerAdvice and CacheRequestHandlerAdvice are available for AOP aspects around MessageHandler.handleMessage().

  • JSR223 implementation for Kotlin Scripts has been added into spring-integration-scripting module.

  • The FTP and SFTP modules now provide an event listener for certain Apache Mina FTP/SFTP server events.

  • Simple Apache Avro transformers are now provided.

  • Many other improvements throughout the project.

See What’s New? in the Reference Manual and Migration Guide for more information and possible breaking changes.

Read more...

Spring Integration 5.2 Milestone 2 Available

On behalf of Spring Integration team I am pleased to announce that Spring Integration 5.2.0.M2 is available.

It can be downloaded from our milestone repository:

compile "org.springframework.integration:spring-integration-core:5.2.0.M2"

Highlights

  • The RSocket channel adapters are available now for full reactive network interaction between client and server. See spring-integration-rsocket module and RSocketInboundGateway & RSocketOutboundGateway JavaDocs, respectively

  • Kotlin Jsr223 scripting support has been added into spring-integration-scripting module

  • The CacheRequestHandlerAdvice was introduced to perform caching operations on the handleRequestMessage() method in the AbstractReplyProducingMessageHandler implementations

  • The RateLimiterRequestHandlerAdvice is also available for limiting access to the handleRequestMessage() method logic

  • The Splitter component now can be configured with a discardChannel to send those request messages for which a splitting function returns empty collection

  • The MailReceiver implementations can now be configured with the autoCloseFolder = false option to not close the mail folder just after fetching, allowing a proper mail message multi-part content processing

For more information see the What’s New chapter in the documentation and the change logs.

Any feedback, feature ideas, critics, bug reports and questions are welcome via appropriate communication channels:

Read more...