我正在使用kafka 2.10-0.9.0.1 当我通过命令删除主题时,主题被标记为删除。
bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic T.AB_KAFF
但是,当我向此主题发布消息时,当我再次订阅此主题时,主题描述说它的延迟是-ve当前偏移量(最后提交的偏移量)
bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server localhost:9092 --describe --group G.AB_KAFF
主题的最后状态:
GROUP,TOPIC,PARTITION,CURRENT OFFSET,LOG END OFFSET,LAG,OWNER G.AB_KAFF,T.AB_KAFF,0,5,5,0,consumer-2_ / 127.0.0.1 G.AB_KAFF, T.AB_KAFF,1,5,5,0,consumer-2_ / 127.0.0.1
现在我删除了主题。 并向此主题发布消息
再次订阅后的主题状态:
GROUP,TOPIC,PARTITION,CURRENT OFFSET,LOG END OFFSET,LAG,OWNER G.AB_KAFF,T.AB_KAFF,0,5,1,-4,consumer-3_ / 127.0.0.1 G.AB_KAFF, T.AB_KAFF,1,5,0,-5,consumer-3_ / 127.0.0.1
那么为什么kafka将滞后设置为-ve数。 这不是导致问题的可能性吗?
假设我再次订阅已删除的主题,因此在-ve lag为0之前我不会收到任何消息
其他信息:
- 我在当地运行3个kafka节点
- 我添加了属性:delete.topic.enable = true
- 使用partitions = 2,replication-factor = 2
答案 0 :(得分:1)
删除主题后,存储在Kafka中的记录将丢失。因此,对最新偏移的查询返回0
。
组中的使用者实例定期提交特殊主题__consumer-offset-{0..49}
中的最后一个读取记录偏移量。在滞后计算期间,它会latestOffset
- lastReadRecordOffset
,因此在删除主题后kafka-consumers-groups
命令中会显示负滞后。
[kamal@tcltest1 bin]$ sh kafka-run-class.sh kafka.tools.GetOffsetShell --topic test --time -1 --broker-list localhost:9092 # Query to get latest offset
test:0:1000
[kamal@tcltest1 bin]$ sh kafka-topics.sh --topic test --zookeeper localhost:2181 --delete
Topic test is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.
[kamal@tcltest1 bin]$ sh kafka-run-class.sh kafka.tools.GetOffsetShell --topic test --time -1 --broker-list localhost:9092 # After deletion
[kamal@tcltest1 bin]$
存储在Zookeeper中的元数据将被异步删除。 (如果我错了,请纠正我)
[kamal@tcltest1 bin]$ sh zookeeper-shell.sh localhost:2181
Connecting to localhost:2181
Welcome to ZooKeeper!
JLine support is disabled
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
get /brokers/topics/test/partitions/0/state
{"controller_epoch":1,"leader":0,"version":1,"leader_epoch":0,"isr":[0]}
cZxid = 0x13c
ctime = Thu Jun 09 09:56:05 IST 2016
mZxid = 0x13c
mtime = Thu Jun 09 09:56:05 IST 2016
pZxid = 0x13c
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 72
numChildren = 0