【发布时间】:2020-10-03 13:43:55
【问题描述】:
有没有办法获取 @KafkaListener 使用的 ListenerContainer 对象?如果可能,我想使用容器动态订阅新主题。或者还有另一种更好的方式来在运行时订阅新主题?谢谢。 -aj
【问题讨论】:
有没有办法获取 @KafkaListener 使用的 ListenerContainer 对象?如果可能,我想使用容器动态订阅新主题。或者还有另一种更好的方式来在运行时订阅新主题?谢谢。 -aj
【问题讨论】:
如果你使用'@EnableKafka',那么KafkaListenerEndpointRegistry会自动注册为Bean(代码:https://git.io/JfQDQ)
所以你可以得到如下的监听器列表。
@Service
public class KafkaListenerHandler {
private final KafkaListenerEndpointRegistry registry;
public KafkaListenerHandler(KafkaListenerEndpointRegistry registry) {
this.registry = registry;
}
public List<MessageListenerContainer> getListener() {
return new ArrayList<>(registry.getListenerContainers());
}
}
但是,您不能在运行时更改主题...
【讨论】: