The Spring Blog

Engineering
Releases
News and Events

Spring Cloud Stream Chelsea.RC1 released

On behalf of the team, I am pleased to announce the release of Spring Cloud Stream Chelsea.RC1. Spring Cloud Stream Chelsea.RC1 is available for use in the Spring Milestone repository, and a detailed description of its features can be found in the reference documentation. For information about artifacts and a complete list of changes, please consult the release notes.

What is new?

Here’s a summary of the major new features and improvements brought by the new release:

Dispatching capabilities added to StreamListener

We’ve added support for dispatching messages to multiple @StreamListener methods registered on an input channel, based on a SpEL-based condition. This allows more flexibility in writing message-driven microservices, especially for DDD/ES/CQRS scenarios, where different types of events can be dispatched to their handling methods directly.

@EnableBinding(Sink.class)
@EnableAutoConfiguration
public static class {

    @StreamListener(target = Sink.INPUT, condition = "headers['type']=='customer'")
    public void handleCustomerEvent(@Payload CustomerEvent customerEvent) {
       // handle the message
    }

    @StreamListener(target = Sink.INPUT, condition = "headers['type']=='order'")
    public void handleOrderEvent(@Payload OrderEvent orderEvent) {
       // handle the message
    }
}

Metrics

Spring Cloud Stream has added an additional module that enables the export of Spring Boot metrics on a dedicated channel. You can now collect metrics from your applications by simply adding the module on the classpath and providing a target destination as described in the reference documentation. By default, the module exports Spring Integration metrics (including bound channel metrics), but other metrics can be added as well. This enables first class support for traffic monitoring in Spring Cloud Stream applications.

Schema improvements: search and caching

New features for schema support include schema searching and client-level caching, the latter adding significant performance improvements to the serialization support.

RabbitMQ custom infrastructure support

The RabbitMQ binder now supports customizing the types of destinations and their attributes, including support for Direct Exchanges and TTL settings for messages.

Provisioning SPI

Starting with this release, Spring Cloud Stream introduces a new provisioning SPI, abstracting the creation and configuration of destinations (topics, exchanges, queue) on the target brokers. This allows better separation of concerns between the infrastructure management and messaging aspects of a binder.

Read more...

Spring Vault 1.0 RC1 is now available

On behalf of the community, I am pleased to announce Spring Vault 1.0 RC1.

The artifacts are available in the Milestone repo.

Spring Vault includes 15 fixes, improvements and dependency upgrades.

Here’s a short-list of the most important features shipping with the release:

  • Support for renewable @VaultPropertySource with credentials rotation
  • Reshaping APIs dropping VaultClient and using RestTemplate instead
  • Added EnvironmentVaultConfiguration for simplified configuration without the need to create a derived configuration class.
Read more...

Spring Cloud Camden.SR6 is available

On behalf of the team, I am pleased to announce that Service Release 6 of the Spring Cloud Camden Release Train is available today. The release can be found in our Spring Release repository and Maven Central. The documentation can be found here.

NOTE: There was an upstream fix in Spring Cloud Streams that fixes issues with Spring Cloud Bus, Hystrix, and Turbine. See this issue for more information.

The following modules were updated as part of Camden.SR6:

Read more...

Spring Integration Extension for AWS 1.1.0 M1 Available

On behalf of the Spring Integration community I’d like to announce the first Milestone of Spring Integration Extension for Amazon Web Services version 1.1. Its artifact is spring-integration-aws.1.1.0.M1, which is available in the Milestone Repository.

Of course, first of all, big thanks to you, the community, for your contributions!

Some highlights of the features included to this Milestone:

Kinesis Support

The KinesisMessageDrivenChannelAdapter and KinesisMessageHandler are provided to integrate with the Amazon Kinesis. The former is pretty simple and allow to emit data into a Kinesis stream. All the information for the target PutRecordRequest can be determined from the request Message:

@Bean
@ServiceActivator(inputChannel = "kinesisSendChannel")
public MessageHandler kinesisMessageHandler() {
    KinesisMessageHandler kinesisMessageHandler =
                new KinesisMessageHandler(amazonKinesis());
    kinesisMessageHandler.setAsyncHandler(asyncHandler());
    kinesisMessageHandler.setStream("my_stream");
    kinesisMessageHandler.
             setPartitionKeyExpressionString("headers[aws_partitionKey]");
    return kinesisMessageHandler;
}

By default it uses SerializingConverter to convert the request data to the byte[]. The com.amazonaws.handlers.AsyncHandler can be used for asynchronous putRecordAsync() result reaction.

The KinesisMessageDrivenChannelAdapter provides a comprehensive Kinesis stream data ingestion implementation, including sequenceNumber checkpointing and resharding support. The concurrency option can be used for strict order records processing in the downstream flow. The provided shards are distributed between threads in that case. If concurrency isn’t provided, internal ShardConsumer s are performed on the consumerExecutor directly:

@Bean
public KinesisMessageDrivenChannelAdapter kinesisMessageDrivenChannelAdapter() {
    KinesisMessageDrivenChannelAdapter adapter =
            new KinesisMessageDrivenChannelAdapter(amazonKinesis(), STREAM1);
    adapter.setOutputChannel(kinesisChannel());
    adapter.setCheckpointStore(checkpointStore());
    adapter.setCheckpointMode(CheckpointMode.manual);
    adapter.setListenerMode(ListenerMode.batch);
    adapter.setStartTimeout(10000);
    adapter.setDescribeStreamRetries(1);
    adapter.setConcurrency(10);
    return adapter;
}

If CheckpointMode is manual, the AwsHeaders.CHECKPOINTER message header is populated to each emitted message. It is an instance of Checkpointer and its checkpoint() can be used in the downstream flow to checkpoint a sequenceNumber for processed records in the shard.

Note
The Amazon Kinesis Channel Adapters implementation is fully based on the standard aws-java-sdk-kinesis API and doesn’t use Kinesis Client Library.
Read more...

Spring IO Platform Brussels-SR1

I am pleased to announce that Spring IO Platform Brussels-SR1 is now available from both repo.spring.io and Maven Central.

This maintenance release upgrades the versions of a number of the projects in the Platform:

  • Spring AMQP 1.7.1
  • Spring Boot 1.5.2
  • Spring Data Ingalls SR1
  • Spring Framework 4.3.7
  • Spring Integration 4.3.8
  • Spring Kafka 1.1.3
  • Spring Security 4.2.2
  • Spring Security OAuth 2.0.13

The versions of a number of third-party dependencies have also been updated.

Project Page | GitHub | Issues | Documentation

Read more...

Spring IO Platform Athens-SR4

I am pleased to announce that Spring IO Platform Athens-SR4 is now available from both repo.spring.io and Maven Central.

This maintenance release upgrades the versions of a number of the projects in the Platform:

  • Spring AMQP 1.6.8
  • Spring Boot 1.4.5
  • Spring Data Hopper SR8
  • Spring Framework 4.3.7
  • Spring Integration 4.3.8
  • Spring Security OAuth 2.0.13

The versions of a number of third-party dependencies have also been updated.

Project Page | GitHub | Issues | Documentation

Read more...

Spring Boot 1.4.5 and 1.5.2 Available Now

It is my pleasure to announce that Spring Boot 1.4.5 and 1.5.2 have been released and are available now from repo.spring.io and Maven Central.

Spring Boot 1.4.5 includes 50 fixes and a selection of improvements and dependency upgrades. The second (first, really!) maintenance release of the 1.5 line contains over 60 fixes, improvements and 3rd party dependency updates. Thanks to all that have contributed!

What’s next?

The team is now working full speed on Spring Boot 2: a first milestone, including the first release candidate of Spring Framework 5, is expected early April. There are quite a lot of reactive-related features already in 2.0 snapshots. If you’d like to try them out, and we’d love to hear your feedback if you do, please go to start.spring.io and look for the Reactive starters.

Read more...

Spring Security OAuth 2.1.0 and 2.0.13 Released

On behalf of the community, I’m pleased to announce the release of Spring Security OAuth 2.1.0 and maintenance release 2.0.13.

The 2.1.0 release includes a new feature supporting JSON Web Signature (JWS) verification using JSON Web Key (JWK). This feature provides support for Authorization Servers that have implemented key rollover/rotation. See the GitHub Issue for more details.

The 2.0.13 release includes a small number of bug fixes and minor enhancements as well as the JWK feature to support the upcoming Spring Boot 1.5.2 release.

Read more...

Spring Data Ingalls SR1 and Hopper SR8 released

On behalf of the entire team, I’d like to announce the availability of Ingalls SR1 and Hopper SR8 service releases. Both of them ship 77 issues fixed in total. As usual, service releases are bugfix ones and recommended upgrades for all users. The releases are going to be picked up by the upcoming Boot 1.5 and 1.4 services releases for your convenience.

The complete list of issues fixed for Ingalls SR1 can be found here, the one for Hopper SR 8 here.

Spring Data Ingalls SR1

Read more...