【发布时间】:2020-08-09 08:00:04
【问题描述】:
找到了这两个问题:here和here,但我还是不太明白。 我仍然有(意外?)行为。
我尝试使用此配置记录压缩 kafka 主题
kafka-topics.sh --bootstrap-server localhost:9092 --create --partitions 1 --replication-factor 1 --topic test1 --config "cleanup.policy=compact" --config "delete.retention.ms=1000" --config "segment.ms=1000" --config "min.cleanable.dirty.ratio=0.01" --config "min.compaction.lag.ms=500"
然后我发送这些消息,每个至少有 1 秒的间隔
A: 3
A: 4
A: 5
B: 10
B: 20
B: 30
B: 40
A: 6
我期望的是几秒钟后(配置为 1000?),当我运行 kafka-console-consumer.sh --bootstrap-server localhost:9092 --property print.key=true --topic test1 --from-beginning 时,我应该得到
A: 6
B: 40
相反,我得到了:
A: 5
B: 40
A: 6
如果我发布另一条消息B:50 并运行消费者,我得到:
B: 40
A: 6
B: 50
而不是预期的
A: 6
B: 50
- 实际上,如何配置日志压缩?
- 来自Kafka documentation:日志压缩确保 Kafka 始终为单个主题分区的数据日志中的每个消息键至少保留最后一个已知值
这是否意味着我只能对具有单个分区的主题使用日志压缩?
【问题讨论】:
-
您是如何生成这些消息的以及使用什么配置?我想知道消息 A:6 和 B:40 的顺序切换(这应该与压缩无关)。
-
消息通过API调用产生,API调用调用Spring KafkaTemplate。除了序列化器/反序列化器之外,生产者没有配置。抱歉,交换顺序,这是生产者序列的错字
标签: apache-kafka