【问题标题】:How can intercept ConcurrentMessageListenerContainer when I'm using ConcurrentKafkaListenerContainerFactory当我使用 ConcurrentKafkaListenerContainerFactory 时如何拦截 ConcurrentMessageListenerContainer
【发布时间】:2019-11-12 19:31:32
【问题描述】:

我正在使用 spring-kafka-2.2.7.RELEASE 并尝试在方法级别使用 @KafkaListener 和 ConcurrentKafkaListenerContainerFactory 创建消费者。据我了解,这将创建一个 ConcurrentMessageListenerContainer。

  1. 是否有拦截器来拦截此容器创建,以便我可以注入自定义逻辑来构建 groupId?

  2. 如果我有两种不同的方法使用@KafkaListener 来消费两个不同的主题,它会创建两个 ConcurrentMessageListenerContainers 吗?

【问题讨论】:

    标签: spring-kafka


    【解决方案1】:
    1. 如果您有@KafkaListener(id = "foo", ..., autoStartup = "false"),您可以自动连接KafkaListenerEndpointRegistry,然后...

      registry.getListenerContainer("foo").getContainerProperties().setGroupId(...); registry.getListenerContainer("foo").start();

    但是,您可以简单地使用

    @KafkaListener(... groupId "${some.property}")
    

    @KafkaListener(... groupId "#{someSpelExpression}")
    

    如果您只想设置组 ID。

    1. 是的,为每个带注释的方法创建一个单独的容器。

    【讨论】:

    • 感谢您提供详细信息。我会尝试第一个选项。
    • 我有一个问题。我们在 spring-kafka-2.2.7 中有这个 KafkaListenerContainerRegistry 吗?
    猜你喜欢
    • 2019-07-28
    • 2019-03-15
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 2010-12-06
    • 1970-01-01
    相关资源
    最近更新 更多