Classpath 中的多个 Binder

当 classpath 中存在多个 binder 时,应用必须为每个目标绑定指示使用哪个 binder。每个 binder 配置都包含一个 META-INF/spring.binders 文件,这是一个简单的 properties 文件,如下例所示

rabbit:\
org.springframework.cloud.stream.binder.rabbit.config.RabbitServiceAutoConfiguration

其他提供的 binder 实现(例如 Kafka)也有类似的文件,自定义 binder 实现也应提供这些文件。key 表示 binder 实现的识别名称,而 value 是配置类的逗号分隔列表,每个配置类只包含一个类型为 org.springframework.cloud.stream.binder.Binder 的 bean 定义。

Binder 选择可以全局进行,使用 spring.cloud.stream.defaultBinder 属性(例如,spring.cloud.stream.defaultBinder=rabbit),或者单独为每个绑定配置 binder。例如,一个处理器应用(分别具有名为 inputoutput 的读写绑定),如果从 Kafka 读取并写入 RabbitMQ,可以指定以下配置

spring.cloud.stream.bindings.input.binder=kafka
spring.cloud.stream.bindings.output.binder=rabbit