【问题标题】:Control rate of individual topic consumption in Kafka Streams 0.9.1.0-cp1?Kafka Streams 0.9.1.0-cp1 中单个主题消费的控制率?
【发布时间】:2016-09-08 17:13:52
【问题描述】:

我正在尝试使用涉及联接的 Kafka Streams 应用程序对 Kafka 主题中的数据进行反向处理。要加入的流之一在相应主题中每单位时间的数据量要大得多。我想控制各个主题的消耗,以便在单个 consumer.poll() 中从每个主题中获得大致相同的事件时间戳。但是,似乎没有任何方法可以控制支持源流的KafkaConsumer 的行为。有没有办法解决?任何见解将不胜感激。

【问题讨论】:

    标签: stream apache-kafka


    【解决方案1】:

    目前Kafka无法控制生产者和消费者的速率限制。

    参考: https://cwiki.apache.org/confluence/display/KAFKA/KIP-13+-+Quotas

    但如果您使用 Apache Spark 作为流处理平台,您可以限制 Kafka 接收器的输入速率。

    【讨论】:

      【解决方案2】:

      在消费者方面,您可以使用consume([num_messages=1][, timeout=-1]) 函数而不是轮询。

      消费([num_messages=1][, timeout=-1]): 使用消息列表(超时时可能为空)。回调可能会作为调用此方法的副作用而执行。 应用程序必须检查返回的 Message 对象的 Message.error() 方法,以区分正确的消息(error() 返回 None)和列表中每个 Message 的错误(有关详细信息,请参见 error().code())。如果 enable.partition.eof 配置属性设置为 True,分区 EOF 事件也将作为消息公开,error().code() 设置为 _PARTITION_EOF。

      • num_messages (int) – 要返回的最大消息数(默认值:1)。
      • timeout (float) – 阻塞等待消息、事件或回调的最长时间(默认值:无限 (-1))。 (秒)

      【讨论】:

        猜你喜欢
        • 2018-07-01
        • 2020-09-19
        • 2018-06-08
        • 1970-01-01
        • 2017-05-16
        • 2020-04-02
        • 2020-03-19
        • 2019-01-10
        • 2017-01-26
        相关资源
        最近更新 更多