【发布时间】:2020-02-16 05:02:09
【问题描述】:
我正在测试 kafka-topics 的工作,但我不明白删除是如何工作的。
我创建了一个简单的主题
retention.ms = 60000
和
segment.ms = 60000
和
cleanup.policy=delete.
在此之后,我创建了一个生产者并发送了一些消息。 消费者接收消息没有问题。 但我希望,一分钟后,如果重复消费者,它不会显示消息,因为它们必须已被删除。但是这种行为不会发生。
如果我在 ksql 中创建一个查询,它是一样的。消息总是出现。
我想我不明白删除是如何工作的。
例子:
1) 主题
./kafka-topics --create --zookeeper localhost:2181 --topic test --
replication-factor 2 --partitions 1 --config "cleanup.policy=delete" --
config "delete.retention.ms=60000" --config "segment.ms=60000"
2) 制作人
./kafka-avro-console-producer --broker-list broker:29092 --topic test--
property parse.key=true --property key.schema='{"type":"long"}' --property
"key.separator=:" --property value.schema='{"type": "record","name":
"ppp","namespace": "test.topic","fields": [{"name": "id","type": "long"}]}'
3) 来自生产者的消息
1:{"id": 1}
2:{"id": 2}
4:{"id": 4}
5:{"id": 5}
4) 消费者
./kafka-avro-console-consumer \
--bootstrap-server broker:29092 \
--property schema.registry.url=http://localhost:8081 \
--topic test--from-beginning --property print.key=true
消费者显示四个消息。
但我希望如果我在一分钟后再次运行消费者(我也等待了更多时间,甚至几个小时),消息不会显示,因为retention.ms 和segment.ms 是一分钟。
消息何时被实际删除?
【问题讨论】:
-
在创建主题时使用retention.ms 代替delete.retention.ms。
标签: apache-kafka