Apache kafka 流处理后从kafka主题中删除消息

Apache kafka 流处理后从kafka主题中删除消息,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,kafka流处理在我们的系统中实现,用于事务处理。解决方案的实现如下: Kafka producer将事件发布到Kafka topic,流处理器处理输入事件并执行聚合操作。在流处理之后,事件将发布到另一个主题。由于第一个主题中未实现使用者,如何从第一个主题中删除已处理的消息。请考虑您的流处理链是第一个主题的使用者。如果出于某种原因需要重新处理原始数据(例如,如果您意识到流处理逻辑中存在错误),那么您可能希望在第一个主题上提供原始消息,即使在处理它们之后也是如此 因此,您不需要删除邮件,您必须针对

kafka流处理在我们的系统中实现,用于事务处理。解决方案的实现如下:


Kafka producer将事件发布到Kafka topic,流处理器处理输入事件并执行聚合操作。在流处理之后,事件将发布到另一个主题。由于第一个主题中未实现使用者,如何从第一个主题中删除已处理的消息。

请考虑您的流处理链是第一个主题的使用者。如果出于某种原因需要重新处理原始数据(例如,如果您意识到流处理逻辑中存在错误),那么您可能希望在第一个主题上提供原始消息,即使在处理它们之后也是如此


因此,您不需要删除邮件,您必须针对该主题设置适合您需要的保留策略。权衡通常是数据可用的时间量与所需的存储量。

考虑到您的流处理链是第一个主题的消费者。如果出于某种原因需要重新处理原始数据(例如,如果您意识到流处理逻辑中存在错误),那么您可能希望在第一个主题上提供原始消息,即使在处理它们之后也是如此


因此,您不需要删除邮件,您必须针对该主题设置适合您需要的保留策略。取舍通常是数据可用的时间量与所需的存储量。

无法手动从卡夫卡删除消息(没有磁盘上的黑客数据,AFAIK)。您只有3个选项:

  • 使用基于时间的保留策略(例如,让kafka自动删除所有超过1小时的邮件)

  • 使用基于存储的保留策略(让kafka将主题大小保持为某个预定义值)

  • 使用主题压缩策略-让卡夫卡保留密钥的最新版本。密钥的所有旧版本都将被删除(压缩)


正如Luciano Afranllie所描述的,您不需要手动删除消息。您可以处理消息,并让卡夫卡根据您的策略管理主题。

无法手动从卡夫卡删除消息(没有磁盘上的黑客数据,AFAIK)。您只有3个选项:

  • 使用基于时间的保留策略(例如,让kafka自动删除所有超过1小时的邮件)

  • 使用基于存储的保留策略(让kafka将主题大小保持为某个预定义值)

  • 使用主题压缩策略-让卡夫卡保留密钥的最新版本。密钥的所有旧版本都将被删除(压缩)


正如Luciano Afranllie所描述的,您不需要手动删除消息。您可以处理消息,并让kafka根据您的策略管理主题。

有一个kafka改进建议(KIP)来为该用例添加此功能

目前,所有用于删除消息的Scala代码都在0.11Kafka中,并且已经过测试


但是,在Java AdminClient API和文档中添加此功能的工作尚未完成

有一个Kafka改进建议(KIP)为这个用例添加了这个功能

目前,所有用于删除消息的Scala代码都在0.11Kafka中,并且已经过测试

但是,在Java AdminClient API和文档中添加此功能的工作尚未完成