当应用程序中有多个绑定并想要自定义绑定时,可以通过提供实现来实现。 对于具有单个绑定器的应用程序,不需要此特殊定制器,因为绑定器上下文可以直接访问定制 Bean。 但是,在多活页夹方案中并非如此,因为各种活页夹位于不同的应用程序上下文中。 通过提供接口的实现,绑定器虽然驻留在不同的应用程序上下文中,但将获得自定义。 Spring Cloud Stream 确保在应用程序开始使用绑定器之前进行自定义。 用户必须检查活页夹类型,然后应用必要的自定义项。BinderCustomizerBinderCustomizerSpring中文文档

下面是一个提供 Bean 的示例。BinderCustomizerSpring中文文档

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

请注意,当有多个相同类型的活页夹实例时,可以使用活页夹名称来筛选自定义项。Spring中文文档