gpt4 book ai didi

java - Kafka Stream Punctuator 在重建本地存储数据时访问它

转载 作者:行者123 更新时间:2023-12-02 04:18:29 30 4
gpt4 key购买 nike

我感觉标点符号能够访问本地存储数据,而 Java KafkaStreams 库正在重建它并重播更改日志主题中的项目

让我们描述一下我们的场景:我有一个 KafkaStreams 应用程序 A(用 Java 编写),其中我们从一个主题“传入主题”进行消费,并且使用时间戳加作为键将一些对象放入本地存储中一些唯一的 ID,例如:

key -> 201906122345_ds243132eddsfs值 -> 对象

然后,我们有一个标点符号读取该商店中的任何分钟,检索从“”到现在表示为 yyyymmddhhMM 的一系列商品(因此 201906122345)。我们只想处理这些数据一次。它们被读取、从存储中删除并转发到另一个主题“中间主题”,在那里它们由另一个处理器使用和处理。我们注意到,当我们向应用程序 A 添加节点时,或者当 Kafka 在节点之间重新平衡分区时,我们正在重新处理旧条目。我的猜测是标点符号正在访问本地存储,而 KafkaStreams 库正在重建它。我在重建本地商店时才发现很少这样的案例。

问题:这是预期的行为吗?我是否以错误的方式使用本地商店?我可以以某种方式配置不同的行为,使标点符号在重建本地存储时不起作用吗?

最佳答案

在重新创建存储时,KafkaStreams 不会调用标点符号。但是,KafkaStreams默认提供至少处理语义,因此,如果发生错误并重新平衡分区,则可能会重新处理某些数据。

对于定期重新平衡,即正常关闭或横向扩展,数据实际上不应被处理两次。

也许通过设置 processing.guarantees="exactly_once" 来启用 EOS 可以满足您的需要。但是,如果您在定期/正常重新平衡期间看到重复,则可能存在应用程序错误(或者 KafkaStreams 中存在错误)。很难说。

关于java - Kafka Stream Punctuator 在重建本地存储数据时访问它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56650706/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com