Binder 抽象
Spring Cloud Stream 为 Kafka 和 Rabbit MQ 提供 Binder 实现。该框架还包括一个测试 Binder,用于对您的应用程序进行集成测试,作为 spring-cloud-stream 应用程序。有关更多详细信息,请参见 [测试] 部分。
Binder 抽象也是该框架的扩展点之一,这意味着您可以在 Spring Cloud Stream 之上实现自己的 Binder。在 如何从头开始创建 Spring Cloud Stream Binder 文章中,社区成员详细记录了使用示例,实现自定义 Binder 所需的一组步骤。这些步骤也在 实现自定义 Binder
部分中突出显示。
Spring Cloud Stream 使用 Spring Boot 进行配置,Binder 抽象使 Spring Cloud Stream 应用程序能够灵活地连接到中间件。例如,部署者可以在运行时动态选择外部目标(例如 Kafka 主题或 RabbitMQ 交换机)与消息处理程序的输入和输出(例如函数的输入参数及其返回值)之间的映射。此类配置可以通过外部配置属性提供,并且可以通过 Spring Boot 支持的任何形式提供(包括应用程序参数、环境变量以及 application.yml
或 application.properties
文件)。在 介绍 Spring Cloud Stream 部分的接收器示例中,将 spring.cloud.stream.bindings.input.destination
应用程序属性设置为 raw-sensor-data
会导致它从 raw-sensor-data
Kafka 主题或绑定到 raw-sensor-data
RabbitMQ 交换机的队列中读取数据。
Spring Cloud Stream 会自动检测并使用类路径中找到的 Binder。您可以使用不同类型的中间件,但使用相同的代码。为此,请在构建时包含不同的 Binder。对于更复杂的用例,您还可以将多个 Binder 与您的应用程序打包在一起,并让它在运行时选择 Binder(甚至是否对不同的绑定使用不同的 Binder)。