You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by do...@apache.org on 2021/11/16 07:10:10 UTC

[rocketmq] branch 5.0.0-alpha-static-topic updated: Add request header builder

This is an automated email from the ASF dual-hosted git repository.

dongeforever pushed a commit to branch 5.0.0-alpha-static-topic
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/5.0.0-alpha-static-topic by this push:
     new 077cf09  Add request header builder
077cf09 is described below

commit 077cf09db3a17c1b9a0fe1a9b18e89d3ae4be0b2
Author: dongeforever <do...@apache.org>
AuthorDate: Tue Nov 16 15:09:59 2021 +0800

    Add request header builder
---
 .../apache/rocketmq/common/rpc/RequestBuilder.java | 65 ++++++++++++++++++++++
 .../common/rpc/TopicQueueRequestHeader.java        |  2 -
 2 files changed, 65 insertions(+), 2 deletions(-)

diff --git a/common/src/main/java/org/apache/rocketmq/common/rpc/RequestBuilder.java b/common/src/main/java/org/apache/rocketmq/common/rpc/RequestBuilder.java
new file mode 100644
index 0000000..aa69b17
--- /dev/null
+++ b/common/src/main/java/org/apache/rocketmq/common/rpc/RequestBuilder.java
@@ -0,0 +1,65 @@
+package org.apache.rocketmq.common.rpc;
+
+import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.common.protocol.RequestCode;
+import org.apache.rocketmq.common.protocol.header.PullMessageRequestHeader;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class RequestBuilder {
+
+    private static Map<Integer, Class> requestCodeMap = new HashMap<Integer, Class>();
+    static {
+        requestCodeMap.put(RequestCode.PULL_MESSAGE, PullMessageRequestHeader.class);
+    }
+
+    public static CommonRpcHeader buildCommonRpcHeader(int requestCode, String destBrokerName) {
+        return buildCommonRpcHeader(requestCode, null, destBrokerName);
+    }
+
+    public static CommonRpcHeader buildCommonRpcHeader(int requestCode, Boolean oneway, String destBrokerName) {
+        Class requestHeaderClass = requestCodeMap.get(requestCode);
+        if (requestHeaderClass == null) {
+            throw new UnsupportedOperationException("unknown " + requestCode);
+        }
+        try {
+            CommonRpcHeader requestHeader = (CommonRpcHeader) requestHeaderClass.newInstance();
+            requestHeader.setOneway(oneway);
+            requestHeader.setBname(destBrokerName);
+            return requestHeader;
+        } catch (Throwable t) {
+            throw new RuntimeException(t);
+        }
+    }
+
+    public static TopicQueueRequestHeader buildTopicQueueRequestHeader(int requestCode, MessageQueue mq) {
+        return buildTopicQueueRequestHeader(requestCode, null, mq.getBrokerName(), mq.getTopic(), mq.getQueueId(), null);
+    }
+
+    public static TopicQueueRequestHeader buildTopicQueueRequestHeader(int requestCode, MessageQueue mq, Boolean physical) {
+        return buildTopicQueueRequestHeader(requestCode, null, mq.getBrokerName(), mq.getTopic(), mq.getQueueId(), physical);
+    }
+
+    public static TopicQueueRequestHeader buildTopicQueueRequestHeader(int requestCode, Boolean oneway, MessageQueue mq, Boolean physical) {
+        return buildTopicQueueRequestHeader(requestCode, oneway, mq.getBrokerName(), mq.getTopic(), mq.getQueueId(), physical);
+    }
+
+    public static TopicQueueRequestHeader buildTopicQueueRequestHeader(int requestCode,  Boolean oneway, String destBrokerName, String topic, int queueId, Boolean physical) {
+        Class requestHeaderClass = requestCodeMap.get(requestCode);
+        if (requestHeaderClass == null) {
+            throw new UnsupportedOperationException("unknown " + requestCode);
+        }
+        try {
+            TopicQueueRequestHeader requestHeader = (TopicQueueRequestHeader) requestHeaderClass.newInstance();
+            requestHeader.setOneway(oneway);
+            requestHeader.setBname(destBrokerName);
+            requestHeader.setTopic(topic);
+            requestHeader.setQueueId(queueId);
+            requestHeader.setPhysical(physical);
+            return requestHeader;
+        } catch (Throwable t) {
+            throw new RuntimeException(t);
+        }
+    }
+}
diff --git a/common/src/main/java/org/apache/rocketmq/common/rpc/TopicQueueRequestHeader.java b/common/src/main/java/org/apache/rocketmq/common/rpc/TopicQueueRequestHeader.java
index 897dfcb..4b0a394 100644
--- a/common/src/main/java/org/apache/rocketmq/common/rpc/TopicQueueRequestHeader.java
+++ b/common/src/main/java/org/apache/rocketmq/common/rpc/TopicQueueRequestHeader.java
@@ -20,12 +20,10 @@ public abstract class TopicQueueRequestHeader extends CommonRpcHeader {
     //Physical or Logical
     protected Boolean physical;
 
-    @Override
     public Boolean getPhysical() {
         return physical;
     }
 
-    @Override
     public void setPhysical(Boolean physical) {
         this.physical = physical;
     }