The goal of Spring Cloud Stream is to be a lightweight framework for developing event-driven microservices, building on the ease of development and deployment of Spring Boot, and the component model and integration capabilities of Spring Integration. As part of the Spring Cloud family of projects, it has a specific focus on cloud-native architectures.
In order to simplify the development of both streaming and more traditional enterprise integration, it provides a number of primitives and abstractions such as:
- Persistent publish-subscribe semantics between different logical applications;
- Consumer group support for scaling individual applications;
- Declarative partitioning support;
- Declarative message conversion support;
All features above are implemented in a middleware agnostic-fashion through the framework’s Binder abstraction, that allows for different implementations to adapt the model to the native capabilities of the communication middleware. This allows the developers to focus on the business abstractions, and also to develop reusable components that can be used with different flavors of messaging middleware. Spring Cloud Stream 1.0.0.RELEASE ships with Binders for Apache Kafka and Rabbit MQ. Additional implementations, such as Gemfire are available.
From the first commit, 21 contributors from the Spring team and the community have been adding 506 commits and resolving 189 issues.
Spring Cloud Stream has an older heritage than its commit history. It has been born as part of rethinking Spring XD (to which it owes a significant part of its current code) from a cloud-native, microservice-oriented perspective, more specifically redefining the notions of module and message bus in a Spring Boot and Spring Cloud-friendly fashion. It provides the mechanisms to write long-lived microservices that can be orchestrated and deployed across various platforms (Cloud Foundry, Apache YARN, Kubernetes, Apache Mesos) in sophisticated streaming pipelines by Spring Cloud Data Flow, in counterpart with its task-oriented sibling Spring Cloud Task. It powers a rich ecosystem of Spring Cloud Stream applications that integrate with various types of middleware and data stores, owing to its Spring Integration foundation. It also powers a few other Spring Cloud projects: Spring Cloud Bus, Spring Cloud Hystrix, and Spring Cloud Sleuth, who as early adopters have provided tremendously valuable input.
Thanks and congratulations to everyone who has been part of this journey, current and former members of the Spring XD/Spring Cloud Data Flow team, and especially community members who have either been contributing directly or providing the more than necessary feedback for the success of the project. We couldn’t have gotten here without your help and hope you continue to do so.
As for the future, our intended roadmap includes such items as:
- Kafka 0.9 client support
- Support for reactive binders and a reactive programming model
- Adding new types of binders such as JMS or Kinesis
- Schema registration and evolution support
Join us for the next leg of the journey!
If you are attending Spring IO in Barcelona, I will be talking about Spring Cloud Stream on Friday, May 20. There are many other great talks from the Spring team members, so check the agenda.