类路径上的多个 Binder

当类路径中存在多个绑定器时,应用程序必须指定要用于每个目标绑定的绑定器。每个绑定器配置都包含一个 META-INF/spring.binders 文件,这是一个简单的属性文件,如下例所示

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

其他提供的绑定器实现(例如 Kafka)也存在类似的文件,自定义绑定器实现也应该提供它们。键表示绑定器实现的标识名称,而值是配置类的逗号分隔列表,每个配置类都包含一个且仅一个类型为 org.springframework.cloud.stream.binder.Binder 的 bean 定义。

绑定器选择可以通过全局方式执行,使用 spring.cloud.stream.defaultBinder 属性(例如,spring.cloud.stream.defaultBinder=rabbit),也可以通过在每个绑定上配置绑定器来单独执行。例如,一个处理器应用程序(分别具有名为 inputoutput 的绑定用于读取和写入)从 Kafka 读取并写入 RabbitMQ,可以指定以下配置

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