【问题标题】:How to make the consumer know that the Producer has finished sending all the messages to the Broker?如何让消费者知道Producer已经将所有消息发送给Broker?
【发布时间】:2017-03-31 03:22:40
【问题描述】:

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

2:Producer 将每 15 分钟发送一次消息。

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

【问题讨论】:

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


    【解决方案1】:

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

    1. 基本上没有“所有消息”之类的东西,因为它是流处理(但我仍然理解您的问题)。
    2. 一种方法是在“结束数据突发”的最后一条消息中注入控制消息
    3. 您还可以通过 RPC 使用一些“侧通信通道”,以便生产者将其写入的最后偏移量发送给消费者
    4. 您可以提出一个启发式方法 - 如果 poll() 在 1 分钟内没有返回任何内容,您只需假设所有数据都已被消耗

    可能还有其他方法……但都是手工编码的——Kafka 不支持(参见 (1.))。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 2021-07-05
      • 2012-12-11
      • 2016-09-19
      • 1970-01-01
      相关资源
      最近更新 更多