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