当我使用 ConcurrentKafkaListenerContainerFactory 时如何拦截 ConcurrentMessageListenerContainer
How can intercept ConcurrentMessageListenerContainer when I'm using ConcurrentKafkaListenerContainerFactory
我正在使用 spring-kafka-2.2.7.RELEASE 并尝试在方法级别结合使用 @KafkaListener 和 ConcurrentKafkaListenerContainerFactory 创建消费者。根据我的理解,这将创建一个 ConcurrentMessageListenerContainer。
是否有拦截器来拦截此容器创建,以便我可以注入自定义逻辑来构建 groupId?
如果我有两种不同的方法使用@KafkaListener 来消费两个不同的主题,它会创建两个 ConcurrentMessageListenerContainer 吗?
如果您有 @KafkaListener(id = "foo", ..., autoStartup = "false")
,您可以自动连接 KafkaListenerEndpointRegistry
,然后...
registry.getListenerContainer("foo").getContainerProperties().setGroupId(...);
registry.getListenerContainer("foo").start();
不过,您可以简单地使用
@KafkaListener(... groupId "${some.property}")
或
@KafkaListener(... groupId "#{someSpelExpression}")
如果您只想设置组 ID。
- 是的,为每个注释方法创建一个单独的容器。
我正在使用 spring-kafka-2.2.7.RELEASE 并尝试在方法级别结合使用 @KafkaListener 和 ConcurrentKafkaListenerContainerFactory 创建消费者。根据我的理解,这将创建一个 ConcurrentMessageListenerContainer。
是否有拦截器来拦截此容器创建,以便我可以注入自定义逻辑来构建 groupId?
如果我有两种不同的方法使用@KafkaListener 来消费两个不同的主题,它会创建两个 ConcurrentMessageListenerContainer 吗?
如果您有
@KafkaListener(id = "foo", ..., autoStartup = "false")
,您可以自动连接KafkaListenerEndpointRegistry
,然后...registry.getListenerContainer("foo").getContainerProperties().setGroupId(...);
registry.getListenerContainer("foo").start();
不过,您可以简单地使用
@KafkaListener(... groupId "${some.property}")
或
@KafkaListener(... groupId "#{someSpelExpression}")
如果您只想设置组 ID。
- 是的,为每个注释方法创建一个单独的容器。