【问题标题】:Check if Kafka Queue is Empty检查 Kafka 队列是否为空
【发布时间】:2016-04-06 02:17:58
【问题描述】:

现在我有将几百条消息写入 kafka 队列的功能。但是,当所有这些消息都被使用后,我还需要执行其他功能。有没有办法在 kafka 队列上放置一个监听器,以便在它被清空时得到通知?

【问题讨论】:

  • 清空是什么意思?如果所有消息都被消费了,并不意味着队列会变空。
  • 您可以在队列中放入一条特殊消息。

标签: clojure apache-kafka clj-kafka


【解决方案1】:

我认为你可以通过两种方式解决:

  1. Kafka 的Fetch Response 包含一个HighwaterMarkOffset,它本质上是分区中最后一条消息的偏移量。您可以检查您的消息是否具有该偏移量,如果是,您已经到达终点。但是,如果生产者和消费者同时工作,这将不起作用 - 消费者可以更快地消费消息,从而比您需要的更早停止。
  2. 发送“毒丸”消息 - 假设您需要产生 100 条消息。然后您的生产者发送这 100 条消息 + 1 条特殊消息(例如一些 UUID,但请确保它在您的逻辑中的正常情况下永远不会出现),这意味着“结束”。在消费者方面,您将检查收到的消息是否是毒丸,如果是则关闭。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-19
    • 2019-12-02
    • 1970-01-01
    • 2021-02-01
    • 2012-09-14
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    相关资源
    最近更新 更多