如何让消费者知道Producer已经完成向Broker发送所有消息?

时间:2016-11-16 19:13:38

标签: apache-spark apache-kafka spark-streaming kafka-consumer-api

1:我们正在使用Spark Streaming进行近实时处理或批处理。我们目前的设计包括Kafka。

2:制作人每15分钟发送一次消息。

3:我们计划使用Spark Streaming来消费来自Kafka主题的消息。

1 个答案:

答案 0 :(得分:2)

这是一个非常广泛的问题:

  1. 基本上,没有"所有消息"因为它的流处理(但我仍然理解你的问题)。
  2. 一种方法是在最后一条消息中注入控制消息"结束一连串数据"
  3. 您还可以使用一些"侧面沟通渠道"通过RPC使生产者发送它写入消费者的最后一个偏移量
  4. 您可以使用启发式方法 - 如果poll()在1分钟内没有返回任何内容,则只需假设已消耗所有数据
  5. 可能还有其他方法......但它都是手工编码的 - 卡夫卡没有支持(参见(1。))。