【问题标题】:Multiple KafkaConsumer on multiple Kafka Cluster in Spring BootSpring Boot中多个Kafka集群上的多个KafkaConsumer
【发布时间】:2018-10-09 04:14:21
【问题描述】:

想要使用 spring-kafka 在 Spring Boot 应用程序的不同集群上创建 homogeneous kafka consumers

即想要为已经定义的类创建一个 Kafka Consumer 对象,该对象侦听动态定义的多个集群。

例如:假设一个 Spring Boot 应用程序 S 包含 template for kafkaconsumer。并且有 3 个 Kafka 集群 客户 1、集群 2、集群 3。应用程序 S 充当聚合器 每个集群产生的数据。这里的解决方案是 同一模板的三个consumers 将单独收听 集群在parallel

使用spring-kafka可以实现上述场景吗?

【问题讨论】:

    标签: spring-boot spring-kafka


    【解决方案1】:

    @KafkaListener 无法与多个集群通信。您需要委托给真正的听众...

    @KafkaListener(..., containerFactory="cluster1Factory")
    public void listen1(...) {
        this.delegate.listen(...);
    }
    
    @KafkaListener(..., containerFactory="cluster2Factory")
    public void listen2(...) {
        this.delegate.listen(...);
    }
    
    etc.
    

    【讨论】:

    • 问题是代码中不能有多个工厂,需要有一个可以根据需要动态部署的类。我们不能添加 n 个侦听器和 n 个工厂,因为 n 仅在运行时确定。
    • @KafkaListener 并非设计为在运行时动态添加到正在运行的应用程序;但是,它可以通过为每个@KafkaListener 动态创建一个子应用程序上下文来实现。
    猜你喜欢
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 2016-11-15
    相关资源
    最近更新 更多