我有一个批处理作业,它将数据填充到Kafka主题。每个消息都有数据和作业标识符。 在消费者方面,我只想阅读属于此作业的消息。在工作完成并消耗了所有消息之后,消费者方必须进行一些后处理。
1)如果可以保证,在作业过程中不会再产生其他消息,我如何理解该作业已完成并且该作业产生的所有消息都被消耗掉了? (考虑多个分区和异步性)。
2)如果不能保证,在工作期间不会再产生其他消息,我相信可以跳过噪音。
谢谢
答案 0 :(得分:0)
我假设job_id
是常数。在这种情况下,如果n
随后的民意调查从Kafka返回空记录,则可以关闭使用者的支票。 n
取决于您的摄取速度和消费者的调查间隔。
答案 1 :(得分:0)
我只在这里谈论第一种情况。请注意,这只是一个主意,我自己从未尝试过
您可以使用endOffsets()
获取所有分区的最后偏移量,然后在每条消息后循环遍历所有分区,以检查所有当前偏移量是否与结束偏移量匹配。如果都匹配,那么您已经到了最后。