Spring Cloud Stream Reference Guide

Authors

Sabby Anandan, Marius Bogoevici, Eric Bottard, Mark Fisher, Ilayaperumal Gopinathan, Gunnar Hillert, Mark Pollack, Patrick Peralta, Glenn Renfro, Thomas Risberg, Dave Syer, David Turanski, Janne Valkealahti, Benjamin Klein, Vinicius Carvalho, Gary Russell, Oleg Zhurakousky, Jay Bryant, Soby Chacko

Table of Contents

I. Preface
1. A Brief History of Spring’s Data Integration Journey
2. Quick Start
2.1. Creating a Sample Application by Using Spring Initializr
2.2. Importing the Project into Your IDE
2.3. Adding a Message Handler, Building, and Running
3. What’s New in 2.1?
3.1. New Features and Components
3.2. Notable Enhancements
3.3. Notable Deprecations
4. Notes on migrating from 1.x to 2.x?
5. Introducing Spring Cloud Stream
6. Main Concepts
6.1. Application Model
6.1.1. Fat JAR
6.2. The Binder Abstraction
6.3. Persistent Publish-Subscribe Support
6.4. Consumer Groups
6.5. Consumer Types
6.5.1. Durability
6.6. Partitioning Support
7. Programming Model
7.1. Destination Binders
7.2. Destination Bindings
7.3. Producing and Consuming Messages
7.3.1. Spring Integration Support
7.3.2. Using @StreamListener Annotation
7.3.3. Using @StreamListener for Content-based routing
7.3.4. Spring Cloud Function support
Functional Composition
7.3.5. Using Polled Consumers
Overview
Handling Errors
7.4. Error Handling
7.4.1. Application Error Handling
7.4.2. System Error Handling
Drop Failed Messages
DLQ - Dead Letter Queue
Re-queue Failed Messages
7.4.3. Retry Template
7.5. Reactive Programming Support
7.5.1. Reactor-based Handlers
7.5.2. Reactive Sources
8. Binders
8.1. Producers and Consumers
8.2. Binder SPI
8.3. Binder Detection
8.3.1. Classpath Detection
8.4. Multiple Binders on the Classpath
8.5. Connecting to Multiple Systems
8.6. Binding visualization and control
8.7. Binder Configuration Properties
9. Configuration Options
9.1. Binding Service Properties
9.2. Binding Properties
9.2.1. Common Binding Properties
9.2.2. Consumer Properties
9.2.3. Producer Properties
9.3. Using Dynamically Bound Destinations
10. Content Type Negotiation
10.1. Mechanics
10.1.1. Content Type versus Argument Type
10.1.2. Message Converters
10.2. Provided MessageConverters
10.3. User-defined Message Converters
11. Schema Evolution Support
11.1. Schema Registry Client
11.1.1. Schema Registry Client Properties
11.2. Avro Schema Registry Client Message Converters
11.2.1. Avro Schema Registry Message Converter Properties
11.3. Apache Avro Message Converters
11.4. Converters with Schema Support
11.5. Schema Registry Server
11.5.1. Schema Registry Server API
Registering a New Schema
Retrieving an Existing Schema by Subject, Format, and Version
Retrieving an Existing Schema by Subject and Format
Retrieving an Existing Schema by ID
Deleting a Schema by Subject, Format, and Version
Deleting a Schema by ID
Deleting a Schema by Subject
11.5.2. Using Confluent’s Schema Registry
11.6. Schema Registration and Resolution
11.6.1. Schema Registration Process (Serialization)
11.6.2. Schema Resolution Process (Deserialization)
12. Inter-Application Communication
12.1. Connecting Multiple Application Instances
12.2. Instance Index and Instance Count
12.3. Partitioning
12.3.1. Configuring Output Bindings for Partitioning
12.3.2. Configuring Input Bindings for Partitioning
13. Testing
13.1. Disabling the Test Binder Autoconfiguration
13.2. Spring Integration Test Binder
13.2.1. Spring Integration Test Binder and PollableMessageSource
14. Health Indicator
15. Metrics Emitter
16. Samples
16.1. Deploying Stream Applications on CloudFoundry
17. Binder Implementations