This is an automated email from the ASF dual-hosted git repository.
RongtongJin pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git
The following commit(s) were added to refs/heads/develop by this push:
new 9b91157f30 [ISSUE #10486] Add getMessageType(Map) overload to
eliminate redundant properties decode (#10487)
9b91157f30 is described below
commit 9b91157f30ad153663224a601060be6e661a6c09
Author: Jiahua Wang <[email protected]>
AuthorDate: Wed Jun 17 14:11:01 2026 +0800
[ISSUE #10486] Add getMessageType(Map) overload to eliminate redundant
properties decode (#10487)
BrokerMetricsManager.getMessageType(SendMessageRequestHeader) is called
once per send to classify the message. It internally decodes the
properties String into a HashMap, but the typical caller
(SendMessageProcessor) has already decoded the same String moments
before. The result is a redundant decode allocation per send (one
HashMap + ~14 String substrings + one Node[]).
This commit adds a public overload getMessageType(Map<String, String>)
that lets callers pass an already-decoded Map and reuse it. The
existing SendMessageRequestHeader overload now delegates to the new
overload; behavior is unchanged for callers that don't have a decoded
Map. Downstream callers (e.g. SendMessageProcessor) can switch to the
new overload in a separate broker-layer commit.
Co-authored-by: wangjiahua.wjh <[email protected]>
---
.../org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git
a/broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java
b/broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java
index 835e9e9857..6d32c7ae74 100644
---
a/broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java
+++
b/broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java
@@ -229,7 +229,10 @@ public class BrokerMetricsManager {
}
public static TopicMessageType getMessageType(SendMessageRequestHeader
requestHeader) {
- Map<String, String> properties =
MessageDecoder.string2messageProperties(requestHeader.getProperties());
+ return
getMessageType(MessageDecoder.string2messageProperties(requestHeader.getProperties()));
+ }
+
+ public static TopicMessageType getMessageType(Map<String, String>
properties) {
String traFlag =
properties.get(MessageConst.PROPERTY_TRANSACTION_PREPARED);
TopicMessageType topicMessageType = TopicMessageType.NORMAL;
if (Boolean.parseBoolean(traFlag)) {