【问题标题】:spring kafka @KafkaListener listener container?spring kafka @KafkaListener 监听器容器?
【发布时间】:2020-10-03 13:43:55
【问题描述】:

有没有办法获取 @KafkaListener 使用的 ListenerContainer 对象?如果可能,我想使用容器动态订阅新主题。或者还有另一种更好的方式来在运行时订阅新主题?谢谢。 -aj

【问题讨论】:

    标签: spring-boot apache-kafka


    【解决方案1】:

    如果你使用'@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());
        }
    }
    

    但是,您不能在运行时更改主题...

    查看此链接:https://stackoverflow.com/a/54467119/2462408

    【讨论】:

    • 谢谢,@bistro。还有其他方法可以更新现有侦听器容器中的主题列表吗?
    • 我不知道这样的方式。 Kafka Consumer 原本没有这个功能。其他方式,新建一个监听器,或者声明主题名正则模式
    猜你喜欢
    • 2018-11-08
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    相关资源
    最近更新 更多