@KafkaListener可以配置为只处理最新的条目吗?

问题描述 投票:0回答:1

根据https://docs.confluence.io/kafka/design/log_compaction.html#compaction-guarantees

任何关注日志头部的消费者都会看到写入的每条消息;这些消息将具有连续的偏移量。

主题设置为[压缩,删除]的清理策略

在 Spring @KafkaListener 中,我想知道是否在一秒钟内发送大量(例如 10000 个条目)所有随机值但相同的密钥,并且 KafkaListener 有 5 秒的

Thread.sleep
只是为了给它一个延迟,它会处理所有 10000 个条目吗?在侦听器中,或者足够聪明地使用相同的密钥删除消息,这样它只需要最新的消息。

java apache-kafka spring-kafka
1个回答
0
投票

监听器将处理所有 10k 消息。根据生产者分区程序的配置方式,这些消息可能会分布在所有分区上、仅发送到一个分区或可能发送到其他分区。默认情况下,Kafka 会对密钥进行哈希处理,并使用它来确定将消息发送到哪个分区,因此所有消息最终都会在一个分区中,然后消费者将处理这 10k 条消息。如果你是kafka新手,我强烈建议你阅读《Kafka权威指南》这本书。 Kafka 是一项复杂的技术,很容易配置错误(并丢失数据)。

这些主题有一些与清理策略配合使用的额外设置。特别是,在

retention.ms
过去(默认情况下为 7 天)之前,消息不会被压缩和删除。还有其他配置属性可以使用,例如
retention.bytes
segment.bytes
以及许多其他属性来配置 kafka 何时删除数据。

© www.soinside.com 2019 - 2024. All rights reserved.