Spring Cloud Stream 提供了一个绑定抽象,用于连接到外部中间件的物理目的地。本节提供了关于绑定器 SPI 背后的主要概念、其主要组件和实现特定细节的信息。 下图展示了生产者和消费者的一般关系:
生产者是将消息发送到通道的任何组件。可以使用该代理的
消费者是从通道接收消息的任何组件。与生产者一样,消费者的通道可以绑定到外部消息代理。调用 绑定器 SPI 由许多接口、现成的实用程序类和发现策略组成,这些发现策略为连接到外部中间件提供了可插拔的机制。
SPI 的关键点是 public interface Binder<T, C extends ConsumerProperties, P extends ProducerProperties> { Binding<T> bindConsumer(String name, String group, T inboundBindTarget, C consumerProperties); Binding<T> bindProducer(String name, T outboundBindTarget, P producerProperties); } 接口是参数化的,提供了许多扩展点:
典型的绑定器实现包括以下内容:
Spring Cloud Stream 依赖绑定器 SPI 的实现来执行将通道连接到消息代理的任务。每个绑定器实现通常连接到一种类型的消息传递系统。 默认情况下,Spring Cloud Stream 依赖于 Spring Boot 的自动配置来配置绑定过程。如果在类路径上找到单个绑定器实现,那么 Spring Cloud Stream 将自动使用它。例如,旨在仅绑定到 RabbitMQ 的 Spring Cloud Stream 项目可以添加以下依赖项: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream-binder-rabbit</artifactId> </dependency> 有关其他绑定器依赖项的特定 Maven 坐标,请参阅该绑定器实现的文档。
当类路径上存在多个绑定器时,应用程序必须指明每个通道绑定将使用哪个绑定器。每个绑定器配置都包含一个 rabbit:\ org.springframework.cloud.stream.binder.rabbit.config.RabbitServiceAutoConfiguration
对于其他提供的绑定器实现(如 Kafka),也存在类似的文件,并且期望自定义绑定器实现也提供这些文件。键表示绑定器实现的标识名,而该值是配置类的逗号分隔列表,每个配置类都包含一个且只有一个类型为
可以使用 spring.cloud.stream.bindings.input.binder=kafka spring.cloud.stream.bindings.output.binder=rabbit 默认情况下,绑定器共享应用程序的 Spring Boot 自动配置,以便在类路径上创建每个绑定器的一个实例。如果应用程序应连接到同一类型的多个代理,则可以指定多个绑定器配置,每个配置具有不同的环境设置。
以下示例展示了连接到两个 RabbitMQ 代理实例的处理器应用程序的典型配置: spring: cloud: stream: bindings: input: destination: thing1 binder: rabbit1 output: destination: thing2 binder: rabbit2 binders: rabbit1: type: rabbit environment: spring: rabbitmq: host: <host1> rabbit2: type: rabbit environment: spring: rabbitmq: host: <host2> 自 2.0 版以来,Spring Cloud Stream 支持通过执行器端点可视化和控制绑定。 从 2.0 版开始,执行器和 web 是可选的,你必须首先添加一个 web 依赖项,并手动添加执行器依赖项。以下示例展示如何添加 web 框架的依赖项: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 以下示例显示如何添加 WebFlux 框架的依赖项: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> 可以按如下方式添加执行器依赖项: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
还必须通过设置以下属性来启用 一旦这些先决条件得到满足。当应用程序启动时,应该在日志中看到以下内容: : Mapped "{[/actuator/bindings/{name}],methods=[POST]. . . : Mapped "{[/actuator/bindings],methods=[GET]. . . : Mapped "{[/actuator/bindings/{name}],methods=[GET]. . .
要可视化当前绑定,请访问以下 URL:
或者,要查看单个绑定,请访问以下类似的 URL 之一:
你还可以停止、启动、暂停和恢复各个绑定,方法是在提供
自定义绑定器配置时,以下属性可用。这些属性通过
它们必须以
|