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)) {

Reply via email to