diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/PullAPIWrapper.java b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/PullAPIWrapper.java index 83e9e4d0753..b3cc7f709d6 100644 --- a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/PullAPIWrapper.java +++ b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/PullAPIWrapper.java @@ -128,19 +128,21 @@ public PullResult processPullResult(final MessageQueue mq, final PullResult pull this.executeHook(filterMessageContext); } - for (MessageExt msg : msgListFilterAgain) { - String traFlag = msg.getProperty(MessageConst.PROPERTY_TRANSACTION_PREPARED); - if (Boolean.parseBoolean(traFlag)) { - msg.setTransactionId(msg.getProperty(MessageConst.PROPERTY_UNIQ_CLIENT_MESSAGE_ID_KEYIDX)); - } - MessageAccessor.putProperty(msg, MessageConst.PROPERTY_MIN_OFFSET, - Long.toString(pullResult.getMinOffset())); - MessageAccessor.putProperty(msg, MessageConst.PROPERTY_MAX_OFFSET, - Long.toString(pullResult.getMaxOffset())); - msg.setBrokerName(mq.getBrokerName()); - msg.setQueueId(mq.getQueueId()); - if (pullResultExt.getOffsetDelta() != null) { - msg.setQueueOffset(pullResultExt.getOffsetDelta() + msg.getQueueOffset()); + if (!msgListFilterAgain.isEmpty()) { + String minOffset = Long.toString(pullResult.getMinOffset()); + String maxOffset = Long.toString(pullResult.getMaxOffset()); + for (MessageExt msg : msgListFilterAgain) { + String traFlag = msg.getProperty(MessageConst.PROPERTY_TRANSACTION_PREPARED); + if (Boolean.parseBoolean(traFlag)) { + msg.setTransactionId(msg.getProperty(MessageConst.PROPERTY_UNIQ_CLIENT_MESSAGE_ID_KEYIDX)); + } + MessageAccessor.putProperty(msg, MessageConst.PROPERTY_MIN_OFFSET, minOffset); + MessageAccessor.putProperty(msg, MessageConst.PROPERTY_MAX_OFFSET, maxOffset); + msg.setBrokerName(mq.getBrokerName()); + msg.setQueueId(mq.getQueueId()); + if (pullResultExt.getOffsetDelta() != null) { + msg.setQueueOffset(pullResultExt.getOffsetDelta() + msg.getQueueOffset()); + } } }