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