private void postReceiveMessage( final FetchRequest request, final MessageIterator it, final Partition partition) { // 如果offset仍然没有前进,递增重试次数 if (it.getOffset() == 0) { request.incrementRetriesAndGet(); } else { request.resetRetries(); } // 非自动ack模式 if (!partition.isAutoAck()) { // 如果是回滚,则回滚offset,再次发起请求 if (partition.isRollback()) { request.rollbackOffset(); partition.reset(); this.addRequst(request); } // 如果提交,则更新临时offset到存储 else if (partition.isAcked()) { partition.reset(); this.ackRequest(request, it, true); } else { // 都不是,递增临时offset this.ackRequest(request, it, false); } } else { // 自动ack模式 this.ackRequest(request, it, true); } }