当 SDK 有 message 没有 ACK 时,SDK 会持续拉取消息直到 SDK 内的缓存塞满,SDK 不再获取新消息。此时,服务端保存的消费位点为未 ACK 之前的最后一条 message 的位点。
当 SDK 重启时,为了保证消息不丢,服务端会从未 ACK 前一条 message 对应的位点开始重新推送数据,所以 SDK 此时会重复收取一部分消息。