繁体   English   中英

来自 kafka 主题的消息的动态消费

[英]Dynamic consumption of messages from a kafka topic

我需要使用生产者动态创建的主题中的消息。 我已经在消费者@KafkaListener(topicPattern = "topicname_.*") 中使用了主题模式方法,并且还设置了 metadata.max.age.ms=3000。但显然除非和直到我设置了 offset.auto.reset最早我无法做到这一点。在我们的要求中,必须将 offset.auto.reset 设置为 latest 以避免问题重复。

关于如何实现相同的任何想法?

在顶层说,Kafka 的设计理念不允许这样的事情,因为在运行时添加主题会导致代理的重新平衡,因此必须避免这种情况,但是如果我们每次都有新主题时都设法重新启动消费者组被添加到列表中,我们可以优雅地避免这种危害。

最新的 Spring-Kafka 集成及其用法包括注释@KafkaListener ,它通过使用传递给它的容器工厂创建 KafkaListenerContainer 将您的 POJO 侦听器转换为 Kafka 消费者。 该消费者将主题硬编码为主题、主题表达式、主题模式等的字符串数组。这限制了我们的设计,只能通过 Java DSL 最大程度地获取这些主题作为键,而不是直接硬编码。 但是,键仍然硬编码在作为参数传递给@KafkaListener的数组中。

例子:

@KafkaListener(topics = {“${kafka.topics.receipt.cancel.name}”}, containerFactory = “kafkaContainerFactory”)

注意:注释属性 KafkaListener.topics 的值必须是一个数组初始值设定项,因此硬编码是强制性的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM