【发布时间】:2017-07-17 08:43:44
【问题描述】:
我正在使用 Kafka Consumer 读取多个主题,我需要其中一个具有更高的优先级。处理需要很长时间,并且(低优先级)主题中总是有很多消息,但我需要尽快处理来自其他主题的消息。
与Does Kafka support priority for topic or message? 的问题类似,但这个问题使用的是旧 API。
在新的 API (0.10.1.1) 中,有一些方法
KafkaConsumer::pause(Collection)
KafkaConsumer::resume(Collection)
但我不清楚,如何有效地检测高优先级主题中有新消息,需要暂停其他主题的消费。
有什么想法/例子吗?
【问题讨论】:
-
您可以检查您正在监视的分区的 endOffsets 是否大于这些分区的最后提交的偏移量。这究竟是如何工作的将是特定于实现的,但这会让您在轮询之前知道是否有更多消息要使用
-
请看这个,它可能是你要找的:stackoverflow.com/a/66013251/4602706
标签: apache-kafka kafka-consumer-api