Binder 抽象

Spring Cloud Stream 为 KafkaRabbit MQ 提供了 Binder 实现。该框架还包括一个测试 Binder,用于对您的应用进行集成测试(作为 spring-cloud-stream 应用)。更多详细信息请参阅 [Testing] 部分。

Binder 抽象也是框架的扩展点之一,这意味着您可以在 Spring Cloud Stream 之上实现自己的 Binder。在 如何从零开始创建 Spring Cloud Stream Binder 帖子中,社区成员详细记录了实现自定义 Binder 所需的一系列步骤并提供了示例。这些步骤在 实现自定义 Binder 部分中也进行了强调。

Spring Cloud Stream 使用 Spring Boot 进行配置,并且 Binder 抽象使得 Spring Cloud Stream 应用在连接中间件方面具有灵活性。例如,部署者可以在运行时动态选择外部目标(例如 Kafka topic 或 RabbitMQ 交换机)与消息处理程序输入和输出(例如函数的输入参数及其返回值)之间的映射。这些配置可以通过外部配置属性提供,并且支持 Spring Boot 支持的任何形式(包括应用参数、环境变量以及 application.ymlapplication.properties 文件)。在 Spring Cloud Stream 简介 部分的 sink 示例中,将 spring.cloud.stream.bindings.input.destination 应用属性设置为 raw-sensor-data 会使其从 raw-sensor-data Kafka topic 或绑定到 raw-sensor-data RabbitMQ 交换机的队列中读取数据。

Spring Cloud Stream 会自动检测并使用 Classpath 中找到的 Binder。您可以使用相同的代码与不同类型的中间件配合使用。为此,您只需在构建时包含不同的 Binder 即可。对于更复杂的用例,您还可以将多个 Binder 打包到您的应用中,并在运行时选择要使用的 Binder(甚至为不同的绑定使用不同的 Binder)。