这个版本仍在开发中,尚未达到稳定状态。要使用最新稳定版,请使用 spring-cloud-stream 5.0.1 spring-doc.cadn.net.cn

定制多绑定器应用程序中的绑定器

当一个应用程序包含多个 binders 且需要自定义这些 binders 时,可以通过提供一个 BinderCustomizer 的实现来实现。 在单 binder 的情况下,这种特殊定制器是不必要的,因为 binder 上下文可以直接访问自定义化 beans。 然而,在多 binder 场景中并非如此,因为各种 binder 位于不同的应用程序上下文中。 通过提供 BinderCustomizer 接口的实现,尽管 binder 位于不同的应用程序上下文中,它们仍会接收到相应的自定义化。 Spring Cloud Stream 会确保在应用程序开始使用 binder 之前完成这些自定义化。 用户必须检查 binder 类型并应用相应的自定义化。spring-doc.cadn.net.cn

这里是提供一个BinderCustomizer bean的例子。spring-doc.cadn.net.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) {
            ...
        }
    };
}

注意,当有同一类型的多个绑定器实例时,可以使用绑定器名称来筛选自定义设置。spring-doc.cadn.net.cn