检查Kafka队列是否为空

时间:2016-04-05 13:37:36

标签: clojure apache-kafka clj-kafka

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

1 个答案:

答案 0 :(得分:3)

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

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