Get ahead
VMware offers training and certification to turbo-charge your progress.
Learn moreOn 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.
Here’s a summary of the major new features and improvements brought by the new release:
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
}
}
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.
New features for schema support include schema searching and client-level caching, the latter adding significant performance improvements to the serialization support.
The RabbitMQ binder now supports customizing the types of destinations and their attributes, including support for Direct Exchanges and TTL settings for messages.
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.
Over the upcoming couple of weeks, we will focus on bug fixes and documentation/sample improvements in preparation for the GA release.
In addition to that, here are a few items we intend for our future roadmap:
After Chelsea.RELEASE: releasing a number of companion integrations (not part of the release train, but integrated with core support, with the goal of including in the release train in the future)
JMS binder with native support for Active MQ;
Upgrading the client library for the Google Pub Sub binder;
Reactive Streams-based binders based on an existing proof of concept;
Kafka Streams binder based on an existing proof of concept;
In future Chelsea service releases: improvements for error handling and DLQ management;
We also plan on starting work on Spring Cloud Stream 2 with support for Spring 5 and Spring Integration 5.
I would like to thank everyone involved for their support. In particular, I would like to extend special thanks to the community members that have contributed to this release by opening issues or providing patches:
Donovan Muller (@donovanmuller)
Nicholas Byl (@nbyl)
Maxim Kirilov (@maximkir)
唐睿 (@tangrui)
Jose A. Iñigo (@codependent)
Dennis Melzer (@sirwayne)
Wallace Wadge (@wwadge)
Barry Commins (@barrycommins)
Reda Alaoui(@reda-alaoui)
As usual, all contributions are welcome, and community support is the keystone of our success! You can stay in touch with us either in GitHub, on Stack Overflow, on Gitter, or on Twitter (hashtag #Stream or #SpringCloudStream).
Last but not least, a series of Spring events for the community, by the community will be taking place soon, close to you:
Grab your ticket or submit a talk!