当我使用ConcurrentKafkaListenerContainerFactory时如何截获ConcurrentMessageListenerContainer

时间:2019-11-12 19:31:32

标签: spring-kafka

我正在使用spring-kafka-2.2.7.RELEASE,并尝试在方法级别使用@KafkaListener并与ConcurrentKafkaListenerContainerFactory一起创建使用者。根据我的理解,这将创建一个ConcurrentMessageListenerContainer。

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

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

1 个答案:

答案 0 :(得分: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. 是的,将为每个带注释的方法创建一个单独的容器。