Apache kafka 墓碑和钥匙库清理

Apache kafka 墓碑和钥匙库清理,apache-kafka,kafka-consumer-api,apache-kafka-streams,Apache Kafka,Kafka Consumer Api,Apache Kafka Streams,我有几个Kafka消费者是用Java实现的,我正在实现一个独立的应用程序来检查记录并删除它们。希望是卡夫卡在压缩主题时会删除状态存储 现在。。。我对卡夫卡创建的不同类型的商店感到有点困惑。对于每种类型的商店,我想知道: 当卡夫卡删除相应主题中的旧记录时,它是否被删除 当您删除相应主题中的墓碑记录时,是否将其删除 我们还在坚持吗 我看到的商店类型如下: KSTREAM-AGGREGATE-STATE-STORE变更日志 KSTREAM-AGGREGATE-STATE-STORE重新分区 (KT

我有几个Kafka消费者是用Java实现的,我正在实现一个独立的应用程序来检查记录并删除它们。希望是卡夫卡在压缩主题时会删除状态存储

现在。。。我对卡夫卡创建的不同类型的商店感到有点困惑。对于每种类型的商店,我想知道:

  • 当卡夫卡删除相应主题中的旧记录时,它是否被删除
  • 当您删除相应主题中的墓碑记录时,是否将其删除
  • 我们还在坚持吗
我看到的商店类型如下:

  • KSTREAM-AGGREGATE-STATE-STORE变更日志
  • KSTREAM-AGGREGATE-STATE-STORE重新分区
  • (KTABLE)状态存储更改日志
  • KSTREAM-KEY-SELECT重新分区
  • 对于使用聚合函数的流拓扑,我们已经有了一个逻辑删除策略,它应该覆盖类型为#1的存储。我们向流应用程序发送一条空消息&它将其作为聚合结果返回

    对于类型为#3的存储,我将在相应的ktable上运行一个逻辑删除应用程序。我希望变更日志会缩小

    然而,对于2型和4型商店,我不知道它们是如何清理的。它们对应于消费者拓扑中的selectKey()+leftJoin()函数。但是,它们被绑定到以kstream为中心的拓扑上,因此我不知道如何清理它们。有没有不涉及阻止经纪人的建议

    #2和#4不是存储——它们是卡夫卡流创建的内部主题

    无法明确清除这些重新分区主题,但Kafka会根据Kafka服务器的
    retention.ms
    配置(如果未明确指定,默认为7天)自动清除这些主题(#2和#4)由Kafka Streams使用
    cleanup.policy=delete

    #2和#4创建的不是存储-它们是由Kafka Streams创建的内部主题


    无法明确清除这些重新分区主题,但Kafka会根据Kafka服务器的
    retention.ms
    配置(如果未明确指定,默认为7天)自动清除这些主题(#2和#4)由Kafka Streams使用
    cleanup.policy=delete

    创建此答案仅适用于较旧的Kafka Streams版本。在较新版本中,保留时间设置为“无穷大”,并且在下游成功处理记录后,Kafka Streams使用显式“删除请求”截断重新分区主题。此答案仅适用于较旧的Kafka Streams版本。在较新版本中,保留时间设置为“无限”,Kafka Streams使用显式“删除请求”在下游成功处理记录后截断重新分区主题。
    我们向流应用程序发送一条null消息,它将其作为聚合结果返回。
    --我假设这不起作用,因为
    null
    -值记录未由
    KStream
    聚合运算符处理--您需要具有非null的“代理删除值”,如果聚合函数看到此“代理删除值”,则让其返回
    null
    .
    我们向流应用程序发送一条空消息,它将其作为聚合结果返回。
    --我假设这不起作用,因为
    null
    -值记录没有被
    KStream
    聚合运算符处理--您需要一个非空的“代理删除值”如果聚合函数看到这个“代理删除值”,则让它返回
    null