Spring Cloud Stream 参考文档
前言
本节将详细介绍如何使用 Spring Cloud Stream。内容包括创建和运行流应用程序等主题。
介绍 Spring Cloud Stream
Spring Cloud Stream 是一个用于构建消息驱动微服务应用的框架。Spring Cloud Stream 基于 Spring Boot 构建,用于创建独立的、生产级的 Spring 应用程序,并使用 Spring Integration 提供与消息代理的连接。它为多个供应商的中间件提供了约定俗成的配置,引入了持久化发布-订阅语义、消费者组和分区的概念。
通过将 spring-cloud-stream 依赖项添加到应用程序的类路径中,您可以立即连接到由提供的 spring-cloud-stream binder 暴露的消息代理(稍后会详细介绍),并且您可以实现您的功能需求,该功能需求由 java.util.function.Function 运行(基于传入的消息)。
以下清单展示了一个简单的例子:
@SpringBootApplication
public class SampleApplication {
public static void main(String[] args) {
SpringApplication.run(SampleApplication.class, args);
}
@Bean
public Function<String, String> uppercase() {
return value -> value.toUpperCase();
}
}
以下列表展示了相应的测试:
@SpringBootTest(classes = SampleApplication.class)
@EnableTestBinder
class BootTestStreamApplicationTests {
@Autowired
private InputDestination input;
@Autowired
private OutputDestination output;
@Test
void contextLoads() {
input.send(new GenericMessage<byte[]>("hello".getBytes()));
assertThat(output.receive().getPayload()).isEqualTo("HELLO".getBytes());
}
}
主要概念
Spring Cloud Stream 提供了许多抽象和原语,简化了编写消息驱动的微服务应用程序的过程。本参考手册的其余部分提供了更多详细信息。
章节总结
🗃️ 核心概念和抽象
5 个项目
🗃️ 编程模型
9 个项目
🗃️ Binder 抽象
5 个项目
📄️ 错误处理
在本节中,我们将解释框架提供的错误处理机制背后的总体思路。我们将以 Rabbit binder 为例,因为不同的 binder 为某些支持的机制定义了不同的属性集,这些机制特定于底层代理的功能(例如 Kafka binder)。
📄️ 可观测性
Spring 通过 Micrometer 提供了对可观测性的支持,Micrometer 定义了一个 Observation 概念,使得应用程序中能够同时支持指标(Metrics)和跟踪(Traces)。
🗃️ 配置选项
2 个项目
🗃️ 内容类型协商
3 个项目
🗃️ 应用程序间通信
2 个项目
📄️ 分区
Spring Cloud Stream 提供了对给定应用程序的多个实例之间数据分区的支持。在分区场景中,物理通信介质(例如代理主题)被视为被结构化为多个分区。一个或多个生产者应用程序实例将数据发送到多个消费者应用程序实例,并确保具有共同特征的数据由同一个消费者实例处理。
📄️ 测试
Spring Cloud Stream 提供了对微服务应用程序的测试支持,而无需连接到消息传递系统。
📄️ 健康指标
Spring Cloud Stream 为绑定器提供了健康指示器。它以 binders 的名称注册,可以通过设置 management.health.binders.enabled 属性来启用或禁用。
📄️ 示例
有关 Spring Cloud Stream 的示例,请参阅 GitHub 上的 spring-cloud-stream-samples 仓库。