From 634e146480a3641a54dcf7d531b2aa3b4b24efff Mon Sep 17 00:00:00 2001 From: "wangjiahua.wjh" Date: Thu, 27 Aug 2026 14:25:53 +0800 Subject: [PATCH] [ISSUE #10969] Hoist per-batch constant min/max offset strings out of message loop in PullAPIWrapper --- .../client/impl/consumer/PullAPIWrapper.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) 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()); + } } }