首页 > 解决方案 > Kafka Streams - 任务/分区/处理器关系

问题描述

我正在使用低级 API 处理器。我有一个包含 6 个分区的主题。在实现 的类中Processor<K,V>,我定义了一些类变量(非静态)。我知道会有6个任务。当我们启动流应用程序时,我看到有 6 个对象正在实例化,这些对象实现了Processor<K,V>. 我们可以将这些对象实例与任务联系起来吗?在重新平衡期间,我假设分区可以在单独的线程或另一个实例上从一个任务切换到另一个任务。Processor<K,V>如果是这样,是否会为实现在不同线程或实例上重新分配的分区的类实例化一个新对象,并在与该分区对应的现有对象上调用 close 方法?

标签: apache-kafkaapache-kafka-streams

解决方案


如果一个任务从一个线程移动到另一个线程,该任务将被关闭并创建一个包含新处理器对象的新任务。

因此,所有局部成员变量在设计上都是短暂的。

如果您需要在重新平衡之间保留任何状态,则需要将存储附加到Processor.


推荐阅读