【问题标题】:Kafka job assignment & completion卡夫卡工作分配和完成
【发布时间】:2020-02-20 02:34:30
【问题描述】:

我有要求在 KafkaStream 中接收记录,我根据逻辑将这条记录分为 n 条记录。这 n 条记录被推送到另一个流。这 n 条记录是并行处理的。但我需要知道 n 个作业的完成情况,以便我可以发回响应。你能告诉我我怎么能做到这一点。

【问题讨论】:

    标签: apache-kafka-streams


    【解决方案1】:

    我认为最简单的方法是设置一个消费者来订阅该流并进行处理。

    【讨论】:

      【解决方案2】:

      如果我理解正确,您想知道实际上 “N 条消息已处理”。 AFAIK,没有通用的解决方案,但这就是我要做的。

      (注意:我的解决方案假设您有一个消费者在消费第二个流。)

      要知道已经处理了 N 条记录,您必须知道 N 是什么。因此,当您将单个记录分成 N 条记录时,将 N 存储在记录本身中(例如,如果您的记录是 JSON 对象,请添加 "n": 5 键值对)。然后,在处理第二个流(包含 N 条记录的流)的消费者中,您消费的每条消息都执行以下操作:

      1. 消费消息和处理消息
      2. 增加一个计数器(我们称之为 K) - 这可以是内存中的或持久存储支持的计数器
      3. 比较 K 和 N
        • 如果相等,则所有消息都已处理(此时您可能要退出)
        • 否则,还有更多消息需要处理;继续消费

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-07
        • 1970-01-01
        • 2019-01-31
        • 1970-01-01
        • 2017-11-14
        相关资源
        最近更新 更多