BT

Spring Cloud Stream 2.0 Released with Focus on Performance, Flexibility and Consistency

| by Daniel Bryant Follow 801 Followers on Apr 17, 2018. Estimated reading time: 2 minutes |

Pivotal has announced the General Availability release of the Spring Cloud Stream 2.0 framework for building highly scalable event-driven microservices-based applications. This release includes a complete revamp of content-type negotiation functionality (allowing user-defined message converters), a reduced footprint, the option for polling consumers, micrometer metrics support, enhanced Apache Kafka Streams support, and more.

Spring Cloud Stream is a framework for building "highly scalable event-driven microservices connected with shared messaging systems", and provides a number of abstractions and primitives that simplify the writing of message-driven applications within the Spring Ecosystem. A Spring Cloud Stream application consists of a "middleware-neutral core", and the application communicates with the outside world through input and output channels injected into it by the framework. Channels are connected to external brokers through middleware-specific "Binder implementations", of which RabbitMQ and Apache Kafka are currently supported.

The core building blocks of Spring Cloud Stream are:

  • Destination Binders -- components responsible for providing integration with the external messaging systems.
  • Destination Bindings -- the bridge between the external messaging systems and application provided "producers" and "consumers" of messages (created by the Destination Binders).
  • Message -- the canonical data structure used by producers and consumers to communicate with Destination Binders and other applications via external messaging systems.

 

Spring Cloud Stream 2.0
Spring Cloud Stream 2.0 architecture and message flow processing (Image courtesy of the Spring Blog)

 

Spring Cloud Stream 2.0 includes a complete revamp of content-type negotiation functionality for the channel-based binders to address performance, flexibility, and consistency. A recently published blog provides a high-level overview, and more information can be found in the Content Type Negotiation section of the reference guide. This work also enables the new User-defined Message Converters, although it is worth mentioning that Spring Cloud Stream also provides support for Avro-based converters, which also provide a clear path for schema evolution.

Other notable new features and enhancements include:

  • Polling Consumers -- this release introduces polled consumers, which lets the application control message processing rates.
  • Micrometer Support -- the metrics support has been switched to use the newly released Micrometer.
  • New Actuator Binding Controls -- new actuator binding controls allow both the visualisation and control of the Bindings lifecycle.
  • Actuator and Web Are Now Optional -- to "simplify the footprint and to provide greater flexibility" with regard to the choice of web frameworks (imperative versus the new webflux approach), both Spring Boot Actuator and Web are optional dependencies and the framework does not include them by default.
  • Enhanced support for Apache Kafka Streams -- this release includes enhanced interoperability between Kafka Streams and Kafka channel-based bindings, multiple Kafka Streams types (such as KStream and KTable) as bindable components, and interactive-query support.

Additional information on the GA release of Spring Cloud Stream 2.0 can be found in the Spring Engineering blog post "Announcing General Availability of Spring Cloud Stream - Elmhurst.RELEASE (2.0.0.RELEASE)", the Spring Cloud Stream GitHub repository, and the "quick start" guide.

Rate this Article

Adoption Stage
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Discuss
BT