当我使用 ConcurrentKafkaListenerContainerFactory 时如何拦截 ConcurrentMessageListenerContainer

How can intercept ConcurrentMessageListenerContainer when I'm using ConcurrentKafkaListenerContainerFactory

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

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

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

  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. 是的,为每个注释方法创建一个单独的容器。