此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 spring-cloud-stream 4.1.4spring-doc.cn

在多 Binder 应用程序中自定义 Binder

当应用程序包含多个 Binders 并希望自定义 Binders 时,可以通过提供实现来实现。 对于具有单个 Binder 程序的应用程序,则不需要此特殊定制器,因为 Binder 上下文可以直接访问自定义 bean。 但是,在多 Binder 方案中并非如此,因为各种 Binder 位于不同的应用程序上下文中。 通过提供 interface 的实现,Binders 尽管驻留在不同的应用程序上下文中,但将接收自定义。 Spring Cloud Stream 确保在应用程序开始使用 Binders 之前进行自定义。 用户必须检查 Binder 类型,然后应用必要的自定义。BinderCustomizerBinderCustomizerspring-doc.cn

下面是一个提供 bean 的示例。BinderCustomizerspring-doc.cn

@Bean
public BinderCustomizer binderCustomizer() {
    return (binder, binderName) -> {
        if (binder instanceof KafkaMessageChannelBinder kafkaMessageChannelBinder) {
            kafkaMessageChannelBinder.setRebalanceListener(...);
        }
        else if (binder instanceof KStreamBinder) {
            ...
        }
        else if (binder instanceof RabbitMessageChannelBinder) {
            ...
        }
    };
}

请注意,当存在多个相同类型的 Binder 实例时,可以使用 Binder 名称来筛选自定义。spring-doc.cn