【问题标题】:Inject all Kafka Consumers created by a ConcurrentMessageListenerContainer in Spring Boot?在 Spring Boot 中注入 ConcurrentMessageListenerContainer 创建的所有 Kafka 消费者?
【发布时间】:2022-02-08 23:12:39
【问题描述】:

我们正在使用ConcurrentMessageListenerContainer 来创建我们的Kafka Consumers。

使用ConcurrentMessageListenerContainer#concurrency 属性可以创建多个消费者。

是否可以在 Spring Boot 应用程序中注入由 ConcurrentMessageListenerContainer 创建的所有 Consumers?或者是否有可能在ApplicationEvent 之后以某种方式获得它们?

【问题讨论】:

  • 您介意解释一下为什么需要它们吗?也许ConcurrentMessageListenerContainer 及其getContainers() 上的现有API 对您来说已经足够了。 KafkaConsumer 确实是一个 volatile 对象,它可以在运行时更新(替换)。

标签: java spring spring-boot apache-kafka spring-kafka


【解决方案1】:

为什么需要访问底层的Consumer 对象?它们由容器管理。

消费者可作为消息侦听器中的参数并包含在已发布的事件中,但不建议直接使用Consumer API,因为这样的使用可能与容器的预期相冲突。

可以使用被动API,比如获取订阅主题的结束偏移量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多