【问题标题】:kafka streams + how to expire entries in a state store asynchronouslykafka流+如何使状态存储中的条目异步过期
【发布时间】:2020-02-07 22:21:10
【问题描述】:

我有一个 kafka 流拓扑,它从输入主题读取更新某些状态并确定状态条目是否需要保留在状态存储中或可以删除​​。如果它可以被删除,它将被删除,否则我有一个标点符号,每 10 秒运行一次,并且会使状态存储中的项目过期。

我最近发现标点符号在同一个流线程上运行,并且可能会阻塞流的处理。

我可以使用哪些模式在单独的线程池中执行标点符号内的逻辑以避免阻塞流处理?

感谢您的帮助。

【问题讨论】:

  • 这是不可能的。

标签: apache-kafka apache-kafka-streams


【解决方案1】:

Matthias J. Sax 已经说过,到目前为止,国有商店不可能做到这一点,所以他在 Confluent 工作,我相信这是最新消息。

但是,我们在本例中所做的是使用 KStream-KTable 连接而不是状态存储。我不确定你的情况是否可行,但让我解释一下,我们做了什么,也许它对你也有用:

我们有两个主题 A 和 B,主题 A 与 KStream 一起使用。主题 B 与 KTable 一起使用。我们转换 KTable 数据,因此我们可以将它加入到主题 A 的 KStream 中。我们加入它,执行我们的操作并通过将 null 值与主题 B 的原始键写入主题 B 中的数据,使用mapthrough。因此,当我们在主题 A 中获得另一条记录时,我们的 KTable 中不再有要加入的值(正是我们想要的)。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多