apache-kafka - Kafka 在设置retention.ms 时没有删除数据
问题描述
所以当我寻找一种方法来计算一个主题中的消息时,这个很好
kafka-run-class kafka.tools.GetOffsetShell --broker-list broker1:9092,broker2:9092,broker3:9092 --topic rev-dly-upd --time -1
唯一的事情是,当我将retention.ms
配置更改为时retention.ms=1000
,甚至通过运行检查主题是否已配置kafka-topics --describe --zookeeper zookeeper1:2181 --topic rev-dly-upd
。我可以清楚地看到该配置设置为1000 ...
Topic:rev-dly-upd PartitionCount:8 ReplicationFactor:3 Configs:retention.ms=1000
Topic: rev-dly-upd Partition: 0 Leader: 159 Replicas: 159,96,160 Isr: 159,96,160
Topic: rev-dly-upd Partition: 1 Leader: 160 Replicas: 160,159,94 Isr: 94,160,159
Topic: rev-dly-upd Partition: 2 Leader: 94 Replicas: 94,160,95 Isr: 95,94,160
Topic: rev-dly-upd Partition: 3 Leader: 95 Replicas: 95,94,96 Isr: 95,96,94
Topic: rev-dly-upd Partition: 4 Leader: 96 Replicas: 96,95,159 Isr: 95,96,159
Topic: rev-dly-upd Partition: 5 Leader: 159 Replicas: 159,160,94 Isr: 159,94,160
Topic: rev-dly-upd Partition: 6 Leader: 160 Replicas: 160,94,95 Isr: 94,160,95
Topic: rev-dly-upd Partition: 7 Leader: 94 Replicas: 94,95,96 Isr: 95,96,94
然而,当我运行 kafka-run-class kafka.tools.GetOffsetShell --broker-list broker1:9092,broker2:9092,broker3:9092 --topic rev-dly-upd --time -1
all 时,我总是会返回记录。可能是什么原因?
解决方案
基本上我不得不停止使用kafka-run-class kafka.tools.GetOffsetShell
来计算主题中的消息。如果你在谷歌上搜索“如何计算 kafka 主题中的消息数”,很多帖子和事情会让你认为上面的命令,给定正确的参数,会给你一个总消息数。但是,如果您在主题的生命周期内清除了消息,那么它不会为您提供准确的计数。您只需要打开控制台使用者,输出到文本文件,然后使用 old-fashioned 读取该文件的行wc -l
。
推荐阅读
- keras - py_call_impl(callable, dots\$args, dots\$keywords) 中的错误 - 与 Leprechault 类似的情况,但
- docker - Dockerfile EXPOSE 和 Kubernetes 服务/容器端口之间的关系?
- java - 在 GridView 中使用 ItemModel 类更改 card_item.xml 的背景颜色
- c# - 为对象创建映射模板并使用键值对将其反序列化
- mysql - 使用 SQL 将数据批量插入到空(但现有)记录中
- java - 如何在 apache poi 中使用 2 行的单元格引用
- arrays - 如何从角度formData在rest api中以字符串或int数据发布列表数据
- amazon-web-services - 来自 AWS lambda 的内存中查找
- apache - Apache RewriteCond 比较 TIME
- python - CircuitPython 将元组作为参数传递,错误需要 Integer