Engineering
Releases
News and Events

Spring Cloud Stream 1.3 goes GA

We are pleased to announce the general availability release of the Spring Cloud Stream Ditmars release train.

Spring Cloud Stream Ditmars.RELEASE is available for use in the Spring Release repository. The release notes include relevant information about version compatibility with Spring Boot, Spring Cloud, Spring AMQP, and Spring for Apache Kafka.

The following sections list new features included in this release.

Apache Kafka

Kafka Streams for Apache Kafka

Spring Cloud Stream automates discovery and auto-configuration, and it provides a simple approach to facilitating the interactivity between application business-logic and Apache Kafka. With most of the standard message broker-specific settings exposed as Spring Boot properties, it is easy to use and override to adapt to business needs.

Further enhancing the Apache Kafka integration, the Kafka Streams integration has been promoted to be a top-level construct in Apache Kafka’s binder implementation.

Thanks to having the Kafka Streams API baked into the framework, both simple and more complex data processing functions can be built as Spring Boot applications. All you need is the spring-cloud-stream-binder-kstream dependency in the classpath - it’s that easy to get started. This integration includes a partition-level local state to further simplify solving for event-driven processors, data aggregators, continuous-queries, and transformations.

The following screencast shows it in action.

Apache Kafka 0.11

By popular demand from customers and the community, we have added support for Apache Kafka 0.11. Though it is supported today, we haven’t switched to it as the default in this release. 0.11 will be a default in the upcoming 2.0.0.RELEASE. For that reason, for early adopters who are interested in upgrading to this release, we have released it as a standalone artifact.

Consumer Lag Metrics

With @hekonsek’s contribution, there is a new metrics addition that can help with consumer-lag forensics. This is helpful for situations involving whether or not to auto-scale the consumer depending on the dynamic traffic patterns.

RabbitMQ

Lazy Queues

If reducing I/O footprint is a requirement, there is now support for “Lazy Queues” in the RabbitMQ binder implementation. Likewise, DLQ support for “Lazy Queues” is also available.

Resilient Retries

A typical scale-out setup of RabbitMQ involves a collection of RabbitMQ nodes connected with a load-balancer in front. Upon a node failure, to embrace it and recover, there is now a fix in place for eventual recovery with the help of retries.

Distinct Connection Factories

To avoid deadlocks at the consumers when the shared connection is blocked by a busy producer, this release adds support for separate connection factories for non-transactional producers.

Amazon Kinesis (incubating)

The community-driven binder implementation for Amazon Kinesis has had significant progress; however, it couldn’t make it to the Ditmars release-train given the upstream dependencies from the Spring Cloud ecosystem of projects. We hope to continue the momentum and graduate the kinesis-binder in the upcoming 2.0.0 milestones. We would like to thank our community champions Peter Oates (@oatesp) and Jacob Severson (@JacobASeverson) for their valuable time and quality contributions.

Error Handling

Ditmars release-train revisits the error-handling support in the core framework. We have simplified the producer- and consumer-level exception handling. For instance, there is an error channel (<destination>.errors) to receive a copy of messages that fail, and the global Spring Integration errorChannel remains available. The creation, orchestration, and global representation of error channels are in this release train.

Spring Cloud Stream 2.0

The 1.3 release marks the last iteration on the 1.x series and Boot 1.5.
The next major release-train (Elmhurst) includes a complete overhaul of several core functionalities. The following themes are under consideration: Spring Boot 2.0 compatibility, better content-type resolution, a further simplified error-handling experience, and smarter binding-lifecycle hooks to start, stop and pause consumers. This is actively under development, and we hope to get to a stable release-candidate state by SpringOne Platform 2017. We are excited about the work-in-progress!

Lastly, a variety of bug-fixes and improvements are part of the release. For more details, please refer to project-level release markers from the release notes.

As always, we welcome feedback and contributions, so please reach out to us on Stackoverflow or GitHub or via Gitter.

comments powered by Disqus