Apache kafka 使用卡夫卡';s日志压缩,我可以做些什么来保证消费者不';不要错过信息,如果他们没有落后于某些规定的时间限制?

Apache kafka 使用卡夫卡';s日志压缩,我可以做些什么来保证消费者不';不要错过信息,如果他们没有落后于某些规定的时间限制?,apache-kafka,kafka-consumer-api,kafka-producer-api,Apache Kafka,Kafka Consumer Api,Kafka Producer Api,从这一点来看,很明显,如果启用日志压缩,就无法保证日志的“头”中会保留什么内容。 因此,考虑到我有消费者,例如:审计消费者,我如何确保我将维护所有消息至少7天,只有比这更早的消息才有资格压缩 非公开的配置w.r.t log.compression允许我提供这样的保证。这可能吗 您可以设置两个主题。一个没有原木压实,保留期为7天。另一个打开了原木压缩。一个简单的Kafka Streams应用程序可以读取未压缩的主题并写入压缩的主题。如果您的客户端应用程序不想处理两个主题,您可以编写一个包装器,使这

从这一点来看,很明显,如果启用日志压缩,就无法保证日志的“头”中会保留什么内容。 因此,考虑到我有消费者,例如:审计消费者,我如何确保我将维护所有消息至少7天,只有比这更早的消息才有资格压缩


非公开的配置w.r.t log.compression允许我提供这样的保证。这可能吗

您可以设置两个主题。一个没有原木压实,保留期为7天。另一个打开了原木压缩。一个简单的Kafka Streams应用程序可以读取未压缩的主题并写入压缩的主题。如果您的客户端应用程序不想处理两个主题,您可以编写一个包装器,使这两个主题看起来像一个连续的日志。

这难道不能解决您的问题吗?将其设置为7天

可以将日志清理器配置为保留日志的最小未压缩“头”。这是通过设置压缩时间延迟启用的

log.cleaner.min.compression.lag.ms

这可用于防止对超过最小邮件期限的邮件进行压缩。”


(from)

基本上:我想给出一个保证,例如:“如果消费者的落后时间不超过2天,那么他保证看到每一条信息,发布该信息-他只会看到最新的信息”。为什么要使用日志压缩,而不是将所有消息保留一段时间?@MatthiasJ.Sax能够识别从某个时间点更改的密钥列表。是的,这是我考虑过的一个解决方法,但我想知道kafka是否有一个配置来管理同一主题的两个方面,这太好了。你还可以将每个键的最后一条消息存储在nosql数据库中,并将所有未压缩的消息保存在一个主题中7天。很好,看起来这是最近推出的!