You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by aa...@apache.org on 2022/07/15 03:27:39 UTC

[rocketmq-apis] 06/38: Apply IDL update

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

aaronai pushed a commit to branch java
in repository https://gitbox.apache.org/repos/asf/rocketmq-apis.git

commit 4a1ba4e5c31d0a57da365dfefbfa692b7c99e0bb
Author: 凌楚 <ya...@alibaba-inc.com>
AuthorDate: Tue Mar 29 10:38:21 2022 +0800

    Apply IDL update
---
 pom.xml                                            |    2 +-
 .../java/apache/rocketmq/v1/AckMessageRequest.java |   40 +-
 .../rocketmq/v1/AckMessageRequestOrBuilder.java    |   10 +
 src/main/java/apache/rocketmq/v1/Address.java      |    4 +-
 src/main/java/apache/rocketmq/v1/Broker.java       |    4 +-
 .../v1/ChangeInvisibleDurationRequest.java         |    4 +-
 .../v1/ChangeInvisibleDurationResponse.java        |    4 +-
 .../apache/rocketmq/v1/ChangeLogLevelResponse.java |    4 +-
 src/main/java/apache/rocketmq/v1/Digest.java       |    4 +-
 .../apache/rocketmq/v1/EndTransactionRequest.java  |   12 +-
 .../java/apache/rocketmq/v1/FilterExpression.java  |    4 +-
 .../v1/ForwardMessageToDeadLetterQueueRequest.java |   12 +-
 .../apache/rocketmq/v1/HealthCheckRequest.java     |    4 +-
 .../java/apache/rocketmq/v1/HeartbeatRequest.java  |    4 +-
 src/main/java/apache/rocketmq/v1/Message.java      |   21 +-
 .../apache/rocketmq/v1/NackMessageRequest.java     |   12 +-
 .../v1/NotifyClientTerminationRequest.java         |    4 +-
 .../apache/rocketmq/v1/PollCommandRequest.java     |    4 +-
 .../rocketmq/v1/PrintThreadStackTraceCommand.java  |    4 +-
 .../apache/rocketmq/v1/PullMessageRequest.java     |    4 +-
 .../apache/rocketmq/v1/QueryAssignmentRequest.java |    4 +-
 .../apache/rocketmq/v1/ReceiveMessageRequest.java  |    4 +-
 .../v1/RecoverOrphanedTransactionCommand.java      |    4 +-
 .../v1/ReportMessageConsumptionResultRequest.java  |    4 +-
 .../rocketmq/v1/ReportThreadStackTraceRequest.java |    8 +-
 src/main/java/apache/rocketmq/v1/Resource.java     |    8 +-
 .../apache/rocketmq/v1/SendMessageResponse.java    |    8 +-
 .../java/apache/rocketmq/v1/SystemAttribute.java   |   53 +-
 .../rocketmq/v1/SystemAttributeOrBuilder.java      |    9 +
 .../v1/VerifyMessageConsumptionCommand.java        |    4 +-
 .../java/apache/rocketmq/v2/AckMessageRequest.java |  188 +--
 .../rocketmq/v2/AckMessageRequestOrBuilder.java    |   20 +-
 src/main/java/apache/rocketmq/v2/Address.java      |    4 +-
 .../java/apache/rocketmq/v2/AddressScheme.java     |    2 +-
 .../java/apache/rocketmq/v2/Authentication.java    |  653 ---------
 .../rocketmq/v2/AuthenticationOrBuilder.java       |   32 -
 src/main/java/apache/rocketmq/v2/Broker.java       |    4 +-
 .../v2/ChangeInvisibleDurationRequest.java         |    4 +-
 .../v2/ChangeInvisibleDurationResponse.java        |    4 +-
 .../apache/rocketmq/v2/ChangeLogLevelResponse.java |    4 +-
 ...Request.java => ClientOverwrittenSettings.java} |  500 ++++---
 .../v2/ClientOverwrittenSettingsOrBuilder.java     |   47 +
 .../java/apache/rocketmq/v2/ClientSettings.java    | 1125 +++++++++++++++
 .../rocketmq/v2/ClientSettingsOrBuilder.java       |   73 +
 .../{AuthenticationMethod.java => ClientType.java} |   77 +-
 src/main/java/apache/rocketmq/v2/Code.java         |  745 ++++++++++
 src/main/java/apache/rocketmq/v2/Digest.java       |   12 +-
 src/main/java/apache/rocketmq/v2/DigestType.java   |    2 +-
 .../v2/{ConsumeMessageType.java => Direction.java} |   60 +-
 src/main/java/apache/rocketmq/v2/Encoding.java     |    2 +-
 .../apache/rocketmq/v2/EndTransactionRequest.java  |  192 +--
 .../v2/EndTransactionRequestOrBuilder.java         |   16 +-
 .../java/apache/rocketmq/v2/FilterExpression.java  |    4 +-
 .../v2/ForwardMessageToDeadLetterQueueRequest.java |  220 +--
 ...rdMessageToDeadLetterQueueRequestOrBuilder.java |   24 +-
 .../java/apache/rocketmq/v2/HeartbeatRequest.java  |  221 +--
 .../rocketmq/v2/HeartbeatRequestOrBuilder.java     |   18 +-
 src/main/java/apache/rocketmq/v2/MQDomain.java     |  306 +++--
 src/main/java/apache/rocketmq/v2/MQService.java    |  504 +++----
 src/main/java/apache/rocketmq/v2/Message.java      |   21 +-
 src/main/java/apache/rocketmq/v2/MessageType.java  |    2 +-
 .../apache/rocketmq/v2/MessagingServiceGrpc.java   |  128 +-
 ...MessageRequest.java => NackMessageRequest.java} |  362 ++---
 ...ilder.java => NackMessageRequestOrBuilder.java} |   30 +-
 ...MessageResult.java => NackMessageResponse.java} |  215 +--
 ...lder.java => NackMessageResponseOrBuilder.java} |   16 +-
 .../v2/NotifyClientTerminationRequest.java         |  263 ++--
 .../NotifyClientTerminationRequestOrBuilder.java   |   30 +-
 .../rocketmq/v2/PrintThreadStackTraceCommand.java  |  143 +-
 .../v2/PrintThreadStackTraceCommandOrBuilder.java  |   12 +-
 .../rocketmq/v2/{Publish.java => Publishing.java}  |  452 ++----
 ...lishOrBuilder.java => PublishingOrBuilder.java} |   50 +-
 .../apache/rocketmq/v2/PullMessageRequest.java     |  138 --
 .../rocketmq/v2/PullMessageRequestOrBuilder.java   |   12 -
 .../apache/rocketmq/v2/QueryAssignmentRequest.java |  374 -----
 .../v2/QueryAssignmentRequestOrBuilder.java        |   39 -
 .../java/apache/rocketmq/v2/QueryOffsetPolicy.java |    2 +-
 .../java/apache/rocketmq/v2/QueryRouteRequest.java |  188 ---
 .../rocketmq/v2/QueryRouteRequestOrBuilder.java    |   15 -
 .../apache/rocketmq/v2/ReceiveMessageRequest.java  |  328 ++---
 .../v2/ReceiveMessageRequestOrBuilder.java         |   46 +-
 .../v2/RecoverOrphanedTransactionCommand.java      |  123 +-
 ...RecoverOrphanedTransactionCommandOrBuilder.java |   16 +-
 src/main/java/apache/rocketmq/v2/Resource.java     |    8 +-
 src/main/java/apache/rocketmq/v2/ResponseCode.java |  452 ------
 src/main/java/apache/rocketmq/v2/RetryPolicy.java  |   12 +-
 src/main/java/apache/rocketmq/v2/SendReceipt.java  |   73 +-
 .../apache/rocketmq/v2/SendReceiptOrBuilder.java   |    6 +
 src/main/java/apache/rocketmq/v2/Settings.java     |  758 ++++------
 .../java/apache/rocketmq/v2/SettingsOrBuilder.java |   62 +-
 src/main/java/apache/rocketmq/v2/Status.java       |   48 +-
 .../java/apache/rocketmq/v2/StatusOrBuilder.java   |    8 +-
 src/main/java/apache/rocketmq/v2/Subscription.java |  568 --------
 .../apache/rocketmq/v2/SubscriptionOrBuilder.java  |   65 -
 .../java/apache/rocketmq/v2/SystemProperties.java  |  964 ++++++++-----
 .../rocketmq/v2/SystemPropertiesOrBuilder.java     |  163 ++-
 .../java/apache/rocketmq/v2/TelemetryCommand.java  | 1446 +++++++++++++-------
 .../rocketmq/v2/TelemetryCommandOrBuilder.java     |  163 ++-
 .../java/apache/rocketmq/v2/ThreadStackTrace.java  |  403 +++++-
 .../rocketmq/v2/ThreadStackTraceOrBuilder.java     |   36 +-
 src/main/java/apache/rocketmq/v2/Timeout.java      | 1039 --------------
 .../java/apache/rocketmq/v2/TimeoutOrBuilder.java  |   66 -
 .../rocketmq/v2/{Trace.java => Tracing.java}       |  243 ++--
 .../{TraceOrBuilder.java => TracingOrBuilder.java} |   22 +-
 .../apache/rocketmq/v2/VerifyMessageCommand.java   |  143 +-
 .../rocketmq/v2/VerifyMessageCommandOrBuilder.java |   12 +-
 .../apache/rocketmq/v2/VerifyMessageResult.java    |  143 +-
 .../rocketmq/v2/VerifyMessageResultOrBuilder.java  |   12 +-
 .../proto/apache/rocketmq/v2/definition.proto      |  237 +++-
 .../proto/apache/rocketmq/v2/service.proto         |  188 ++-
 110 files changed, 7270 insertions(+), 8405 deletions(-)

diff --git a/pom.xml b/pom.xml
index 04324fd..63857a4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,7 @@
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 
         <grpc.version>1.45.0</grpc.version>
-        <protobuf.version>3.12.0</protobuf.version>
+        <protobuf.version>3.19.4</protobuf.version>
         <annotation-api.version>1.3.2</annotation-api.version>
         <protobuf-maven-plugin.version>0.6.1</protobuf-maven-plugin.version>
         <maven-jar-plugin.version>3.2.0</maven-jar-plugin.version>
diff --git a/src/main/java/apache/rocketmq/v1/AckMessageRequest.java b/src/main/java/apache/rocketmq/v1/AckMessageRequest.java
index 8c9055f..f1dc79d 100644
--- a/src/main/java/apache/rocketmq/v1/AckMessageRequest.java
+++ b/src/main/java/apache/rocketmq/v1/AckMessageRequest.java
@@ -89,8 +89,8 @@ private static final long serialVersionUID = 0L;
             break;
           }
           case 40: {
-            handleCase_ = 5;
             handle_ = input.readInt64();
+            handleCase_ = 5;
             break;
           }
           case 50: {
@@ -263,6 +263,13 @@ private static final long serialVersionUID = 0L;
   }
 
   public static final int RECEIPT_HANDLE_FIELD_NUMBER = 4;
+  /**
+   * <code>string receipt_handle = 4;</code>
+   * @return Whether the receiptHandle field is set.
+   */
+  public boolean hasReceiptHandle() {
+    return handleCase_ == 4;
+  }
   /**
    * <code>string receipt_handle = 4;</code>
    * @return The receiptHandle.
@@ -308,6 +315,14 @@ private static final long serialVersionUID = 0L;
   }
 
   public static final int OFFSET_FIELD_NUMBER = 5;
+  /**
+   * <code>int64 offset = 5;</code>
+   * @return Whether the offset field is set.
+   */
+  @java.lang.Override
+  public boolean hasOffset() {
+    return handleCase_ == 5;
+  }
   /**
    * <code>int64 offset = 5;</code>
    * @return The offset.
@@ -378,7 +393,7 @@ private static final long serialVersionUID = 0L;
     if (topic_ != null) {
       output.writeMessage(2, getTopic());
     }
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 3, clientId_);
     }
     if (handleCase_ == 4) {
@@ -388,7 +403,7 @@ private static final long serialVersionUID = 0L;
       output.writeInt64(
           5, (long)((java.lang.Long) handle_));
     }
-    if (!getMessageIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 6, messageId_);
     }
     unknownFields.writeTo(output);
@@ -408,7 +423,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(2, getTopic());
     }
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, clientId_);
     }
     if (handleCase_ == 4) {
@@ -419,7 +434,7 @@ private static final long serialVersionUID = 0L;
         .computeInt64Size(
             5, (long)((java.lang.Long) handle_));
     }
-    if (!getMessageIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, messageId_);
     }
     size += unknownFields.getSerializedSize();
@@ -1131,6 +1146,14 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
+    /**
+     * <code>string receipt_handle = 4;</code>
+     * @return Whether the receiptHandle field is set.
+     */
+    @java.lang.Override
+    public boolean hasReceiptHandle() {
+      return handleCase_ == 4;
+    }
     /**
      * <code>string receipt_handle = 4;</code>
      * @return The receiptHandle.
@@ -1220,6 +1243,13 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
+    /**
+     * <code>int64 offset = 5;</code>
+     * @return Whether the offset field is set.
+     */
+    public boolean hasOffset() {
+      return handleCase_ == 5;
+    }
     /**
      * <code>int64 offset = 5;</code>
      * @return The offset.
diff --git a/src/main/java/apache/rocketmq/v1/AckMessageRequestOrBuilder.java b/src/main/java/apache/rocketmq/v1/AckMessageRequestOrBuilder.java
index ab2992f..ea86a17 100644
--- a/src/main/java/apache/rocketmq/v1/AckMessageRequestOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v1/AckMessageRequestOrBuilder.java
@@ -49,6 +49,11 @@ public interface AckMessageRequestOrBuilder extends
   com.google.protobuf.ByteString
       getClientIdBytes();
 
+  /**
+   * <code>string receipt_handle = 4;</code>
+   * @return Whether the receiptHandle field is set.
+   */
+  boolean hasReceiptHandle();
   /**
    * <code>string receipt_handle = 4;</code>
    * @return The receiptHandle.
@@ -61,6 +66,11 @@ public interface AckMessageRequestOrBuilder extends
   com.google.protobuf.ByteString
       getReceiptHandleBytes();
 
+  /**
+   * <code>int64 offset = 5;</code>
+   * @return Whether the offset field is set.
+   */
+  boolean hasOffset();
   /**
    * <code>int64 offset = 5;</code>
    * @return The offset.
diff --git a/src/main/java/apache/rocketmq/v1/Address.java b/src/main/java/apache/rocketmq/v1/Address.java
index 42e721c..58f54f3 100644
--- a/src/main/java/apache/rocketmq/v1/Address.java
+++ b/src/main/java/apache/rocketmq/v1/Address.java
@@ -155,7 +155,7 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!getHostBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(host_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 1, host_);
     }
     if (port_ != 0) {
@@ -170,7 +170,7 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (!getHostBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(host_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, host_);
     }
     if (port_ != 0) {
diff --git a/src/main/java/apache/rocketmq/v1/Broker.java b/src/main/java/apache/rocketmq/v1/Broker.java
index 87d32b4..1f072e2 100644
--- a/src/main/java/apache/rocketmq/v1/Broker.java
+++ b/src/main/java/apache/rocketmq/v1/Broker.java
@@ -228,7 +228,7 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!getNameBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
     }
     if (id_ != 0) {
@@ -246,7 +246,7 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (!getNameBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
     }
     if (id_ != 0) {
diff --git a/src/main/java/apache/rocketmq/v1/ChangeInvisibleDurationRequest.java b/src/main/java/apache/rocketmq/v1/ChangeInvisibleDurationRequest.java
index dfca62b..fded7f3 100644
--- a/src/main/java/apache/rocketmq/v1/ChangeInvisibleDurationRequest.java
+++ b/src/main/java/apache/rocketmq/v1/ChangeInvisibleDurationRequest.java
@@ -282,7 +282,7 @@ private static final long serialVersionUID = 0L;
     if (topic_ != null) {
       output.writeMessage(2, getTopic());
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 3, receiptHandle_);
     }
     if (invisibleDuration_ != null) {
@@ -305,7 +305,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(2, getTopic());
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, receiptHandle_);
     }
     if (invisibleDuration_ != null) {
diff --git a/src/main/java/apache/rocketmq/v1/ChangeInvisibleDurationResponse.java b/src/main/java/apache/rocketmq/v1/ChangeInvisibleDurationResponse.java
index cd433e1..d29218c 100644
--- a/src/main/java/apache/rocketmq/v1/ChangeInvisibleDurationResponse.java
+++ b/src/main/java/apache/rocketmq/v1/ChangeInvisibleDurationResponse.java
@@ -189,7 +189,7 @@ private static final long serialVersionUID = 0L;
     if (common_ != null) {
       output.writeMessage(1, getCommon());
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 2, receiptHandle_);
     }
     unknownFields.writeTo(output);
@@ -205,7 +205,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(1, getCommon());
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, receiptHandle_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/src/main/java/apache/rocketmq/v1/ChangeLogLevelResponse.java b/src/main/java/apache/rocketmq/v1/ChangeLogLevelResponse.java
index 0f2b507..42f5c7b 100644
--- a/src/main/java/apache/rocketmq/v1/ChangeLogLevelResponse.java
+++ b/src/main/java/apache/rocketmq/v1/ChangeLogLevelResponse.java
@@ -139,7 +139,7 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!getRemarkBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(remark_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 1, remark_);
     }
     unknownFields.writeTo(output);
@@ -151,7 +151,7 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (!getRemarkBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(remark_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, remark_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/src/main/java/apache/rocketmq/v1/Digest.java b/src/main/java/apache/rocketmq/v1/Digest.java
index 9f9474d..d1c163a 100644
--- a/src/main/java/apache/rocketmq/v1/Digest.java
+++ b/src/main/java/apache/rocketmq/v1/Digest.java
@@ -183,7 +183,7 @@ private static final long serialVersionUID = 0L;
     if (type_ != apache.rocketmq.v1.DigestType.CRC32.getNumber()) {
       output.writeEnum(1, type_);
     }
-    if (!getChecksumBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(checksum_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 2, checksum_);
     }
     unknownFields.writeTo(output);
@@ -199,7 +199,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeEnumSize(1, type_);
     }
-    if (!getChecksumBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(checksum_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, checksum_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/src/main/java/apache/rocketmq/v1/EndTransactionRequest.java b/src/main/java/apache/rocketmq/v1/EndTransactionRequest.java
index 2dee99b..e62a660 100644
--- a/src/main/java/apache/rocketmq/v1/EndTransactionRequest.java
+++ b/src/main/java/apache/rocketmq/v1/EndTransactionRequest.java
@@ -539,10 +539,10 @@ private static final long serialVersionUID = 0L;
     if (group_ != null) {
       output.writeMessage(1, getGroup());
     }
-    if (!getMessageIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 2, messageId_);
     }
-    if (!getTransactionIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(transactionId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 3, transactionId_);
     }
     if (resolution_ != apache.rocketmq.v1.EndTransactionRequest.TransactionResolution.COMMIT.getNumber()) {
@@ -551,7 +551,7 @@ private static final long serialVersionUID = 0L;
     if (source_ != apache.rocketmq.v1.EndTransactionRequest.Source.CLIENT.getNumber()) {
       output.writeEnum(5, source_);
     }
-    if (!getTraceContextBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(traceContext_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 6, traceContext_);
     }
     unknownFields.writeTo(output);
@@ -567,10 +567,10 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(1, getGroup());
     }
-    if (!getMessageIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, messageId_);
     }
-    if (!getTransactionIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(transactionId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, transactionId_);
     }
     if (resolution_ != apache.rocketmq.v1.EndTransactionRequest.TransactionResolution.COMMIT.getNumber()) {
@@ -581,7 +581,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeEnumSize(5, source_);
     }
-    if (!getTraceContextBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(traceContext_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, traceContext_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/src/main/java/apache/rocketmq/v1/FilterExpression.java b/src/main/java/apache/rocketmq/v1/FilterExpression.java
index c6b1061..cd0e325 100644
--- a/src/main/java/apache/rocketmq/v1/FilterExpression.java
+++ b/src/main/java/apache/rocketmq/v1/FilterExpression.java
@@ -168,7 +168,7 @@ private static final long serialVersionUID = 0L;
     if (type_ != apache.rocketmq.v1.FilterType.TAG.getNumber()) {
       output.writeEnum(1, type_);
     }
-    if (!getExpressionBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(expression_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 2, expression_);
     }
     unknownFields.writeTo(output);
@@ -184,7 +184,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeEnumSize(1, type_);
     }
-    if (!getExpressionBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(expression_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, expression_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/src/main/java/apache/rocketmq/v1/ForwardMessageToDeadLetterQueueRequest.java b/src/main/java/apache/rocketmq/v1/ForwardMessageToDeadLetterQueueRequest.java
index 3d64cf5..f083653 100644
--- a/src/main/java/apache/rocketmq/v1/ForwardMessageToDeadLetterQueueRequest.java
+++ b/src/main/java/apache/rocketmq/v1/ForwardMessageToDeadLetterQueueRequest.java
@@ -345,13 +345,13 @@ private static final long serialVersionUID = 0L;
     if (topic_ != null) {
       output.writeMessage(2, getTopic());
     }
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 3, clientId_);
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 4, receiptHandle_);
     }
-    if (!getMessageIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 5, messageId_);
     }
     if (deliveryAttempt_ != 0) {
@@ -377,13 +377,13 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(2, getTopic());
     }
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, clientId_);
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, receiptHandle_);
     }
-    if (!getMessageIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, messageId_);
     }
     if (deliveryAttempt_ != 0) {
diff --git a/src/main/java/apache/rocketmq/v1/HealthCheckRequest.java b/src/main/java/apache/rocketmq/v1/HealthCheckRequest.java
index 919f40b..7312666 100644
--- a/src/main/java/apache/rocketmq/v1/HealthCheckRequest.java
+++ b/src/main/java/apache/rocketmq/v1/HealthCheckRequest.java
@@ -181,7 +181,7 @@ private static final long serialVersionUID = 0L;
     if (group_ != null) {
       output.writeMessage(1, getGroup());
     }
-    if (!getClientHostBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientHost_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 2, clientHost_);
     }
     unknownFields.writeTo(output);
@@ -197,7 +197,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(1, getGroup());
     }
-    if (!getClientHostBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientHost_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, clientHost_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/src/main/java/apache/rocketmq/v1/HeartbeatRequest.java b/src/main/java/apache/rocketmq/v1/HeartbeatRequest.java
index ca11786..4f6fee0 100644
--- a/src/main/java/apache/rocketmq/v1/HeartbeatRequest.java
+++ b/src/main/java/apache/rocketmq/v1/HeartbeatRequest.java
@@ -286,7 +286,7 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 1, clientId_);
     }
     if (clientDataCase_ == 2) {
@@ -307,7 +307,7 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, clientId_);
     }
     if (clientDataCase_ == 2) {
diff --git a/src/main/java/apache/rocketmq/v1/Message.java b/src/main/java/apache/rocketmq/v1/Message.java
index 5344f74..3dc9ff6 100644
--- a/src/main/java/apache/rocketmq/v1/Message.java
+++ b/src/main/java/apache/rocketmq/v1/Message.java
@@ -205,7 +205,7 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public boolean containsUserAttribute(
       java.lang.String key) {
-    if (key == null) { throw new java.lang.NullPointerException(); }
+    if (key == null) { throw new NullPointerException("map key"); }
     return internalGetUserAttribute().getMap().containsKey(key);
   }
   /**
@@ -248,7 +248,7 @@ private static final long serialVersionUID = 0L;
   public java.lang.String getUserAttributeOrDefault(
       java.lang.String key,
       java.lang.String defaultValue) {
-    if (key == null) { throw new java.lang.NullPointerException(); }
+    if (key == null) { throw new NullPointerException("map key"); }
     java.util.Map<java.lang.String, java.lang.String> map =
         internalGetUserAttribute().getMap();
     return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -268,7 +268,7 @@ private static final long serialVersionUID = 0L;
 
   public java.lang.String getUserAttributeOrThrow(
       java.lang.String key) {
-    if (key == null) { throw new java.lang.NullPointerException(); }
+    if (key == null) { throw new NullPointerException("map key"); }
     java.util.Map<java.lang.String, java.lang.String> map =
         internalGetUserAttribute().getMap();
     if (!map.containsKey(key)) {
@@ -887,7 +887,7 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean containsUserAttribute(
         java.lang.String key) {
-      if (key == null) { throw new java.lang.NullPointerException(); }
+      if (key == null) { throw new NullPointerException("map key"); }
       return internalGetUserAttribute().getMap().containsKey(key);
     }
     /**
@@ -930,7 +930,7 @@ private static final long serialVersionUID = 0L;
     public java.lang.String getUserAttributeOrDefault(
         java.lang.String key,
         java.lang.String defaultValue) {
-      if (key == null) { throw new java.lang.NullPointerException(); }
+      if (key == null) { throw new NullPointerException("map key"); }
       java.util.Map<java.lang.String, java.lang.String> map =
           internalGetUserAttribute().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -950,7 +950,7 @@ private static final long serialVersionUID = 0L;
 
     public java.lang.String getUserAttributeOrThrow(
         java.lang.String key) {
-      if (key == null) { throw new java.lang.NullPointerException(); }
+      if (key == null) { throw new NullPointerException("map key"); }
       java.util.Map<java.lang.String, java.lang.String> map =
           internalGetUserAttribute().getMap();
       if (!map.containsKey(key)) {
@@ -978,7 +978,7 @@ private static final long serialVersionUID = 0L;
 
     public Builder removeUserAttribute(
         java.lang.String key) {
-      if (key == null) { throw new java.lang.NullPointerException(); }
+      if (key == null) { throw new NullPointerException("map key"); }
       internalGetMutableUserAttribute().getMutableMap()
           .remove(key);
       return this;
@@ -1005,8 +1005,11 @@ private static final long serialVersionUID = 0L;
     public Builder putUserAttribute(
         java.lang.String key,
         java.lang.String value) {
-      if (key == null) { throw new java.lang.NullPointerException(); }
-      if (value == null) { throw new java.lang.NullPointerException(); }
+      if (key == null) { throw new NullPointerException("map key"); }
+      if (value == null) {
+  throw new NullPointerException("map value");
+}
+
       internalGetMutableUserAttribute().getMutableMap()
           .put(key, value);
       return this;
diff --git a/src/main/java/apache/rocketmq/v1/NackMessageRequest.java b/src/main/java/apache/rocketmq/v1/NackMessageRequest.java
index f25f9ab..ee7b4cc 100644
--- a/src/main/java/apache/rocketmq/v1/NackMessageRequest.java
+++ b/src/main/java/apache/rocketmq/v1/NackMessageRequest.java
@@ -345,13 +345,13 @@ private static final long serialVersionUID = 0L;
     if (topic_ != null) {
       output.writeMessage(2, getTopic());
     }
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 3, clientId_);
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 4, receiptHandle_);
     }
-    if (!getMessageIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 5, messageId_);
     }
     if (deliveryAttempt_ != 0) {
@@ -377,13 +377,13 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(2, getTopic());
     }
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, clientId_);
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, receiptHandle_);
     }
-    if (!getMessageIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, messageId_);
     }
     if (deliveryAttempt_ != 0) {
diff --git a/src/main/java/apache/rocketmq/v1/NotifyClientTerminationRequest.java b/src/main/java/apache/rocketmq/v1/NotifyClientTerminationRequest.java
index 9e627ef..b22927d 100644
--- a/src/main/java/apache/rocketmq/v1/NotifyClientTerminationRequest.java
+++ b/src/main/java/apache/rocketmq/v1/NotifyClientTerminationRequest.java
@@ -276,7 +276,7 @@ private static final long serialVersionUID = 0L;
     if (groupCase_ == 2) {
       output.writeMessage(2, (apache.rocketmq.v1.Resource) group_);
     }
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 3, clientId_);
     }
     unknownFields.writeTo(output);
@@ -296,7 +296,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(2, (apache.rocketmq.v1.Resource) group_);
     }
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, clientId_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/src/main/java/apache/rocketmq/v1/PollCommandRequest.java b/src/main/java/apache/rocketmq/v1/PollCommandRequest.java
index b37d993..1c32e49 100644
--- a/src/main/java/apache/rocketmq/v1/PollCommandRequest.java
+++ b/src/main/java/apache/rocketmq/v1/PollCommandRequest.java
@@ -324,7 +324,7 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 1, clientId_);
     }
     for (int i = 0; i < topics_.size(); i++) {
@@ -345,7 +345,7 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, clientId_);
     }
     for (int i = 0; i < topics_.size(); i++) {
diff --git a/src/main/java/apache/rocketmq/v1/PrintThreadStackTraceCommand.java b/src/main/java/apache/rocketmq/v1/PrintThreadStackTraceCommand.java
index 9677721..130c2b5 100644
--- a/src/main/java/apache/rocketmq/v1/PrintThreadStackTraceCommand.java
+++ b/src/main/java/apache/rocketmq/v1/PrintThreadStackTraceCommand.java
@@ -139,7 +139,7 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!getCommandIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(commandId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 1, commandId_);
     }
     unknownFields.writeTo(output);
@@ -151,7 +151,7 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (!getCommandIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(commandId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, commandId_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/src/main/java/apache/rocketmq/v1/PullMessageRequest.java b/src/main/java/apache/rocketmq/v1/PullMessageRequest.java
index d2338f5..32c6dbc 100644
--- a/src/main/java/apache/rocketmq/v1/PullMessageRequest.java
+++ b/src/main/java/apache/rocketmq/v1/PullMessageRequest.java
@@ -345,7 +345,7 @@ private static final long serialVersionUID = 0L;
     if (filterExpression_ != null) {
       output.writeMessage(6, getFilterExpression());
     }
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 7, clientId_);
     }
     unknownFields.writeTo(output);
@@ -381,7 +381,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(6, getFilterExpression());
     }
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, clientId_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/src/main/java/apache/rocketmq/v1/QueryAssignmentRequest.java b/src/main/java/apache/rocketmq/v1/QueryAssignmentRequest.java
index 057e6c1..83d6d06 100644
--- a/src/main/java/apache/rocketmq/v1/QueryAssignmentRequest.java
+++ b/src/main/java/apache/rocketmq/v1/QueryAssignmentRequest.java
@@ -274,7 +274,7 @@ private static final long serialVersionUID = 0L;
     if (group_ != null) {
       output.writeMessage(2, getGroup());
     }
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 3, clientId_);
     }
     if (endpoints_ != null) {
@@ -297,7 +297,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(2, getGroup());
     }
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, clientId_);
     }
     if (endpoints_ != null) {
diff --git a/src/main/java/apache/rocketmq/v1/ReceiveMessageRequest.java b/src/main/java/apache/rocketmq/v1/ReceiveMessageRequest.java
index 8648228..b6688c0 100644
--- a/src/main/java/apache/rocketmq/v1/ReceiveMessageRequest.java
+++ b/src/main/java/apache/rocketmq/v1/ReceiveMessageRequest.java
@@ -434,7 +434,7 @@ private static final long serialVersionUID = 0L;
     if (group_ != null) {
       output.writeMessage(1, getGroup());
     }
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 2, clientId_);
     }
     if (partition_ != null) {
@@ -474,7 +474,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(1, getGroup());
     }
-    if (!getClientIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, clientId_);
     }
     if (partition_ != null) {
diff --git a/src/main/java/apache/rocketmq/v1/RecoverOrphanedTransactionCommand.java b/src/main/java/apache/rocketmq/v1/RecoverOrphanedTransactionCommand.java
index e24fcb2..c19276a 100644
--- a/src/main/java/apache/rocketmq/v1/RecoverOrphanedTransactionCommand.java
+++ b/src/main/java/apache/rocketmq/v1/RecoverOrphanedTransactionCommand.java
@@ -181,7 +181,7 @@ private static final long serialVersionUID = 0L;
     if (orphanedTransactionalMessage_ != null) {
       output.writeMessage(1, getOrphanedTransactionalMessage());
     }
-    if (!getTransactionIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(transactionId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 2, transactionId_);
     }
     unknownFields.writeTo(output);
@@ -197,7 +197,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(1, getOrphanedTransactionalMessage());
     }
-    if (!getTransactionIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(transactionId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, transactionId_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/src/main/java/apache/rocketmq/v1/ReportMessageConsumptionResultRequest.java b/src/main/java/apache/rocketmq/v1/ReportMessageConsumptionResultRequest.java
index 8c68f14..9ac767a 100644
--- a/src/main/java/apache/rocketmq/v1/ReportMessageConsumptionResultRequest.java
+++ b/src/main/java/apache/rocketmq/v1/ReportMessageConsumptionResultRequest.java
@@ -196,7 +196,7 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!getCommandIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(commandId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 1, commandId_);
     }
     if (status_ != null) {
@@ -211,7 +211,7 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (!getCommandIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(commandId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, commandId_);
     }
     if (status_ != null) {
diff --git a/src/main/java/apache/rocketmq/v1/ReportThreadStackTraceRequest.java b/src/main/java/apache/rocketmq/v1/ReportThreadStackTraceRequest.java
index e97f291..67b20b1 100644
--- a/src/main/java/apache/rocketmq/v1/ReportThreadStackTraceRequest.java
+++ b/src/main/java/apache/rocketmq/v1/ReportThreadStackTraceRequest.java
@@ -184,10 +184,10 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!getCommandIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(commandId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 1, commandId_);
     }
-    if (!getThreadStackTraceBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(threadStackTrace_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 2, threadStackTrace_);
     }
     unknownFields.writeTo(output);
@@ -199,10 +199,10 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (!getCommandIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(commandId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, commandId_);
     }
-    if (!getThreadStackTraceBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(threadStackTrace_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, threadStackTrace_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/src/main/java/apache/rocketmq/v1/Resource.java b/src/main/java/apache/rocketmq/v1/Resource.java
index 0a276eb..344245c 100644
--- a/src/main/java/apache/rocketmq/v1/Resource.java
+++ b/src/main/java/apache/rocketmq/v1/Resource.java
@@ -194,10 +194,10 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!getResourceNamespaceBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceNamespace_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 1, resourceNamespace_);
     }
-    if (!getNameBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
     }
     unknownFields.writeTo(output);
@@ -209,10 +209,10 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (!getResourceNamespaceBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceNamespace_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, resourceNamespace_);
     }
-    if (!getNameBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/src/main/java/apache/rocketmq/v1/SendMessageResponse.java b/src/main/java/apache/rocketmq/v1/SendMessageResponse.java
index 1f08f7e..2003a87 100644
--- a/src/main/java/apache/rocketmq/v1/SendMessageResponse.java
+++ b/src/main/java/apache/rocketmq/v1/SendMessageResponse.java
@@ -226,10 +226,10 @@ private static final long serialVersionUID = 0L;
     if (common_ != null) {
       output.writeMessage(1, getCommon());
     }
-    if (!getMessageIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 2, messageId_);
     }
-    if (!getTransactionIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(transactionId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 3, transactionId_);
     }
     unknownFields.writeTo(output);
@@ -245,10 +245,10 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(1, getCommon());
     }
-    if (!getMessageIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, messageId_);
     }
-    if (!getTransactionIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(transactionId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, transactionId_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/src/main/java/apache/rocketmq/v1/SystemAttribute.java b/src/main/java/apache/rocketmq/v1/SystemAttribute.java
index b778cd4..2889e9c 100644
--- a/src/main/java/apache/rocketmq/v1/SystemAttribute.java
+++ b/src/main/java/apache/rocketmq/v1/SystemAttribute.java
@@ -158,8 +158,8 @@ private static final long serialVersionUID = 0L;
             break;
           }
           case 96: {
-            timedDeliveryCase_ = 12;
             timedDelivery_ = input.readInt32();
+            timedDeliveryCase_ = 12;
             break;
           }
           case 106: {
@@ -763,6 +763,18 @@ private static final long serialVersionUID = 0L;
   }
 
   public static final int DELAY_LEVEL_FIELD_NUMBER = 12;
+  /**
+   * <pre>
+   * Level-based delay strategy.
+   * </pre>
+   *
+   * <code>int32 delay_level = 12;</code>
+   * @return Whether the delayLevel field is set.
+   */
+  @java.lang.Override
+  public boolean hasDelayLevel() {
+    return timedDeliveryCase_ == 12;
+  }
   /**
    * <pre>
    * Level-based delay strategy.
@@ -1088,13 +1100,13 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!getTagBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tag_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 1, tag_);
     }
     for (int i = 0; i < keys_.size(); i++) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 2, keys_.getRaw(i));
     }
-    if (!getMessageIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 3, messageId_);
     }
     if (bodyDigest_ != null) {
@@ -1109,13 +1121,13 @@ private static final long serialVersionUID = 0L;
     if (bornTimestamp_ != null) {
       output.writeMessage(7, getBornTimestamp());
     }
-    if (!getBornHostBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(bornHost_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 8, bornHost_);
     }
     if (storeTimestamp_ != null) {
       output.writeMessage(9, getStoreTimestamp());
     }
-    if (!getStoreHostBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storeHost_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 10, storeHost_);
     }
     if (timedDeliveryCase_ == 11) {
@@ -1125,7 +1137,7 @@ private static final long serialVersionUID = 0L;
       output.writeInt32(
           12, (int)((java.lang.Integer) timedDelivery_));
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 13, receiptHandle_);
     }
     if (partitionId_ != 0) {
@@ -1143,10 +1155,10 @@ private static final long serialVersionUID = 0L;
     if (producerGroup_ != null) {
       output.writeMessage(18, getProducerGroup());
     }
-    if (!getMessageGroupBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageGroup_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 19, messageGroup_);
     }
-    if (!getTraceContextBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(traceContext_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 20, traceContext_);
     }
     if (orphanedTransactionRecoveryPeriod_ != null) {
@@ -1161,7 +1173,7 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (!getTagBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tag_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, tag_);
     }
     {
@@ -1172,7 +1184,7 @@ private static final long serialVersionUID = 0L;
       size += dataSize;
       size += 1 * getKeysList().size();
     }
-    if (!getMessageIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, messageId_);
     }
     if (bodyDigest_ != null) {
@@ -1191,14 +1203,14 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(7, getBornTimestamp());
     }
-    if (!getBornHostBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(bornHost_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, bornHost_);
     }
     if (storeTimestamp_ != null) {
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(9, getStoreTimestamp());
     }
-    if (!getStoreHostBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storeHost_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, storeHost_);
     }
     if (timedDeliveryCase_ == 11) {
@@ -1210,7 +1222,7 @@ private static final long serialVersionUID = 0L;
         .computeInt32Size(
             12, (int)((java.lang.Integer) timedDelivery_));
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, receiptHandle_);
     }
     if (partitionId_ != 0) {
@@ -1233,10 +1245,10 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(18, getProducerGroup());
     }
-    if (!getMessageGroupBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageGroup_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(19, messageGroup_);
     }
-    if (!getTraceContextBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(traceContext_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(20, traceContext_);
     }
     if (orphanedTransactionRecoveryPeriod_ != null) {
@@ -3195,6 +3207,17 @@ private static final long serialVersionUID = 0L;
       return deliveryTimestampBuilder_;
     }
 
+    /**
+     * <pre>
+     * Level-based delay strategy.
+     * </pre>
+     *
+     * <code>int32 delay_level = 12;</code>
+     * @return Whether the delayLevel field is set.
+     */
+    public boolean hasDelayLevel() {
+      return timedDeliveryCase_ == 12;
+    }
     /**
      * <pre>
      * Level-based delay strategy.
diff --git a/src/main/java/apache/rocketmq/v1/SystemAttributeOrBuilder.java b/src/main/java/apache/rocketmq/v1/SystemAttributeOrBuilder.java
index 7eba9ee..f53a2c9 100644
--- a/src/main/java/apache/rocketmq/v1/SystemAttributeOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v1/SystemAttributeOrBuilder.java
@@ -280,6 +280,15 @@ public interface SystemAttributeOrBuilder extends
    */
   com.google.protobuf.TimestampOrBuilder getDeliveryTimestampOrBuilder();
 
+  /**
+   * <pre>
+   * Level-based delay strategy.
+   * </pre>
+   *
+   * <code>int32 delay_level = 12;</code>
+   * @return Whether the delayLevel field is set.
+   */
+  boolean hasDelayLevel();
   /**
    * <pre>
    * Level-based delay strategy.
diff --git a/src/main/java/apache/rocketmq/v1/VerifyMessageConsumptionCommand.java b/src/main/java/apache/rocketmq/v1/VerifyMessageConsumptionCommand.java
index 1e5a200..b900905 100644
--- a/src/main/java/apache/rocketmq/v1/VerifyMessageConsumptionCommand.java
+++ b/src/main/java/apache/rocketmq/v1/VerifyMessageConsumptionCommand.java
@@ -178,7 +178,7 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!getCommandIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(commandId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 1, commandId_);
     }
     if (message_ != null) {
@@ -193,7 +193,7 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (!getCommandIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(commandId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, commandId_);
     }
     if (message_ != null) {
diff --git a/src/main/java/apache/rocketmq/v2/AckMessageRequest.java b/src/main/java/apache/rocketmq/v2/AckMessageRequest.java
index 47f37f7..d5a9924 100644
--- a/src/main/java/apache/rocketmq/v2/AckMessageRequest.java
+++ b/src/main/java/apache/rocketmq/v2/AckMessageRequest.java
@@ -16,7 +16,6 @@ private static final long serialVersionUID = 0L;
     super(builder);
   }
   private AckMessageRequest() {
-    clientId_ = "";
     receiptHandle_ = "";
     messageId_ = "";
   }
@@ -80,16 +79,10 @@ private static final long serialVersionUID = 0L;
           case 26: {
             java.lang.String s = input.readStringRequireUtf8();
 
-            clientId_ = s;
-            break;
-          }
-          case 34: {
-            java.lang.String s = input.readStringRequireUtf8();
-
             receiptHandle_ = s;
             break;
           }
-          case 42: {
+          case 34: {
             java.lang.String s = input.readStringRequireUtf8();
 
             messageId_ = s;
@@ -179,48 +172,10 @@ private static final long serialVersionUID = 0L;
     return getTopic();
   }
 
-  public static final int CLIENT_ID_FIELD_NUMBER = 3;
-  private volatile java.lang.Object clientId_;
-  /**
-   * <code>string client_id = 3;</code>
-   * @return The clientId.
-   */
-  @java.lang.Override
-  public java.lang.String getClientId() {
-    java.lang.Object ref = clientId_;
-    if (ref instanceof java.lang.String) {
-      return (java.lang.String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      java.lang.String s = bs.toStringUtf8();
-      clientId_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string client_id = 3;</code>
-   * @return The bytes for clientId.
-   */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getClientIdBytes() {
-    java.lang.Object ref = clientId_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      clientId_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
-    }
-  }
-
-  public static final int RECEIPT_HANDLE_FIELD_NUMBER = 4;
+  public static final int RECEIPT_HANDLE_FIELD_NUMBER = 3;
   private volatile java.lang.Object receiptHandle_;
   /**
-   * <code>string receipt_handle = 4;</code>
+   * <code>string receipt_handle = 3;</code>
    * @return The receiptHandle.
    */
   @java.lang.Override
@@ -237,7 +192,7 @@ private static final long serialVersionUID = 0L;
     }
   }
   /**
-   * <code>string receipt_handle = 4;</code>
+   * <code>string receipt_handle = 3;</code>
    * @return The bytes for receiptHandle.
    */
   @java.lang.Override
@@ -255,10 +210,10 @@ private static final long serialVersionUID = 0L;
     }
   }
 
-  public static final int MESSAGE_ID_FIELD_NUMBER = 5;
+  public static final int MESSAGE_ID_FIELD_NUMBER = 4;
   private volatile java.lang.Object messageId_;
   /**
-   * <code>string message_id = 5;</code>
+   * <code>string message_id = 4;</code>
    * @return The messageId.
    */
   @java.lang.Override
@@ -275,7 +230,7 @@ private static final long serialVersionUID = 0L;
     }
   }
   /**
-   * <code>string message_id = 5;</code>
+   * <code>string message_id = 4;</code>
    * @return The bytes for messageId.
    */
   @java.lang.Override
@@ -313,14 +268,11 @@ private static final long serialVersionUID = 0L;
     if (topic_ != null) {
       output.writeMessage(2, getTopic());
     }
-    if (!getClientIdBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 3, clientId_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 3, receiptHandle_);
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 4, receiptHandle_);
-    }
-    if (!getMessageIdBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 5, messageId_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 4, messageId_);
     }
     unknownFields.writeTo(output);
   }
@@ -339,14 +291,11 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(2, getTopic());
     }
-    if (!getClientIdBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, clientId_);
-    }
-    if (!getReceiptHandleBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, receiptHandle_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, receiptHandle_);
     }
-    if (!getMessageIdBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, messageId_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, messageId_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -373,8 +322,6 @@ private static final long serialVersionUID = 0L;
       if (!getTopic()
           .equals(other.getTopic())) return false;
     }
-    if (!getClientId()
-        .equals(other.getClientId())) return false;
     if (!getReceiptHandle()
         .equals(other.getReceiptHandle())) return false;
     if (!getMessageId()
@@ -398,8 +345,6 @@ private static final long serialVersionUID = 0L;
       hash = (37 * hash) + TOPIC_FIELD_NUMBER;
       hash = (53 * hash) + getTopic().hashCode();
     }
-    hash = (37 * hash) + CLIENT_ID_FIELD_NUMBER;
-    hash = (53 * hash) + getClientId().hashCode();
     hash = (37 * hash) + RECEIPT_HANDLE_FIELD_NUMBER;
     hash = (53 * hash) + getReceiptHandle().hashCode();
     hash = (37 * hash) + MESSAGE_ID_FIELD_NUMBER;
@@ -549,8 +494,6 @@ private static final long serialVersionUID = 0L;
         topic_ = null;
         topicBuilder_ = null;
       }
-      clientId_ = "";
-
       receiptHandle_ = "";
 
       messageId_ = "";
@@ -591,7 +534,6 @@ private static final long serialVersionUID = 0L;
       } else {
         result.topic_ = topicBuilder_.build();
       }
-      result.clientId_ = clientId_;
       result.receiptHandle_ = receiptHandle_;
       result.messageId_ = messageId_;
       onBuilt();
@@ -648,10 +590,6 @@ private static final long serialVersionUID = 0L;
       if (other.hasTopic()) {
         mergeTopic(other.getTopic());
       }
-      if (!other.getClientId().isEmpty()) {
-        clientId_ = other.clientId_;
-        onChanged();
-      }
       if (!other.getReceiptHandle().isEmpty()) {
         receiptHandle_ = other.receiptHandle_;
         onChanged();
@@ -927,85 +865,9 @@ private static final long serialVersionUID = 0L;
       return topicBuilder_;
     }
 
-    private java.lang.Object clientId_ = "";
-    /**
-     * <code>string client_id = 3;</code>
-     * @return The clientId.
-     */
-    public java.lang.String getClientId() {
-      java.lang.Object ref = clientId_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        clientId_ = s;
-        return s;
-      } else {
-        return (java.lang.String) ref;
-      }
-    }
-    /**
-     * <code>string client_id = 3;</code>
-     * @return The bytes for clientId.
-     */
-    public com.google.protobuf.ByteString
-        getClientIdBytes() {
-      java.lang.Object ref = clientId_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        clientId_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-    /**
-     * <code>string client_id = 3;</code>
-     * @param value The clientId to set.
-     * @return This builder for chaining.
-     */
-    public Builder setClientId(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      clientId_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string client_id = 3;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearClientId() {
-      
-      clientId_ = getDefaultInstance().getClientId();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string client_id = 3;</code>
-     * @param value The bytes for clientId to set.
-     * @return This builder for chaining.
-     */
-    public Builder setClientIdBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      clientId_ = value;
-      onChanged();
-      return this;
-    }
-
     private java.lang.Object receiptHandle_ = "";
     /**
-     * <code>string receipt_handle = 4;</code>
+     * <code>string receipt_handle = 3;</code>
      * @return The receiptHandle.
      */
     public java.lang.String getReceiptHandle() {
@@ -1021,7 +883,7 @@ private static final long serialVersionUID = 0L;
       }
     }
     /**
-     * <code>string receipt_handle = 4;</code>
+     * <code>string receipt_handle = 3;</code>
      * @return The bytes for receiptHandle.
      */
     public com.google.protobuf.ByteString
@@ -1038,7 +900,7 @@ private static final long serialVersionUID = 0L;
       }
     }
     /**
-     * <code>string receipt_handle = 4;</code>
+     * <code>string receipt_handle = 3;</code>
      * @param value The receiptHandle to set.
      * @return This builder for chaining.
      */
@@ -1053,7 +915,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>string receipt_handle = 4;</code>
+     * <code>string receipt_handle = 3;</code>
      * @return This builder for chaining.
      */
     public Builder clearReceiptHandle() {
@@ -1063,7 +925,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>string receipt_handle = 4;</code>
+     * <code>string receipt_handle = 3;</code>
      * @param value The bytes for receiptHandle to set.
      * @return This builder for chaining.
      */
@@ -1081,7 +943,7 @@ private static final long serialVersionUID = 0L;
 
     private java.lang.Object messageId_ = "";
     /**
-     * <code>string message_id = 5;</code>
+     * <code>string message_id = 4;</code>
      * @return The messageId.
      */
     public java.lang.String getMessageId() {
@@ -1097,7 +959,7 @@ private static final long serialVersionUID = 0L;
       }
     }
     /**
-     * <code>string message_id = 5;</code>
+     * <code>string message_id = 4;</code>
      * @return The bytes for messageId.
      */
     public com.google.protobuf.ByteString
@@ -1114,7 +976,7 @@ private static final long serialVersionUID = 0L;
       }
     }
     /**
-     * <code>string message_id = 5;</code>
+     * <code>string message_id = 4;</code>
      * @param value The messageId to set.
      * @return This builder for chaining.
      */
@@ -1129,7 +991,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>string message_id = 5;</code>
+     * <code>string message_id = 4;</code>
      * @return This builder for chaining.
      */
     public Builder clearMessageId() {
@@ -1139,7 +1001,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>string message_id = 5;</code>
+     * <code>string message_id = 4;</code>
      * @param value The bytes for messageId to set.
      * @return This builder for chaining.
      */
diff --git a/src/main/java/apache/rocketmq/v2/AckMessageRequestOrBuilder.java b/src/main/java/apache/rocketmq/v2/AckMessageRequestOrBuilder.java
index 8e08548..f048021 100644
--- a/src/main/java/apache/rocketmq/v2/AckMessageRequestOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v2/AckMessageRequestOrBuilder.java
@@ -38,36 +38,24 @@ public interface AckMessageRequestOrBuilder extends
   apache.rocketmq.v2.ResourceOrBuilder getTopicOrBuilder();
 
   /**
-   * <code>string client_id = 3;</code>
-   * @return The clientId.
-   */
-  java.lang.String getClientId();
-  /**
-   * <code>string client_id = 3;</code>
-   * @return The bytes for clientId.
-   */
-  com.google.protobuf.ByteString
-      getClientIdBytes();
-
-  /**
-   * <code>string receipt_handle = 4;</code>
+   * <code>string receipt_handle = 3;</code>
    * @return The receiptHandle.
    */
   java.lang.String getReceiptHandle();
   /**
-   * <code>string receipt_handle = 4;</code>
+   * <code>string receipt_handle = 3;</code>
    * @return The bytes for receiptHandle.
    */
   com.google.protobuf.ByteString
       getReceiptHandleBytes();
 
   /**
-   * <code>string message_id = 5;</code>
+   * <code>string message_id = 4;</code>
    * @return The messageId.
    */
   java.lang.String getMessageId();
   /**
-   * <code>string message_id = 5;</code>
+   * <code>string message_id = 4;</code>
    * @return The bytes for messageId.
    */
   com.google.protobuf.ByteString
diff --git a/src/main/java/apache/rocketmq/v2/Address.java b/src/main/java/apache/rocketmq/v2/Address.java
index 7226194..92f536b 100644
--- a/src/main/java/apache/rocketmq/v2/Address.java
+++ b/src/main/java/apache/rocketmq/v2/Address.java
@@ -155,7 +155,7 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!getHostBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(host_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 1, host_);
     }
     if (port_ != 0) {
@@ -170,7 +170,7 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (!getHostBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(host_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, host_);
     }
     if (port_ != 0) {
diff --git a/src/main/java/apache/rocketmq/v2/AddressScheme.java b/src/main/java/apache/rocketmq/v2/AddressScheme.java
index 1cad0a9..a215732 100644
--- a/src/main/java/apache/rocketmq/v2/AddressScheme.java
+++ b/src/main/java/apache/rocketmq/v2/AddressScheme.java
@@ -103,7 +103,7 @@ public enum AddressScheme
   }
   public static final com.google.protobuf.Descriptors.EnumDescriptor
       getDescriptor() {
-    return apache.rocketmq.v2.MQDomain.getDescriptor().getEnumTypes().get(6);
+    return apache.rocketmq.v2.MQDomain.getDescriptor().getEnumTypes().get(4);
   }
 
   private static final AddressScheme[] VALUES = values();
diff --git a/src/main/java/apache/rocketmq/v2/Authentication.java b/src/main/java/apache/rocketmq/v2/Authentication.java
deleted file mode 100644
index 14f41fa..0000000
--- a/src/main/java/apache/rocketmq/v2/Authentication.java
+++ /dev/null
@@ -1,653 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: apache/rocketmq/v2/definition.proto
-
-package apache.rocketmq.v2;
-
-/**
- * Protobuf type {@code apache.rocketmq.v2.Authentication}
- */
-public final class Authentication extends
-    com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:apache.rocketmq.v2.Authentication)
-    AuthenticationOrBuilder {
-private static final long serialVersionUID = 0L;
-  // Use Authentication.newBuilder() to construct.
-  private Authentication(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-    super(builder);
-  }
-  private Authentication() {
-    method_ = 0;
-    identity_ = "";
-  }
-
-  @java.lang.Override
-  @SuppressWarnings({"unused"})
-  protected java.lang.Object newInstance(
-      UnusedPrivateParameter unused) {
-    return new Authentication();
-  }
-
-  @java.lang.Override
-  public final com.google.protobuf.UnknownFieldSet
-  getUnknownFields() {
-    return this.unknownFields;
-  }
-  private Authentication(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    this();
-    if (extensionRegistry == null) {
-      throw new java.lang.NullPointerException();
-    }
-    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-        com.google.protobuf.UnknownFieldSet.newBuilder();
-    try {
-      boolean done = false;
-      while (!done) {
-        int tag = input.readTag();
-        switch (tag) {
-          case 0:
-            done = true;
-            break;
-          case 8: {
-            int rawValue = input.readEnum();
-
-            method_ = rawValue;
-            break;
-          }
-          case 18: {
-            java.lang.String s = input.readStringRequireUtf8();
-
-            identity_ = s;
-            break;
-          }
-          default: {
-            if (!parseUnknownField(
-                input, unknownFields, extensionRegistry, tag)) {
-              done = true;
-            }
-            break;
-          }
-        }
-      }
-    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-      throw e.setUnfinishedMessage(this);
-    } catch (java.io.IOException e) {
-      throw new com.google.protobuf.InvalidProtocolBufferException(
-          e).setUnfinishedMessage(this);
-    } finally {
-      this.unknownFields = unknownFields.build();
-      makeExtensionsImmutable();
-    }
-  }
-  public static final com.google.protobuf.Descriptors.Descriptor
-      getDescriptor() {
-    return apache.rocketmq.v2.MQDomain.internal_static_apache_rocketmq_v2_Authentication_descriptor;
-  }
-
-  @java.lang.Override
-  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internalGetFieldAccessorTable() {
-    return apache.rocketmq.v2.MQDomain.internal_static_apache_rocketmq_v2_Authentication_fieldAccessorTable
-        .ensureFieldAccessorsInitialized(
-            apache.rocketmq.v2.Authentication.class, apache.rocketmq.v2.Authentication.Builder.class);
-  }
-
-  public static final int METHOD_FIELD_NUMBER = 1;
-  private int method_;
-  /**
-   * <code>.apache.rocketmq.v2.AuthenticationMethod method = 1;</code>
-   * @return The enum numeric value on the wire for method.
-   */
-  @java.lang.Override public int getMethodValue() {
-    return method_;
-  }
-  /**
-   * <code>.apache.rocketmq.v2.AuthenticationMethod method = 1;</code>
-   * @return The method.
-   */
-  @java.lang.Override public apache.rocketmq.v2.AuthenticationMethod getMethod() {
-    @SuppressWarnings("deprecation")
-    apache.rocketmq.v2.AuthenticationMethod result = apache.rocketmq.v2.AuthenticationMethod.valueOf(method_);
-    return result == null ? apache.rocketmq.v2.AuthenticationMethod.UNRECOGNIZED : result;
-  }
-
-  public static final int IDENTITY_FIELD_NUMBER = 2;
-  private volatile java.lang.Object identity_;
-  /**
-   * <code>string identity = 2;</code>
-   * @return The identity.
-   */
-  @java.lang.Override
-  public java.lang.String getIdentity() {
-    java.lang.Object ref = identity_;
-    if (ref instanceof java.lang.String) {
-      return (java.lang.String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      java.lang.String s = bs.toStringUtf8();
-      identity_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string identity = 2;</code>
-   * @return The bytes for identity.
-   */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getIdentityBytes() {
-    java.lang.Object ref = identity_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      identity_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
-    }
-  }
-
-  private byte memoizedIsInitialized = -1;
-  @java.lang.Override
-  public final boolean isInitialized() {
-    byte isInitialized = memoizedIsInitialized;
-    if (isInitialized == 1) return true;
-    if (isInitialized == 0) return false;
-
-    memoizedIsInitialized = 1;
-    return true;
-  }
-
-  @java.lang.Override
-  public void writeTo(com.google.protobuf.CodedOutputStream output)
-                      throws java.io.IOException {
-    if (method_ != apache.rocketmq.v2.AuthenticationMethod.AUTHENTICATION_METHOD_UNSPECIFIED.getNumber()) {
-      output.writeEnum(1, method_);
-    }
-    if (!getIdentityBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 2, identity_);
-    }
-    unknownFields.writeTo(output);
-  }
-
-  @java.lang.Override
-  public int getSerializedSize() {
-    int size = memoizedSize;
-    if (size != -1) return size;
-
-    size = 0;
-    if (method_ != apache.rocketmq.v2.AuthenticationMethod.AUTHENTICATION_METHOD_UNSPECIFIED.getNumber()) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeEnumSize(1, method_);
-    }
-    if (!getIdentityBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, identity_);
-    }
-    size += unknownFields.getSerializedSize();
-    memoizedSize = size;
-    return size;
-  }
-
-  @java.lang.Override
-  public boolean equals(final java.lang.Object obj) {
-    if (obj == this) {
-     return true;
-    }
-    if (!(obj instanceof apache.rocketmq.v2.Authentication)) {
-      return super.equals(obj);
-    }
-    apache.rocketmq.v2.Authentication other = (apache.rocketmq.v2.Authentication) obj;
-
-    if (method_ != other.method_) return false;
-    if (!getIdentity()
-        .equals(other.getIdentity())) return false;
-    if (!unknownFields.equals(other.unknownFields)) return false;
-    return true;
-  }
-
-  @java.lang.Override
-  public int hashCode() {
-    if (memoizedHashCode != 0) {
-      return memoizedHashCode;
-    }
-    int hash = 41;
-    hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + METHOD_FIELD_NUMBER;
-    hash = (53 * hash) + method_;
-    hash = (37 * hash) + IDENTITY_FIELD_NUMBER;
-    hash = (53 * hash) + getIdentity().hashCode();
-    hash = (29 * hash) + unknownFields.hashCode();
-    memoizedHashCode = hash;
-    return hash;
-  }
-
-  public static apache.rocketmq.v2.Authentication parseFrom(
-      java.nio.ByteBuffer data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static apache.rocketmq.v2.Authentication parseFrom(
-      java.nio.ByteBuffer data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static apache.rocketmq.v2.Authentication parseFrom(
-      com.google.protobuf.ByteString data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static apache.rocketmq.v2.Authentication parseFrom(
-      com.google.protobuf.ByteString data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static apache.rocketmq.v2.Authentication parseFrom(byte[] data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static apache.rocketmq.v2.Authentication parseFrom(
-      byte[] data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static apache.rocketmq.v2.Authentication parseFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static apache.rocketmq.v2.Authentication parseFrom(
-      java.io.InputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input, extensionRegistry);
-  }
-  public static apache.rocketmq.v2.Authentication parseDelimitedFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseDelimitedWithIOException(PARSER, input);
-  }
-  public static apache.rocketmq.v2.Authentication parseDelimitedFrom(
-      java.io.InputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-  }
-  public static apache.rocketmq.v2.Authentication parseFrom(
-      com.google.protobuf.CodedInputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static apache.rocketmq.v2.Authentication parseFrom(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input, extensionRegistry);
-  }
-
-  @java.lang.Override
-  public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return DEFAULT_INSTANCE.toBuilder();
-  }
-  public static Builder newBuilder(apache.rocketmq.v2.Authentication prototype) {
-    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-  }
-  @java.lang.Override
-  public Builder toBuilder() {
-    return this == DEFAULT_INSTANCE
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
-
-  @java.lang.Override
-  protected Builder newBuilderForType(
-      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-    Builder builder = new Builder(parent);
-    return builder;
-  }
-  /**
-   * Protobuf type {@code apache.rocketmq.v2.Authentication}
-   */
-  public static final class Builder extends
-      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:apache.rocketmq.v2.Authentication)
-      apache.rocketmq.v2.AuthenticationOrBuilder {
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return apache.rocketmq.v2.MQDomain.internal_static_apache_rocketmq_v2_Authentication_descriptor;
-    }
-
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return apache.rocketmq.v2.MQDomain.internal_static_apache_rocketmq_v2_Authentication_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              apache.rocketmq.v2.Authentication.class, apache.rocketmq.v2.Authentication.Builder.class);
-    }
-
-    // Construct using apache.rocketmq.v2.Authentication.newBuilder()
-    private Builder() {
-      maybeForceBuilderInitialization();
-    }
-
-    private Builder(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      super(parent);
-      maybeForceBuilderInitialization();
-    }
-    private void maybeForceBuilderInitialization() {
-      if (com.google.protobuf.GeneratedMessageV3
-              .alwaysUseFieldBuilders) {
-      }
-    }
-    @java.lang.Override
-    public Builder clear() {
-      super.clear();
-      method_ = 0;
-
-      identity_ = "";
-
-      return this;
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.Descriptor
-        getDescriptorForType() {
-      return apache.rocketmq.v2.MQDomain.internal_static_apache_rocketmq_v2_Authentication_descriptor;
-    }
-
-    @java.lang.Override
-    public apache.rocketmq.v2.Authentication getDefaultInstanceForType() {
-      return apache.rocketmq.v2.Authentication.getDefaultInstance();
-    }
-
-    @java.lang.Override
-    public apache.rocketmq.v2.Authentication build() {
-      apache.rocketmq.v2.Authentication result = buildPartial();
-      if (!result.isInitialized()) {
-        throw newUninitializedMessageException(result);
-      }
-      return result;
-    }
-
-    @java.lang.Override
-    public apache.rocketmq.v2.Authentication buildPartial() {
-      apache.rocketmq.v2.Authentication result = new apache.rocketmq.v2.Authentication(this);
-      result.method_ = method_;
-      result.identity_ = identity_;
-      onBuilt();
-      return result;
-    }
-
-    @java.lang.Override
-    public Builder clone() {
-      return super.clone();
-    }
-    @java.lang.Override
-    public Builder setField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        java.lang.Object value) {
-      return super.setField(field, value);
-    }
-    @java.lang.Override
-    public Builder clearField(
-        com.google.protobuf.Descriptors.FieldDescriptor field) {
-      return super.clearField(field);
-    }
-    @java.lang.Override
-    public Builder clearOneof(
-        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-      return super.clearOneof(oneof);
-    }
-    @java.lang.Override
-    public Builder setRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        int index, java.lang.Object value) {
-      return super.setRepeatedField(field, index, value);
-    }
-    @java.lang.Override
-    public Builder addRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        java.lang.Object value) {
-      return super.addRepeatedField(field, value);
-    }
-    @java.lang.Override
-    public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof apache.rocketmq.v2.Authentication) {
-        return mergeFrom((apache.rocketmq.v2.Authentication)other);
-      } else {
-        super.mergeFrom(other);
-        return this;
-      }
-    }
-
-    public Builder mergeFrom(apache.rocketmq.v2.Authentication other) {
-      if (other == apache.rocketmq.v2.Authentication.getDefaultInstance()) return this;
-      if (other.method_ != 0) {
-        setMethodValue(other.getMethodValue());
-      }
-      if (!other.getIdentity().isEmpty()) {
-        identity_ = other.identity_;
-        onChanged();
-      }
-      this.mergeUnknownFields(other.unknownFields);
-      onChanged();
-      return this;
-    }
-
-    @java.lang.Override
-    public final boolean isInitialized() {
-      return true;
-    }
-
-    @java.lang.Override
-    public Builder mergeFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      apache.rocketmq.v2.Authentication parsedMessage = null;
-      try {
-        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (apache.rocketmq.v2.Authentication) e.getUnfinishedMessage();
-        throw e.unwrapIOException();
-      } finally {
-        if (parsedMessage != null) {
-          mergeFrom(parsedMessage);
-        }
-      }
-      return this;
-    }
-
-    private int method_ = 0;
-    /**
-     * <code>.apache.rocketmq.v2.AuthenticationMethod method = 1;</code>
-     * @return The enum numeric value on the wire for method.
-     */
-    @java.lang.Override public int getMethodValue() {
-      return method_;
-    }
-    /**
-     * <code>.apache.rocketmq.v2.AuthenticationMethod method = 1;</code>
-     * @param value The enum numeric value on the wire for method to set.
-     * @return This builder for chaining.
-     */
-    public Builder setMethodValue(int value) {
-      
-      method_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>.apache.rocketmq.v2.AuthenticationMethod method = 1;</code>
-     * @return The method.
-     */
-    @java.lang.Override
-    public apache.rocketmq.v2.AuthenticationMethod getMethod() {
-      @SuppressWarnings("deprecation")
-      apache.rocketmq.v2.AuthenticationMethod result = apache.rocketmq.v2.AuthenticationMethod.valueOf(method_);
-      return result == null ? apache.rocketmq.v2.AuthenticationMethod.UNRECOGNIZED : result;
-    }
-    /**
-     * <code>.apache.rocketmq.v2.AuthenticationMethod method = 1;</code>
-     * @param value The method to set.
-     * @return This builder for chaining.
-     */
-    public Builder setMethod(apache.rocketmq.v2.AuthenticationMethod value) {
-      if (value == null) {
-        throw new NullPointerException();
-      }
-      
-      method_ = value.getNumber();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>.apache.rocketmq.v2.AuthenticationMethod method = 1;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearMethod() {
-      
-      method_ = 0;
-      onChanged();
-      return this;
-    }
-
-    private java.lang.Object identity_ = "";
-    /**
-     * <code>string identity = 2;</code>
-     * @return The identity.
-     */
-    public java.lang.String getIdentity() {
-      java.lang.Object ref = identity_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        identity_ = s;
-        return s;
-      } else {
-        return (java.lang.String) ref;
-      }
-    }
-    /**
-     * <code>string identity = 2;</code>
-     * @return The bytes for identity.
-     */
-    public com.google.protobuf.ByteString
-        getIdentityBytes() {
-      java.lang.Object ref = identity_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        identity_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-    /**
-     * <code>string identity = 2;</code>
-     * @param value The identity to set.
-     * @return This builder for chaining.
-     */
-    public Builder setIdentity(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      identity_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string identity = 2;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearIdentity() {
-      
-      identity_ = getDefaultInstance().getIdentity();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string identity = 2;</code>
-     * @param value The bytes for identity to set.
-     * @return This builder for chaining.
-     */
-    public Builder setIdentityBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      identity_ = value;
-      onChanged();
-      return this;
-    }
-    @java.lang.Override
-    public final Builder setUnknownFields(
-        final com.google.protobuf.UnknownFieldSet unknownFields) {
-      return super.setUnknownFields(unknownFields);
-    }
-
-    @java.lang.Override
-    public final Builder mergeUnknownFields(
-        final com.google.protobuf.UnknownFieldSet unknownFields) {
-      return super.mergeUnknownFields(unknownFields);
-    }
-
-
-    // @@protoc_insertion_point(builder_scope:apache.rocketmq.v2.Authentication)
-  }
-
-  // @@protoc_insertion_point(class_scope:apache.rocketmq.v2.Authentication)
-  private static final apache.rocketmq.v2.Authentication DEFAULT_INSTANCE;
-  static {
-    DEFAULT_INSTANCE = new apache.rocketmq.v2.Authentication();
-  }
-
-  public static apache.rocketmq.v2.Authentication getDefaultInstance() {
-    return DEFAULT_INSTANCE;
-  }
-
-  private static final com.google.protobuf.Parser<Authentication>
-      PARSER = new com.google.protobuf.AbstractParser<Authentication>() {
-    @java.lang.Override
-    public Authentication parsePartialFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return new Authentication(input, extensionRegistry);
-    }
-  };
-
-  public static com.google.protobuf.Parser<Authentication> parser() {
-    return PARSER;
-  }
-
-  @java.lang.Override
-  public com.google.protobuf.Parser<Authentication> getParserForType() {
-    return PARSER;
-  }
-
-  @java.lang.Override
-  public apache.rocketmq.v2.Authentication getDefaultInstanceForType() {
-    return DEFAULT_INSTANCE;
-  }
-
-}
-
diff --git a/src/main/java/apache/rocketmq/v2/AuthenticationOrBuilder.java b/src/main/java/apache/rocketmq/v2/AuthenticationOrBuilder.java
deleted file mode 100644
index 32820cb..0000000
--- a/src/main/java/apache/rocketmq/v2/AuthenticationOrBuilder.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: apache/rocketmq/v2/definition.proto
-
-package apache.rocketmq.v2;
-
-public interface AuthenticationOrBuilder extends
-    // @@protoc_insertion_point(interface_extends:apache.rocketmq.v2.Authentication)
-    com.google.protobuf.MessageOrBuilder {
-
-  /**
-   * <code>.apache.rocketmq.v2.AuthenticationMethod method = 1;</code>
-   * @return The enum numeric value on the wire for method.
-   */
-  int getMethodValue();
-  /**
-   * <code>.apache.rocketmq.v2.AuthenticationMethod method = 1;</code>
-   * @return The method.
-   */
-  apache.rocketmq.v2.AuthenticationMethod getMethod();
-
-  /**
-   * <code>string identity = 2;</code>
-   * @return The identity.
-   */
-  java.lang.String getIdentity();
-  /**
-   * <code>string identity = 2;</code>
-   * @return The bytes for identity.
-   */
-  com.google.protobuf.ByteString
-      getIdentityBytes();
-}
diff --git a/src/main/java/apache/rocketmq/v2/Broker.java b/src/main/java/apache/rocketmq/v2/Broker.java
index fb72587..78c4810 100644
--- a/src/main/java/apache/rocketmq/v2/Broker.java
+++ b/src/main/java/apache/rocketmq/v2/Broker.java
@@ -228,7 +228,7 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!getNameBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
     }
     if (id_ != 0) {
@@ -246,7 +246,7 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (!getNameBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
     }
     if (id_ != 0) {
diff --git a/src/main/java/apache/rocketmq/v2/ChangeInvisibleDurationRequest.java b/src/main/java/apache/rocketmq/v2/ChangeInvisibleDurationRequest.java
index 6f9bd50..1c67443 100644
--- a/src/main/java/apache/rocketmq/v2/ChangeInvisibleDurationRequest.java
+++ b/src/main/java/apache/rocketmq/v2/ChangeInvisibleDurationRequest.java
@@ -282,7 +282,7 @@ private static final long serialVersionUID = 0L;
     if (topic_ != null) {
       output.writeMessage(2, getTopic());
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 3, receiptHandle_);
     }
     if (invisibleDuration_ != null) {
@@ -305,7 +305,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(2, getTopic());
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, receiptHandle_);
     }
     if (invisibleDuration_ != null) {
diff --git a/src/main/java/apache/rocketmq/v2/ChangeInvisibleDurationResponse.java b/src/main/java/apache/rocketmq/v2/ChangeInvisibleDurationResponse.java
index 96dba25..abb49e1 100644
--- a/src/main/java/apache/rocketmq/v2/ChangeInvisibleDurationResponse.java
+++ b/src/main/java/apache/rocketmq/v2/ChangeInvisibleDurationResponse.java
@@ -189,7 +189,7 @@ private static final long serialVersionUID = 0L;
     if (status_ != null) {
       output.writeMessage(1, getStatus());
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 2, receiptHandle_);
     }
     unknownFields.writeTo(output);
@@ -205,7 +205,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(1, getStatus());
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, receiptHandle_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/src/main/java/apache/rocketmq/v2/ChangeLogLevelResponse.java b/src/main/java/apache/rocketmq/v2/ChangeLogLevelResponse.java
index 53378bb..5544c5b 100644
--- a/src/main/java/apache/rocketmq/v2/ChangeLogLevelResponse.java
+++ b/src/main/java/apache/rocketmq/v2/ChangeLogLevelResponse.java
@@ -139,7 +139,7 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!getRemarkBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(remark_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 1, remark_);
     }
     unknownFields.writeTo(output);
@@ -151,7 +151,7 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (!getRemarkBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(remark_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, remark_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/src/main/java/apache/rocketmq/v2/HeartbeatRequest.java b/src/main/java/apache/rocketmq/v2/ClientOverwrittenSettings.java
similarity index 50%
copy from src/main/java/apache/rocketmq/v2/HeartbeatRequest.java
copy to src/main/java/apache/rocketmq/v2/ClientOverwrittenSettings.java
index da5eb1e..29263dd 100644
--- a/src/main/java/apache/rocketmq/v2/HeartbeatRequest.java
+++ b/src/main/java/apache/rocketmq/v2/ClientOverwrittenSettings.java
@@ -4,26 +4,27 @@
 package apache.rocketmq.v2;
 
 /**
- * Protobuf type {@code apache.rocketmq.v2.HeartbeatRequest}
+ * Protobuf type {@code apache.rocketmq.v2.ClientOverwrittenSettings}
  */
-public final class HeartbeatRequest extends
+public final class ClientOverwrittenSettings extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:apache.rocketmq.v2.HeartbeatRequest)
-    HeartbeatRequestOrBuilder {
+    // @@protoc_insertion_point(message_implements:apache.rocketmq.v2.ClientOverwrittenSettings)
+    ClientOverwrittenSettingsOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use HeartbeatRequest.newBuilder() to construct.
-  private HeartbeatRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use ClientOverwrittenSettings.newBuilder() to construct.
+  private ClientOverwrittenSettings(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private HeartbeatRequest() {
-    clientId_ = "";
+  private ClientOverwrittenSettings() {
+    nonce_ = "";
+    direction_ = 0;
   }
 
   @java.lang.Override
   @SuppressWarnings({"unused"})
   protected java.lang.Object newInstance(
       UnusedPrivateParameter unused) {
-    return new HeartbeatRequest();
+    return new ClientOverwrittenSettings();
   }
 
   @java.lang.Override
@@ -31,7 +32,7 @@ private static final long serialVersionUID = 0L;
   getUnknownFields() {
     return this.unknownFields;
   }
-  private HeartbeatRequest(
+  private ClientOverwrittenSettings(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -52,18 +53,24 @@ private static final long serialVersionUID = 0L;
           case 10: {
             java.lang.String s = input.readStringRequireUtf8();
 
-            clientId_ = s;
+            nonce_ = s;
             break;
           }
-          case 18: {
-            apache.rocketmq.v2.Resource.Builder subBuilder = null;
-            if (group_ != null) {
-              subBuilder = group_.toBuilder();
+          case 16: {
+            int rawValue = input.readEnum();
+
+            direction_ = rawValue;
+            break;
+          }
+          case 26: {
+            apache.rocketmq.v2.Settings.Builder subBuilder = null;
+            if (settings_ != null) {
+              subBuilder = settings_.toBuilder();
             }
-            group_ = input.readMessage(apache.rocketmq.v2.Resource.parser(), extensionRegistry);
+            settings_ = input.readMessage(apache.rocketmq.v2.Settings.parser(), extensionRegistry);
             if (subBuilder != null) {
-              subBuilder.mergeFrom(group_);
-              group_ = subBuilder.buildPartial();
+              subBuilder.mergeFrom(settings_);
+              settings_ = subBuilder.buildPartial();
             }
 
             break;
@@ -89,79 +96,98 @@ private static final long serialVersionUID = 0L;
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_HeartbeatRequest_descriptor;
+    return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_ClientOverwrittenSettings_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_HeartbeatRequest_fieldAccessorTable
+    return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_ClientOverwrittenSettings_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            apache.rocketmq.v2.HeartbeatRequest.class, apache.rocketmq.v2.HeartbeatRequest.Builder.class);
+            apache.rocketmq.v2.ClientOverwrittenSettings.class, apache.rocketmq.v2.ClientOverwrittenSettings.Builder.class);
   }
 
-  public static final int CLIENT_ID_FIELD_NUMBER = 1;
-  private volatile java.lang.Object clientId_;
+  public static final int NONCE_FIELD_NUMBER = 1;
+  private volatile java.lang.Object nonce_;
   /**
-   * <code>string client_id = 1;</code>
-   * @return The clientId.
+   * <code>string nonce = 1;</code>
+   * @return The nonce.
    */
   @java.lang.Override
-  public java.lang.String getClientId() {
-    java.lang.Object ref = clientId_;
+  public java.lang.String getNonce() {
+    java.lang.Object ref = nonce_;
     if (ref instanceof java.lang.String) {
       return (java.lang.String) ref;
     } else {
       com.google.protobuf.ByteString bs = 
           (com.google.protobuf.ByteString) ref;
       java.lang.String s = bs.toStringUtf8();
-      clientId_ = s;
+      nonce_ = s;
       return s;
     }
   }
   /**
-   * <code>string client_id = 1;</code>
-   * @return The bytes for clientId.
+   * <code>string nonce = 1;</code>
+   * @return The bytes for nonce.
    */
   @java.lang.Override
   public com.google.protobuf.ByteString
-      getClientIdBytes() {
-    java.lang.Object ref = clientId_;
+      getNonceBytes() {
+    java.lang.Object ref = nonce_;
     if (ref instanceof java.lang.String) {
       com.google.protobuf.ByteString b = 
           com.google.protobuf.ByteString.copyFromUtf8(
               (java.lang.String) ref);
-      clientId_ = b;
+      nonce_ = b;
       return b;
     } else {
       return (com.google.protobuf.ByteString) ref;
     }
   }
 
-  public static final int GROUP_FIELD_NUMBER = 2;
-  private apache.rocketmq.v2.Resource group_;
+  public static final int DIRECTION_FIELD_NUMBER = 2;
+  private int direction_;
+  /**
+   * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+   * @return The enum numeric value on the wire for direction.
+   */
+  @java.lang.Override public int getDirectionValue() {
+    return direction_;
+  }
+  /**
+   * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+   * @return The direction.
+   */
+  @java.lang.Override public apache.rocketmq.v2.Direction getDirection() {
+    @SuppressWarnings("deprecation")
+    apache.rocketmq.v2.Direction result = apache.rocketmq.v2.Direction.valueOf(direction_);
+    return result == null ? apache.rocketmq.v2.Direction.UNRECOGNIZED : result;
+  }
+
+  public static final int SETTINGS_FIELD_NUMBER = 3;
+  private apache.rocketmq.v2.Settings settings_;
   /**
-   * <code>.apache.rocketmq.v2.Resource group = 2;</code>
-   * @return Whether the group field is set.
+   * <code>.apache.rocketmq.v2.Settings settings = 3;</code>
+   * @return Whether the settings field is set.
    */
   @java.lang.Override
-  public boolean hasGroup() {
-    return group_ != null;
+  public boolean hasSettings() {
+    return settings_ != null;
   }
   /**
-   * <code>.apache.rocketmq.v2.Resource group = 2;</code>
-   * @return The group.
+   * <code>.apache.rocketmq.v2.Settings settings = 3;</code>
+   * @return The settings.
    */
   @java.lang.Override
-  public apache.rocketmq.v2.Resource getGroup() {
-    return group_ == null ? apache.rocketmq.v2.Resource.getDefaultInstance() : group_;
+  public apache.rocketmq.v2.Settings getSettings() {
+    return settings_ == null ? apache.rocketmq.v2.Settings.getDefaultInstance() : settings_;
   }
   /**
-   * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+   * <code>.apache.rocketmq.v2.Settings settings = 3;</code>
    */
   @java.lang.Override
-  public apache.rocketmq.v2.ResourceOrBuilder getGroupOrBuilder() {
-    return getGroup();
+  public apache.rocketmq.v2.SettingsOrBuilder getSettingsOrBuilder() {
+    return getSettings();
   }
 
   private byte memoizedIsInitialized = -1;
@@ -178,11 +204,14 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!getClientIdBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, clientId_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nonce_)) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, nonce_);
+    }
+    if (direction_ != apache.rocketmq.v2.Direction.DIRECTION_UNSPECIFIED.getNumber()) {
+      output.writeEnum(2, direction_);
     }
-    if (group_ != null) {
-      output.writeMessage(2, getGroup());
+    if (settings_ != null) {
+      output.writeMessage(3, getSettings());
     }
     unknownFields.writeTo(output);
   }
@@ -193,12 +222,16 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (!getClientIdBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, clientId_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nonce_)) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, nonce_);
     }
-    if (group_ != null) {
+    if (direction_ != apache.rocketmq.v2.Direction.DIRECTION_UNSPECIFIED.getNumber()) {
       size += com.google.protobuf.CodedOutputStream
-        .computeMessageSize(2, getGroup());
+        .computeEnumSize(2, direction_);
+    }
+    if (settings_ != null) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(3, getSettings());
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -210,17 +243,18 @@ private static final long serialVersionUID = 0L;
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof apache.rocketmq.v2.HeartbeatRequest)) {
+    if (!(obj instanceof apache.rocketmq.v2.ClientOverwrittenSettings)) {
       return super.equals(obj);
     }
-    apache.rocketmq.v2.HeartbeatRequest other = (apache.rocketmq.v2.HeartbeatRequest) obj;
+    apache.rocketmq.v2.ClientOverwrittenSettings other = (apache.rocketmq.v2.ClientOverwrittenSettings) obj;
 
-    if (!getClientId()
-        .equals(other.getClientId())) return false;
-    if (hasGroup() != other.hasGroup()) return false;
-    if (hasGroup()) {
-      if (!getGroup()
-          .equals(other.getGroup())) return false;
+    if (!getNonce()
+        .equals(other.getNonce())) return false;
+    if (direction_ != other.direction_) return false;
+    if (hasSettings() != other.hasSettings()) return false;
+    if (hasSettings()) {
+      if (!getSettings()
+          .equals(other.getSettings())) return false;
     }
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
@@ -233,80 +267,82 @@ private static final long serialVersionUID = 0L;
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + CLIENT_ID_FIELD_NUMBER;
-    hash = (53 * hash) + getClientId().hashCode();
-    if (hasGroup()) {
-      hash = (37 * hash) + GROUP_FIELD_NUMBER;
-      hash = (53 * hash) + getGroup().hashCode();
+    hash = (37 * hash) + NONCE_FIELD_NUMBER;
+    hash = (53 * hash) + getNonce().hashCode();
+    hash = (37 * hash) + DIRECTION_FIELD_NUMBER;
+    hash = (53 * hash) + direction_;
+    if (hasSettings()) {
+      hash = (37 * hash) + SETTINGS_FIELD_NUMBER;
+      hash = (53 * hash) + getSettings().hashCode();
     }
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
   }
 
-  public static apache.rocketmq.v2.HeartbeatRequest parseFrom(
+  public static apache.rocketmq.v2.ClientOverwrittenSettings parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static apache.rocketmq.v2.HeartbeatRequest parseFrom(
+  public static apache.rocketmq.v2.ClientOverwrittenSettings parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static apache.rocketmq.v2.HeartbeatRequest parseFrom(
+  public static apache.rocketmq.v2.ClientOverwrittenSettings parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static apache.rocketmq.v2.HeartbeatRequest parseFrom(
+  public static apache.rocketmq.v2.ClientOverwrittenSettings parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static apache.rocketmq.v2.HeartbeatRequest parseFrom(byte[] data)
+  public static apache.rocketmq.v2.ClientOverwrittenSettings parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static apache.rocketmq.v2.HeartbeatRequest parseFrom(
+  public static apache.rocketmq.v2.ClientOverwrittenSettings parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static apache.rocketmq.v2.HeartbeatRequest parseFrom(java.io.InputStream input)
+  public static apache.rocketmq.v2.ClientOverwrittenSettings parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static apache.rocketmq.v2.HeartbeatRequest parseFrom(
+  public static apache.rocketmq.v2.ClientOverwrittenSettings parseFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input, extensionRegistry);
   }
-  public static apache.rocketmq.v2.HeartbeatRequest parseDelimitedFrom(java.io.InputStream input)
+  public static apache.rocketmq.v2.ClientOverwrittenSettings parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static apache.rocketmq.v2.HeartbeatRequest parseDelimitedFrom(
+  public static apache.rocketmq.v2.ClientOverwrittenSettings parseDelimitedFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
   }
-  public static apache.rocketmq.v2.HeartbeatRequest parseFrom(
+  public static apache.rocketmq.v2.ClientOverwrittenSettings parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static apache.rocketmq.v2.HeartbeatRequest parseFrom(
+  public static apache.rocketmq.v2.ClientOverwrittenSettings parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -319,7 +355,7 @@ private static final long serialVersionUID = 0L;
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(apache.rocketmq.v2.HeartbeatRequest prototype) {
+  public static Builder newBuilder(apache.rocketmq.v2.ClientOverwrittenSettings prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -335,26 +371,26 @@ private static final long serialVersionUID = 0L;
     return builder;
   }
   /**
-   * Protobuf type {@code apache.rocketmq.v2.HeartbeatRequest}
+   * Protobuf type {@code apache.rocketmq.v2.ClientOverwrittenSettings}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:apache.rocketmq.v2.HeartbeatRequest)
-      apache.rocketmq.v2.HeartbeatRequestOrBuilder {
+      // @@protoc_insertion_point(builder_implements:apache.rocketmq.v2.ClientOverwrittenSettings)
+      apache.rocketmq.v2.ClientOverwrittenSettingsOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_HeartbeatRequest_descriptor;
+      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_ClientOverwrittenSettings_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_HeartbeatRequest_fieldAccessorTable
+      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_ClientOverwrittenSettings_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              apache.rocketmq.v2.HeartbeatRequest.class, apache.rocketmq.v2.HeartbeatRequest.Builder.class);
+              apache.rocketmq.v2.ClientOverwrittenSettings.class, apache.rocketmq.v2.ClientOverwrittenSettings.Builder.class);
     }
 
-    // Construct using apache.rocketmq.v2.HeartbeatRequest.newBuilder()
+    // Construct using apache.rocketmq.v2.ClientOverwrittenSettings.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -372,13 +408,15 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      clientId_ = "";
+      nonce_ = "";
+
+      direction_ = 0;
 
-      if (groupBuilder_ == null) {
-        group_ = null;
+      if (settingsBuilder_ == null) {
+        settings_ = null;
       } else {
-        group_ = null;
-        groupBuilder_ = null;
+        settings_ = null;
+        settingsBuilder_ = null;
       }
       return this;
     }
@@ -386,17 +424,17 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_HeartbeatRequest_descriptor;
+      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_ClientOverwrittenSettings_descriptor;
     }
 
     @java.lang.Override
-    public apache.rocketmq.v2.HeartbeatRequest getDefaultInstanceForType() {
-      return apache.rocketmq.v2.HeartbeatRequest.getDefaultInstance();
+    public apache.rocketmq.v2.ClientOverwrittenSettings getDefaultInstanceForType() {
+      return apache.rocketmq.v2.ClientOverwrittenSettings.getDefaultInstance();
     }
 
     @java.lang.Override
-    public apache.rocketmq.v2.HeartbeatRequest build() {
-      apache.rocketmq.v2.HeartbeatRequest result = buildPartial();
+    public apache.rocketmq.v2.ClientOverwrittenSettings build() {
+      apache.rocketmq.v2.ClientOverwrittenSettings result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -404,13 +442,14 @@ private static final long serialVersionUID = 0L;
     }
 
     @java.lang.Override
-    public apache.rocketmq.v2.HeartbeatRequest buildPartial() {
-      apache.rocketmq.v2.HeartbeatRequest result = new apache.rocketmq.v2.HeartbeatRequest(this);
-      result.clientId_ = clientId_;
-      if (groupBuilder_ == null) {
-        result.group_ = group_;
+    public apache.rocketmq.v2.ClientOverwrittenSettings buildPartial() {
+      apache.rocketmq.v2.ClientOverwrittenSettings result = new apache.rocketmq.v2.ClientOverwrittenSettings(this);
+      result.nonce_ = nonce_;
+      result.direction_ = direction_;
+      if (settingsBuilder_ == null) {
+        result.settings_ = settings_;
       } else {
-        result.group_ = groupBuilder_.build();
+        result.settings_ = settingsBuilder_.build();
       }
       onBuilt();
       return result;
@@ -450,22 +489,25 @@ private static final long serialVersionUID = 0L;
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof apache.rocketmq.v2.HeartbeatRequest) {
-        return mergeFrom((apache.rocketmq.v2.HeartbeatRequest)other);
+      if (other instanceof apache.rocketmq.v2.ClientOverwrittenSettings) {
+        return mergeFrom((apache.rocketmq.v2.ClientOverwrittenSettings)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(apache.rocketmq.v2.HeartbeatRequest other) {
-      if (other == apache.rocketmq.v2.HeartbeatRequest.getDefaultInstance()) return this;
-      if (!other.getClientId().isEmpty()) {
-        clientId_ = other.clientId_;
+    public Builder mergeFrom(apache.rocketmq.v2.ClientOverwrittenSettings other) {
+      if (other == apache.rocketmq.v2.ClientOverwrittenSettings.getDefaultInstance()) return this;
+      if (!other.getNonce().isEmpty()) {
+        nonce_ = other.nonce_;
         onChanged();
       }
-      if (other.hasGroup()) {
-        mergeGroup(other.getGroup());
+      if (other.direction_ != 0) {
+        setDirectionValue(other.getDirectionValue());
+      }
+      if (other.hasSettings()) {
+        mergeSettings(other.getSettings());
       }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
@@ -482,11 +524,11 @@ private static final long serialVersionUID = 0L;
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      apache.rocketmq.v2.HeartbeatRequest parsedMessage = null;
+      apache.rocketmq.v2.ClientOverwrittenSettings parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (apache.rocketmq.v2.HeartbeatRequest) e.getUnfinishedMessage();
+        parsedMessage = (apache.rocketmq.v2.ClientOverwrittenSettings) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -496,199 +538,253 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
-    private java.lang.Object clientId_ = "";
+    private java.lang.Object nonce_ = "";
     /**
-     * <code>string client_id = 1;</code>
-     * @return The clientId.
+     * <code>string nonce = 1;</code>
+     * @return The nonce.
      */
-    public java.lang.String getClientId() {
-      java.lang.Object ref = clientId_;
+    public java.lang.String getNonce() {
+      java.lang.Object ref = nonce_;
       if (!(ref instanceof java.lang.String)) {
         com.google.protobuf.ByteString bs =
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
-        clientId_ = s;
+        nonce_ = s;
         return s;
       } else {
         return (java.lang.String) ref;
       }
     }
     /**
-     * <code>string client_id = 1;</code>
-     * @return The bytes for clientId.
+     * <code>string nonce = 1;</code>
+     * @return The bytes for nonce.
      */
     public com.google.protobuf.ByteString
-        getClientIdBytes() {
-      java.lang.Object ref = clientId_;
+        getNonceBytes() {
+      java.lang.Object ref = nonce_;
       if (ref instanceof String) {
         com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
-        clientId_ = b;
+        nonce_ = b;
         return b;
       } else {
         return (com.google.protobuf.ByteString) ref;
       }
     }
     /**
-     * <code>string client_id = 1;</code>
-     * @param value The clientId to set.
+     * <code>string nonce = 1;</code>
+     * @param value The nonce to set.
      * @return This builder for chaining.
      */
-    public Builder setClientId(
+    public Builder setNonce(
         java.lang.String value) {
       if (value == null) {
     throw new NullPointerException();
   }
   
-      clientId_ = value;
+      nonce_ = value;
       onChanged();
       return this;
     }
     /**
-     * <code>string client_id = 1;</code>
+     * <code>string nonce = 1;</code>
      * @return This builder for chaining.
      */
-    public Builder clearClientId() {
+    public Builder clearNonce() {
       
-      clientId_ = getDefaultInstance().getClientId();
+      nonce_ = getDefaultInstance().getNonce();
       onChanged();
       return this;
     }
     /**
-     * <code>string client_id = 1;</code>
-     * @param value The bytes for clientId to set.
+     * <code>string nonce = 1;</code>
+     * @param value The bytes for nonce to set.
      * @return This builder for chaining.
      */
-    public Builder setClientIdBytes(
+    public Builder setNonceBytes(
         com.google.protobuf.ByteString value) {
       if (value == null) {
     throw new NullPointerException();
   }
   checkByteStringIsUtf8(value);
       
-      clientId_ = value;
+      nonce_ = value;
+      onChanged();
+      return this;
+    }
+
+    private int direction_ = 0;
+    /**
+     * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+     * @return The enum numeric value on the wire for direction.
+     */
+    @java.lang.Override public int getDirectionValue() {
+      return direction_;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+     * @param value The enum numeric value on the wire for direction to set.
+     * @return This builder for chaining.
+     */
+    public Builder setDirectionValue(int value) {
+      
+      direction_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+     * @return The direction.
+     */
+    @java.lang.Override
+    public apache.rocketmq.v2.Direction getDirection() {
+      @SuppressWarnings("deprecation")
+      apache.rocketmq.v2.Direction result = apache.rocketmq.v2.Direction.valueOf(direction_);
+      return result == null ? apache.rocketmq.v2.Direction.UNRECOGNIZED : result;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+     * @param value The direction to set.
+     * @return This builder for chaining.
+     */
+    public Builder setDirection(apache.rocketmq.v2.Direction value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      
+      direction_ = value.getNumber();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearDirection() {
+      
+      direction_ = 0;
       onChanged();
       return this;
     }
 
-    private apache.rocketmq.v2.Resource group_;
+    private apache.rocketmq.v2.Settings settings_;
     private com.google.protobuf.SingleFieldBuilderV3<
-        apache.rocketmq.v2.Resource, apache.rocketmq.v2.Resource.Builder, apache.rocketmq.v2.ResourceOrBuilder> groupBuilder_;
+        apache.rocketmq.v2.Settings, apache.rocketmq.v2.Settings.Builder, apache.rocketmq.v2.SettingsOrBuilder> settingsBuilder_;
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
-     * @return Whether the group field is set.
+     * <code>.apache.rocketmq.v2.Settings settings = 3;</code>
+     * @return Whether the settings field is set.
      */
-    public boolean hasGroup() {
-      return groupBuilder_ != null || group_ != null;
+    public boolean hasSettings() {
+      return settingsBuilder_ != null || settings_ != null;
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
-     * @return The group.
+     * <code>.apache.rocketmq.v2.Settings settings = 3;</code>
+     * @return The settings.
      */
-    public apache.rocketmq.v2.Resource getGroup() {
-      if (groupBuilder_ == null) {
-        return group_ == null ? apache.rocketmq.v2.Resource.getDefaultInstance() : group_;
+    public apache.rocketmq.v2.Settings getSettings() {
+      if (settingsBuilder_ == null) {
+        return settings_ == null ? apache.rocketmq.v2.Settings.getDefaultInstance() : settings_;
       } else {
-        return groupBuilder_.getMessage();
+        return settingsBuilder_.getMessage();
       }
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+     * <code>.apache.rocketmq.v2.Settings settings = 3;</code>
      */
-    public Builder setGroup(apache.rocketmq.v2.Resource value) {
-      if (groupBuilder_ == null) {
+    public Builder setSettings(apache.rocketmq.v2.Settings value) {
+      if (settingsBuilder_ == null) {
         if (value == null) {
           throw new NullPointerException();
         }
-        group_ = value;
+        settings_ = value;
         onChanged();
       } else {
-        groupBuilder_.setMessage(value);
+        settingsBuilder_.setMessage(value);
       }
 
       return this;
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+     * <code>.apache.rocketmq.v2.Settings settings = 3;</code>
      */
-    public Builder setGroup(
-        apache.rocketmq.v2.Resource.Builder builderForValue) {
-      if (groupBuilder_ == null) {
-        group_ = builderForValue.build();
+    public Builder setSettings(
+        apache.rocketmq.v2.Settings.Builder builderForValue) {
+      if (settingsBuilder_ == null) {
+        settings_ = builderForValue.build();
         onChanged();
       } else {
-        groupBuilder_.setMessage(builderForValue.build());
+        settingsBuilder_.setMessage(builderForValue.build());
       }
 
       return this;
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+     * <code>.apache.rocketmq.v2.Settings settings = 3;</code>
      */
-    public Builder mergeGroup(apache.rocketmq.v2.Resource value) {
-      if (groupBuilder_ == null) {
-        if (group_ != null) {
-          group_ =
-            apache.rocketmq.v2.Resource.newBuilder(group_).mergeFrom(value).buildPartial();
+    public Builder mergeSettings(apache.rocketmq.v2.Settings value) {
+      if (settingsBuilder_ == null) {
+        if (settings_ != null) {
+          settings_ =
+            apache.rocketmq.v2.Settings.newBuilder(settings_).mergeFrom(value).buildPartial();
         } else {
-          group_ = value;
+          settings_ = value;
         }
         onChanged();
       } else {
-        groupBuilder_.mergeFrom(value);
+        settingsBuilder_.mergeFrom(value);
       }
 
       return this;
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+     * <code>.apache.rocketmq.v2.Settings settings = 3;</code>
      */
-    public Builder clearGroup() {
-      if (groupBuilder_ == null) {
-        group_ = null;
+    public Builder clearSettings() {
+      if (settingsBuilder_ == null) {
+        settings_ = null;
         onChanged();
       } else {
-        group_ = null;
-        groupBuilder_ = null;
+        settings_ = null;
+        settingsBuilder_ = null;
       }
 
       return this;
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+     * <code>.apache.rocketmq.v2.Settings settings = 3;</code>
      */
-    public apache.rocketmq.v2.Resource.Builder getGroupBuilder() {
+    public apache.rocketmq.v2.Settings.Builder getSettingsBuilder() {
       
       onChanged();
-      return getGroupFieldBuilder().getBuilder();
+      return getSettingsFieldBuilder().getBuilder();
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+     * <code>.apache.rocketmq.v2.Settings settings = 3;</code>
      */
-    public apache.rocketmq.v2.ResourceOrBuilder getGroupOrBuilder() {
-      if (groupBuilder_ != null) {
-        return groupBuilder_.getMessageOrBuilder();
+    public apache.rocketmq.v2.SettingsOrBuilder getSettingsOrBuilder() {
+      if (settingsBuilder_ != null) {
+        return settingsBuilder_.getMessageOrBuilder();
       } else {
-        return group_ == null ?
-            apache.rocketmq.v2.Resource.getDefaultInstance() : group_;
+        return settings_ == null ?
+            apache.rocketmq.v2.Settings.getDefaultInstance() : settings_;
       }
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+     * <code>.apache.rocketmq.v2.Settings settings = 3;</code>
      */
     private com.google.protobuf.SingleFieldBuilderV3<
-        apache.rocketmq.v2.Resource, apache.rocketmq.v2.Resource.Builder, apache.rocketmq.v2.ResourceOrBuilder> 
-        getGroupFieldBuilder() {
-      if (groupBuilder_ == null) {
-        groupBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-            apache.rocketmq.v2.Resource, apache.rocketmq.v2.Resource.Builder, apache.rocketmq.v2.ResourceOrBuilder>(
-                getGroup(),
+        apache.rocketmq.v2.Settings, apache.rocketmq.v2.Settings.Builder, apache.rocketmq.v2.SettingsOrBuilder> 
+        getSettingsFieldBuilder() {
+      if (settingsBuilder_ == null) {
+        settingsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            apache.rocketmq.v2.Settings, apache.rocketmq.v2.Settings.Builder, apache.rocketmq.v2.SettingsOrBuilder>(
+                getSettings(),
                 getParentForChildren(),
                 isClean());
-        group_ = null;
+        settings_ = null;
       }
-      return groupBuilder_;
+      return settingsBuilder_;
     }
     @java.lang.Override
     public final Builder setUnknownFields(
@@ -703,41 +799,41 @@ private static final long serialVersionUID = 0L;
     }
 
 
-    // @@protoc_insertion_point(builder_scope:apache.rocketmq.v2.HeartbeatRequest)
+    // @@protoc_insertion_point(builder_scope:apache.rocketmq.v2.ClientOverwrittenSettings)
   }
 
-  // @@protoc_insertion_point(class_scope:apache.rocketmq.v2.HeartbeatRequest)
-  private static final apache.rocketmq.v2.HeartbeatRequest DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:apache.rocketmq.v2.ClientOverwrittenSettings)
+  private static final apache.rocketmq.v2.ClientOverwrittenSettings DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new apache.rocketmq.v2.HeartbeatRequest();
+    DEFAULT_INSTANCE = new apache.rocketmq.v2.ClientOverwrittenSettings();
   }
 
-  public static apache.rocketmq.v2.HeartbeatRequest getDefaultInstance() {
+  public static apache.rocketmq.v2.ClientOverwrittenSettings getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<HeartbeatRequest>
-      PARSER = new com.google.protobuf.AbstractParser<HeartbeatRequest>() {
+  private static final com.google.protobuf.Parser<ClientOverwrittenSettings>
+      PARSER = new com.google.protobuf.AbstractParser<ClientOverwrittenSettings>() {
     @java.lang.Override
-    public HeartbeatRequest parsePartialFrom(
+    public ClientOverwrittenSettings parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new HeartbeatRequest(input, extensionRegistry);
+      return new ClientOverwrittenSettings(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<HeartbeatRequest> parser() {
+  public static com.google.protobuf.Parser<ClientOverwrittenSettings> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<HeartbeatRequest> getParserForType() {
+  public com.google.protobuf.Parser<ClientOverwrittenSettings> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public apache.rocketmq.v2.HeartbeatRequest getDefaultInstanceForType() {
+  public apache.rocketmq.v2.ClientOverwrittenSettings getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/src/main/java/apache/rocketmq/v2/ClientOverwrittenSettingsOrBuilder.java b/src/main/java/apache/rocketmq/v2/ClientOverwrittenSettingsOrBuilder.java
new file mode 100644
index 0000000..57e9231
--- /dev/null
+++ b/src/main/java/apache/rocketmq/v2/ClientOverwrittenSettingsOrBuilder.java
@@ -0,0 +1,47 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: apache/rocketmq/v2/service.proto
+
+package apache.rocketmq.v2;
+
+public interface ClientOverwrittenSettingsOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:apache.rocketmq.v2.ClientOverwrittenSettings)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>string nonce = 1;</code>
+   * @return The nonce.
+   */
+  java.lang.String getNonce();
+  /**
+   * <code>string nonce = 1;</code>
+   * @return The bytes for nonce.
+   */
+  com.google.protobuf.ByteString
+      getNonceBytes();
+
+  /**
+   * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+   * @return The enum numeric value on the wire for direction.
+   */
+  int getDirectionValue();
+  /**
+   * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+   * @return The direction.
+   */
+  apache.rocketmq.v2.Direction getDirection();
+
+  /**
+   * <code>.apache.rocketmq.v2.Settings settings = 3;</code>
+   * @return Whether the settings field is set.
+   */
+  boolean hasSettings();
+  /**
+   * <code>.apache.rocketmq.v2.Settings settings = 3;</code>
+   * @return The settings.
+   */
+  apache.rocketmq.v2.Settings getSettings();
+  /**
+   * <code>.apache.rocketmq.v2.Settings settings = 3;</code>
+   */
+  apache.rocketmq.v2.SettingsOrBuilder getSettingsOrBuilder();
+}
diff --git a/src/main/java/apache/rocketmq/v2/ClientSettings.java b/src/main/java/apache/rocketmq/v2/ClientSettings.java
new file mode 100644
index 0000000..6d42646
--- /dev/null
+++ b/src/main/java/apache/rocketmq/v2/ClientSettings.java
@@ -0,0 +1,1125 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: apache/rocketmq/v2/service.proto
+
+package apache.rocketmq.v2;
+
+/**
+ * Protobuf type {@code apache.rocketmq.v2.ClientSettings}
+ */
+public final class ClientSettings extends
+    com.google.protobuf.GeneratedMessageV3 implements
+    // @@protoc_insertion_point(message_implements:apache.rocketmq.v2.ClientSettings)
+    ClientSettingsOrBuilder {
+private static final long serialVersionUID = 0L;
+  // Use ClientSettings.newBuilder() to construct.
+  private ClientSettings(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    super(builder);
+  }
+  private ClientSettings() {
+    nonce_ = "";
+    direction_ = 0;
+    clientType_ = 0;
+  }
+
+  @java.lang.Override
+  @SuppressWarnings({"unused"})
+  protected java.lang.Object newInstance(
+      UnusedPrivateParameter unused) {
+    return new ClientSettings();
+  }
+
+  @java.lang.Override
+  public final com.google.protobuf.UnknownFieldSet
+  getUnknownFields() {
+    return this.unknownFields;
+  }
+  private ClientSettings(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    this();
+    if (extensionRegistry == null) {
+      throw new java.lang.NullPointerException();
+    }
+    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+        com.google.protobuf.UnknownFieldSet.newBuilder();
+    try {
+      boolean done = false;
+      while (!done) {
+        int tag = input.readTag();
+        switch (tag) {
+          case 0:
+            done = true;
+            break;
+          case 10: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            nonce_ = s;
+            break;
+          }
+          case 16: {
+            int rawValue = input.readEnum();
+
+            direction_ = rawValue;
+            break;
+          }
+          case 24: {
+            int rawValue = input.readEnum();
+
+            clientType_ = rawValue;
+            break;
+          }
+          case 34: {
+            apache.rocketmq.v2.Endpoints.Builder subBuilder = null;
+            if (accessPoint_ != null) {
+              subBuilder = accessPoint_.toBuilder();
+            }
+            accessPoint_ = input.readMessage(apache.rocketmq.v2.Endpoints.parser(), extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(accessPoint_);
+              accessPoint_ = subBuilder.buildPartial();
+            }
+
+            break;
+          }
+          case 42: {
+            apache.rocketmq.v2.Settings.Builder subBuilder = null;
+            if (settings_ != null) {
+              subBuilder = settings_.toBuilder();
+            }
+            settings_ = input.readMessage(apache.rocketmq.v2.Settings.parser(), extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(settings_);
+              settings_ = subBuilder.buildPartial();
+            }
+
+            break;
+          }
+          default: {
+            if (!parseUnknownField(
+                input, unknownFields, extensionRegistry, tag)) {
+              done = true;
+            }
+            break;
+          }
+        }
+      }
+    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+      throw e.setUnfinishedMessage(this);
+    } catch (java.io.IOException e) {
+      throw new com.google.protobuf.InvalidProtocolBufferException(
+          e).setUnfinishedMessage(this);
+    } finally {
+      this.unknownFields = unknownFields.build();
+      makeExtensionsImmutable();
+    }
+  }
+  public static final com.google.protobuf.Descriptors.Descriptor
+      getDescriptor() {
+    return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_ClientSettings_descriptor;
+  }
+
+  @java.lang.Override
+  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internalGetFieldAccessorTable() {
+    return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_ClientSettings_fieldAccessorTable
+        .ensureFieldAccessorsInitialized(
+            apache.rocketmq.v2.ClientSettings.class, apache.rocketmq.v2.ClientSettings.Builder.class);
+  }
+
+  public static final int NONCE_FIELD_NUMBER = 1;
+  private volatile java.lang.Object nonce_;
+  /**
+   * <code>string nonce = 1;</code>
+   * @return The nonce.
+   */
+  @java.lang.Override
+  public java.lang.String getNonce() {
+    java.lang.Object ref = nonce_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      nonce_ = s;
+      return s;
+    }
+  }
+  /**
+   * <code>string nonce = 1;</code>
+   * @return The bytes for nonce.
+   */
+  @java.lang.Override
+  public com.google.protobuf.ByteString
+      getNonceBytes() {
+    java.lang.Object ref = nonce_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      nonce_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int DIRECTION_FIELD_NUMBER = 2;
+  private int direction_;
+  /**
+   * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+   * @return The enum numeric value on the wire for direction.
+   */
+  @java.lang.Override public int getDirectionValue() {
+    return direction_;
+  }
+  /**
+   * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+   * @return The direction.
+   */
+  @java.lang.Override public apache.rocketmq.v2.Direction getDirection() {
+    @SuppressWarnings("deprecation")
+    apache.rocketmq.v2.Direction result = apache.rocketmq.v2.Direction.valueOf(direction_);
+    return result == null ? apache.rocketmq.v2.Direction.UNRECOGNIZED : result;
+  }
+
+  public static final int CLIENT_TYPE_FIELD_NUMBER = 3;
+  private int clientType_;
+  /**
+   * <code>.apache.rocketmq.v2.ClientType client_type = 3;</code>
+   * @return The enum numeric value on the wire for clientType.
+   */
+  @java.lang.Override public int getClientTypeValue() {
+    return clientType_;
+  }
+  /**
+   * <code>.apache.rocketmq.v2.ClientType client_type = 3;</code>
+   * @return The clientType.
+   */
+  @java.lang.Override public apache.rocketmq.v2.ClientType getClientType() {
+    @SuppressWarnings("deprecation")
+    apache.rocketmq.v2.ClientType result = apache.rocketmq.v2.ClientType.valueOf(clientType_);
+    return result == null ? apache.rocketmq.v2.ClientType.UNRECOGNIZED : result;
+  }
+
+  public static final int ACCESS_POINT_FIELD_NUMBER = 4;
+  private apache.rocketmq.v2.Endpoints accessPoint_;
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints access_point = 4;</code>
+   * @return Whether the accessPoint field is set.
+   */
+  @java.lang.Override
+  public boolean hasAccessPoint() {
+    return accessPoint_ != null;
+  }
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints access_point = 4;</code>
+   * @return The accessPoint.
+   */
+  @java.lang.Override
+  public apache.rocketmq.v2.Endpoints getAccessPoint() {
+    return accessPoint_ == null ? apache.rocketmq.v2.Endpoints.getDefaultInstance() : accessPoint_;
+  }
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints access_point = 4;</code>
+   */
+  @java.lang.Override
+  public apache.rocketmq.v2.EndpointsOrBuilder getAccessPointOrBuilder() {
+    return getAccessPoint();
+  }
+
+  public static final int SETTINGS_FIELD_NUMBER = 5;
+  private apache.rocketmq.v2.Settings settings_;
+  /**
+   * <code>.apache.rocketmq.v2.Settings settings = 5;</code>
+   * @return Whether the settings field is set.
+   */
+  @java.lang.Override
+  public boolean hasSettings() {
+    return settings_ != null;
+  }
+  /**
+   * <code>.apache.rocketmq.v2.Settings settings = 5;</code>
+   * @return The settings.
+   */
+  @java.lang.Override
+  public apache.rocketmq.v2.Settings getSettings() {
+    return settings_ == null ? apache.rocketmq.v2.Settings.getDefaultInstance() : settings_;
+  }
+  /**
+   * <code>.apache.rocketmq.v2.Settings settings = 5;</code>
+   */
+  @java.lang.Override
+  public apache.rocketmq.v2.SettingsOrBuilder getSettingsOrBuilder() {
+    return getSettings();
+  }
+
+  private byte memoizedIsInitialized = -1;
+  @java.lang.Override
+  public final boolean isInitialized() {
+    byte isInitialized = memoizedIsInitialized;
+    if (isInitialized == 1) return true;
+    if (isInitialized == 0) return false;
+
+    memoizedIsInitialized = 1;
+    return true;
+  }
+
+  @java.lang.Override
+  public void writeTo(com.google.protobuf.CodedOutputStream output)
+                      throws java.io.IOException {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nonce_)) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, nonce_);
+    }
+    if (direction_ != apache.rocketmq.v2.Direction.DIRECTION_UNSPECIFIED.getNumber()) {
+      output.writeEnum(2, direction_);
+    }
+    if (clientType_ != apache.rocketmq.v2.ClientType.CLIENT_TYPE_UNSPECIFIED.getNumber()) {
+      output.writeEnum(3, clientType_);
+    }
+    if (accessPoint_ != null) {
+      output.writeMessage(4, getAccessPoint());
+    }
+    if (settings_ != null) {
+      output.writeMessage(5, getSettings());
+    }
+    unknownFields.writeTo(output);
+  }
+
+  @java.lang.Override
+  public int getSerializedSize() {
+    int size = memoizedSize;
+    if (size != -1) return size;
+
+    size = 0;
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nonce_)) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, nonce_);
+    }
+    if (direction_ != apache.rocketmq.v2.Direction.DIRECTION_UNSPECIFIED.getNumber()) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeEnumSize(2, direction_);
+    }
+    if (clientType_ != apache.rocketmq.v2.ClientType.CLIENT_TYPE_UNSPECIFIED.getNumber()) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeEnumSize(3, clientType_);
+    }
+    if (accessPoint_ != null) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(4, getAccessPoint());
+    }
+    if (settings_ != null) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(5, getSettings());
+    }
+    size += unknownFields.getSerializedSize();
+    memoizedSize = size;
+    return size;
+  }
+
+  @java.lang.Override
+  public boolean equals(final java.lang.Object obj) {
+    if (obj == this) {
+     return true;
+    }
+    if (!(obj instanceof apache.rocketmq.v2.ClientSettings)) {
+      return super.equals(obj);
+    }
+    apache.rocketmq.v2.ClientSettings other = (apache.rocketmq.v2.ClientSettings) obj;
+
+    if (!getNonce()
+        .equals(other.getNonce())) return false;
+    if (direction_ != other.direction_) return false;
+    if (clientType_ != other.clientType_) return false;
+    if (hasAccessPoint() != other.hasAccessPoint()) return false;
+    if (hasAccessPoint()) {
+      if (!getAccessPoint()
+          .equals(other.getAccessPoint())) return false;
+    }
+    if (hasSettings() != other.hasSettings()) return false;
+    if (hasSettings()) {
+      if (!getSettings()
+          .equals(other.getSettings())) return false;
+    }
+    if (!unknownFields.equals(other.unknownFields)) return false;
+    return true;
+  }
+
+  @java.lang.Override
+  public int hashCode() {
+    if (memoizedHashCode != 0) {
+      return memoizedHashCode;
+    }
+    int hash = 41;
+    hash = (19 * hash) + getDescriptor().hashCode();
+    hash = (37 * hash) + NONCE_FIELD_NUMBER;
+    hash = (53 * hash) + getNonce().hashCode();
+    hash = (37 * hash) + DIRECTION_FIELD_NUMBER;
+    hash = (53 * hash) + direction_;
+    hash = (37 * hash) + CLIENT_TYPE_FIELD_NUMBER;
+    hash = (53 * hash) + clientType_;
+    if (hasAccessPoint()) {
+      hash = (37 * hash) + ACCESS_POINT_FIELD_NUMBER;
+      hash = (53 * hash) + getAccessPoint().hashCode();
+    }
+    if (hasSettings()) {
+      hash = (37 * hash) + SETTINGS_FIELD_NUMBER;
+      hash = (53 * hash) + getSettings().hashCode();
+    }
+    hash = (29 * hash) + unknownFields.hashCode();
+    memoizedHashCode = hash;
+    return hash;
+  }
+
+  public static apache.rocketmq.v2.ClientSettings parseFrom(
+      java.nio.ByteBuffer data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static apache.rocketmq.v2.ClientSettings parseFrom(
+      java.nio.ByteBuffer data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static apache.rocketmq.v2.ClientSettings parseFrom(
+      com.google.protobuf.ByteString data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static apache.rocketmq.v2.ClientSettings parseFrom(
+      com.google.protobuf.ByteString data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static apache.rocketmq.v2.ClientSettings parseFrom(byte[] data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static apache.rocketmq.v2.ClientSettings parseFrom(
+      byte[] data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static apache.rocketmq.v2.ClientSettings parseFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static apache.rocketmq.v2.ClientSettings parseFrom(
+      java.io.InputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input, extensionRegistry);
+  }
+  public static apache.rocketmq.v2.ClientSettings parseDelimitedFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input);
+  }
+  public static apache.rocketmq.v2.ClientSettings parseDelimitedFrom(
+      java.io.InputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+  }
+  public static apache.rocketmq.v2.ClientSettings parseFrom(
+      com.google.protobuf.CodedInputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static apache.rocketmq.v2.ClientSettings parseFrom(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input, extensionRegistry);
+  }
+
+  @java.lang.Override
+  public Builder newBuilderForType() { return newBuilder(); }
+  public static Builder newBuilder() {
+    return DEFAULT_INSTANCE.toBuilder();
+  }
+  public static Builder newBuilder(apache.rocketmq.v2.ClientSettings prototype) {
+    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+  }
+  @java.lang.Override
+  public Builder toBuilder() {
+    return this == DEFAULT_INSTANCE
+        ? new Builder() : new Builder().mergeFrom(this);
+  }
+
+  @java.lang.Override
+  protected Builder newBuilderForType(
+      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+    Builder builder = new Builder(parent);
+    return builder;
+  }
+  /**
+   * Protobuf type {@code apache.rocketmq.v2.ClientSettings}
+   */
+  public static final class Builder extends
+      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+      // @@protoc_insertion_point(builder_implements:apache.rocketmq.v2.ClientSettings)
+      apache.rocketmq.v2.ClientSettingsOrBuilder {
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_ClientSettings_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_ClientSettings_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              apache.rocketmq.v2.ClientSettings.class, apache.rocketmq.v2.ClientSettings.Builder.class);
+    }
+
+    // Construct using apache.rocketmq.v2.ClientSettings.newBuilder()
+    private Builder() {
+      maybeForceBuilderInitialization();
+    }
+
+    private Builder(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      super(parent);
+      maybeForceBuilderInitialization();
+    }
+    private void maybeForceBuilderInitialization() {
+      if (com.google.protobuf.GeneratedMessageV3
+              .alwaysUseFieldBuilders) {
+      }
+    }
+    @java.lang.Override
+    public Builder clear() {
+      super.clear();
+      nonce_ = "";
+
+      direction_ = 0;
+
+      clientType_ = 0;
+
+      if (accessPointBuilder_ == null) {
+        accessPoint_ = null;
+      } else {
+        accessPoint_ = null;
+        accessPointBuilder_ = null;
+      }
+      if (settingsBuilder_ == null) {
+        settings_ = null;
+      } else {
+        settings_ = null;
+        settingsBuilder_ = null;
+      }
+      return this;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.Descriptor
+        getDescriptorForType() {
+      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_ClientSettings_descriptor;
+    }
+
+    @java.lang.Override
+    public apache.rocketmq.v2.ClientSettings getDefaultInstanceForType() {
+      return apache.rocketmq.v2.ClientSettings.getDefaultInstance();
+    }
+
+    @java.lang.Override
+    public apache.rocketmq.v2.ClientSettings build() {
+      apache.rocketmq.v2.ClientSettings result = buildPartial();
+      if (!result.isInitialized()) {
+        throw newUninitializedMessageException(result);
+      }
+      return result;
+    }
+
+    @java.lang.Override
+    public apache.rocketmq.v2.ClientSettings buildPartial() {
+      apache.rocketmq.v2.ClientSettings result = new apache.rocketmq.v2.ClientSettings(this);
+      result.nonce_ = nonce_;
+      result.direction_ = direction_;
+      result.clientType_ = clientType_;
+      if (accessPointBuilder_ == null) {
+        result.accessPoint_ = accessPoint_;
+      } else {
+        result.accessPoint_ = accessPointBuilder_.build();
+      }
+      if (settingsBuilder_ == null) {
+        result.settings_ = settings_;
+      } else {
+        result.settings_ = settingsBuilder_.build();
+      }
+      onBuilt();
+      return result;
+    }
+
+    @java.lang.Override
+    public Builder clone() {
+      return super.clone();
+    }
+    @java.lang.Override
+    public Builder setField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        java.lang.Object value) {
+      return super.setField(field, value);
+    }
+    @java.lang.Override
+    public Builder clearField(
+        com.google.protobuf.Descriptors.FieldDescriptor field) {
+      return super.clearField(field);
+    }
+    @java.lang.Override
+    public Builder clearOneof(
+        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+      return super.clearOneof(oneof);
+    }
+    @java.lang.Override
+    public Builder setRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        int index, java.lang.Object value) {
+      return super.setRepeatedField(field, index, value);
+    }
+    @java.lang.Override
+    public Builder addRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        java.lang.Object value) {
+      return super.addRepeatedField(field, value);
+    }
+    @java.lang.Override
+    public Builder mergeFrom(com.google.protobuf.Message other) {
+      if (other instanceof apache.rocketmq.v2.ClientSettings) {
+        return mergeFrom((apache.rocketmq.v2.ClientSettings)other);
+      } else {
+        super.mergeFrom(other);
+        return this;
+      }
+    }
+
+    public Builder mergeFrom(apache.rocketmq.v2.ClientSettings other) {
+      if (other == apache.rocketmq.v2.ClientSettings.getDefaultInstance()) return this;
+      if (!other.getNonce().isEmpty()) {
+        nonce_ = other.nonce_;
+        onChanged();
+      }
+      if (other.direction_ != 0) {
+        setDirectionValue(other.getDirectionValue());
+      }
+      if (other.clientType_ != 0) {
+        setClientTypeValue(other.getClientTypeValue());
+      }
+      if (other.hasAccessPoint()) {
+        mergeAccessPoint(other.getAccessPoint());
+      }
+      if (other.hasSettings()) {
+        mergeSettings(other.getSettings());
+      }
+      this.mergeUnknownFields(other.unknownFields);
+      onChanged();
+      return this;
+    }
+
+    @java.lang.Override
+    public final boolean isInitialized() {
+      return true;
+    }
+
+    @java.lang.Override
+    public Builder mergeFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      apache.rocketmq.v2.ClientSettings parsedMessage = null;
+      try {
+        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        parsedMessage = (apache.rocketmq.v2.ClientSettings) e.getUnfinishedMessage();
+        throw e.unwrapIOException();
+      } finally {
+        if (parsedMessage != null) {
+          mergeFrom(parsedMessage);
+        }
+      }
+      return this;
+    }
+
+    private java.lang.Object nonce_ = "";
+    /**
+     * <code>string nonce = 1;</code>
+     * @return The nonce.
+     */
+    public java.lang.String getNonce() {
+      java.lang.Object ref = nonce_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        nonce_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <code>string nonce = 1;</code>
+     * @return The bytes for nonce.
+     */
+    public com.google.protobuf.ByteString
+        getNonceBytes() {
+      java.lang.Object ref = nonce_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        nonce_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <code>string nonce = 1;</code>
+     * @param value The nonce to set.
+     * @return This builder for chaining.
+     */
+    public Builder setNonce(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      nonce_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string nonce = 1;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearNonce() {
+      
+      nonce_ = getDefaultInstance().getNonce();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string nonce = 1;</code>
+     * @param value The bytes for nonce to set.
+     * @return This builder for chaining.
+     */
+    public Builder setNonceBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      nonce_ = value;
+      onChanged();
+      return this;
+    }
+
+    private int direction_ = 0;
+    /**
+     * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+     * @return The enum numeric value on the wire for direction.
+     */
+    @java.lang.Override public int getDirectionValue() {
+      return direction_;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+     * @param value The enum numeric value on the wire for direction to set.
+     * @return This builder for chaining.
+     */
+    public Builder setDirectionValue(int value) {
+      
+      direction_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+     * @return The direction.
+     */
+    @java.lang.Override
+    public apache.rocketmq.v2.Direction getDirection() {
+      @SuppressWarnings("deprecation")
+      apache.rocketmq.v2.Direction result = apache.rocketmq.v2.Direction.valueOf(direction_);
+      return result == null ? apache.rocketmq.v2.Direction.UNRECOGNIZED : result;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+     * @param value The direction to set.
+     * @return This builder for chaining.
+     */
+    public Builder setDirection(apache.rocketmq.v2.Direction value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      
+      direction_ = value.getNumber();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearDirection() {
+      
+      direction_ = 0;
+      onChanged();
+      return this;
+    }
+
+    private int clientType_ = 0;
+    /**
+     * <code>.apache.rocketmq.v2.ClientType client_type = 3;</code>
+     * @return The enum numeric value on the wire for clientType.
+     */
+    @java.lang.Override public int getClientTypeValue() {
+      return clientType_;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.ClientType client_type = 3;</code>
+     * @param value The enum numeric value on the wire for clientType to set.
+     * @return This builder for chaining.
+     */
+    public Builder setClientTypeValue(int value) {
+      
+      clientType_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.ClientType client_type = 3;</code>
+     * @return The clientType.
+     */
+    @java.lang.Override
+    public apache.rocketmq.v2.ClientType getClientType() {
+      @SuppressWarnings("deprecation")
+      apache.rocketmq.v2.ClientType result = apache.rocketmq.v2.ClientType.valueOf(clientType_);
+      return result == null ? apache.rocketmq.v2.ClientType.UNRECOGNIZED : result;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.ClientType client_type = 3;</code>
+     * @param value The clientType to set.
+     * @return This builder for chaining.
+     */
+    public Builder setClientType(apache.rocketmq.v2.ClientType value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      
+      clientType_ = value.getNumber();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.ClientType client_type = 3;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearClientType() {
+      
+      clientType_ = 0;
+      onChanged();
+      return this;
+    }
+
+    private apache.rocketmq.v2.Endpoints accessPoint_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        apache.rocketmq.v2.Endpoints, apache.rocketmq.v2.Endpoints.Builder, apache.rocketmq.v2.EndpointsOrBuilder> accessPointBuilder_;
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints access_point = 4;</code>
+     * @return Whether the accessPoint field is set.
+     */
+    public boolean hasAccessPoint() {
+      return accessPointBuilder_ != null || accessPoint_ != null;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints access_point = 4;</code>
+     * @return The accessPoint.
+     */
+    public apache.rocketmq.v2.Endpoints getAccessPoint() {
+      if (accessPointBuilder_ == null) {
+        return accessPoint_ == null ? apache.rocketmq.v2.Endpoints.getDefaultInstance() : accessPoint_;
+      } else {
+        return accessPointBuilder_.getMessage();
+      }
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints access_point = 4;</code>
+     */
+    public Builder setAccessPoint(apache.rocketmq.v2.Endpoints value) {
+      if (accessPointBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        accessPoint_ = value;
+        onChanged();
+      } else {
+        accessPointBuilder_.setMessage(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints access_point = 4;</code>
+     */
+    public Builder setAccessPoint(
+        apache.rocketmq.v2.Endpoints.Builder builderForValue) {
+      if (accessPointBuilder_ == null) {
+        accessPoint_ = builderForValue.build();
+        onChanged();
+      } else {
+        accessPointBuilder_.setMessage(builderForValue.build());
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints access_point = 4;</code>
+     */
+    public Builder mergeAccessPoint(apache.rocketmq.v2.Endpoints value) {
+      if (accessPointBuilder_ == null) {
+        if (accessPoint_ != null) {
+          accessPoint_ =
+            apache.rocketmq.v2.Endpoints.newBuilder(accessPoint_).mergeFrom(value).buildPartial();
+        } else {
+          accessPoint_ = value;
+        }
+        onChanged();
+      } else {
+        accessPointBuilder_.mergeFrom(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints access_point = 4;</code>
+     */
+    public Builder clearAccessPoint() {
+      if (accessPointBuilder_ == null) {
+        accessPoint_ = null;
+        onChanged();
+      } else {
+        accessPoint_ = null;
+        accessPointBuilder_ = null;
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints access_point = 4;</code>
+     */
+    public apache.rocketmq.v2.Endpoints.Builder getAccessPointBuilder() {
+      
+      onChanged();
+      return getAccessPointFieldBuilder().getBuilder();
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints access_point = 4;</code>
+     */
+    public apache.rocketmq.v2.EndpointsOrBuilder getAccessPointOrBuilder() {
+      if (accessPointBuilder_ != null) {
+        return accessPointBuilder_.getMessageOrBuilder();
+      } else {
+        return accessPoint_ == null ?
+            apache.rocketmq.v2.Endpoints.getDefaultInstance() : accessPoint_;
+      }
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints access_point = 4;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+        apache.rocketmq.v2.Endpoints, apache.rocketmq.v2.Endpoints.Builder, apache.rocketmq.v2.EndpointsOrBuilder> 
+        getAccessPointFieldBuilder() {
+      if (accessPointBuilder_ == null) {
+        accessPointBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            apache.rocketmq.v2.Endpoints, apache.rocketmq.v2.Endpoints.Builder, apache.rocketmq.v2.EndpointsOrBuilder>(
+                getAccessPoint(),
+                getParentForChildren(),
+                isClean());
+        accessPoint_ = null;
+      }
+      return accessPointBuilder_;
+    }
+
+    private apache.rocketmq.v2.Settings settings_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        apache.rocketmq.v2.Settings, apache.rocketmq.v2.Settings.Builder, apache.rocketmq.v2.SettingsOrBuilder> settingsBuilder_;
+    /**
+     * <code>.apache.rocketmq.v2.Settings settings = 5;</code>
+     * @return Whether the settings field is set.
+     */
+    public boolean hasSettings() {
+      return settingsBuilder_ != null || settings_ != null;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Settings settings = 5;</code>
+     * @return The settings.
+     */
+    public apache.rocketmq.v2.Settings getSettings() {
+      if (settingsBuilder_ == null) {
+        return settings_ == null ? apache.rocketmq.v2.Settings.getDefaultInstance() : settings_;
+      } else {
+        return settingsBuilder_.getMessage();
+      }
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Settings settings = 5;</code>
+     */
+    public Builder setSettings(apache.rocketmq.v2.Settings value) {
+      if (settingsBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        settings_ = value;
+        onChanged();
+      } else {
+        settingsBuilder_.setMessage(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Settings settings = 5;</code>
+     */
+    public Builder setSettings(
+        apache.rocketmq.v2.Settings.Builder builderForValue) {
+      if (settingsBuilder_ == null) {
+        settings_ = builderForValue.build();
+        onChanged();
+      } else {
+        settingsBuilder_.setMessage(builderForValue.build());
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Settings settings = 5;</code>
+     */
+    public Builder mergeSettings(apache.rocketmq.v2.Settings value) {
+      if (settingsBuilder_ == null) {
+        if (settings_ != null) {
+          settings_ =
+            apache.rocketmq.v2.Settings.newBuilder(settings_).mergeFrom(value).buildPartial();
+        } else {
+          settings_ = value;
+        }
+        onChanged();
+      } else {
+        settingsBuilder_.mergeFrom(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Settings settings = 5;</code>
+     */
+    public Builder clearSettings() {
+      if (settingsBuilder_ == null) {
+        settings_ = null;
+        onChanged();
+      } else {
+        settings_ = null;
+        settingsBuilder_ = null;
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Settings settings = 5;</code>
+     */
+    public apache.rocketmq.v2.Settings.Builder getSettingsBuilder() {
+      
+      onChanged();
+      return getSettingsFieldBuilder().getBuilder();
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Settings settings = 5;</code>
+     */
+    public apache.rocketmq.v2.SettingsOrBuilder getSettingsOrBuilder() {
+      if (settingsBuilder_ != null) {
+        return settingsBuilder_.getMessageOrBuilder();
+      } else {
+        return settings_ == null ?
+            apache.rocketmq.v2.Settings.getDefaultInstance() : settings_;
+      }
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Settings settings = 5;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+        apache.rocketmq.v2.Settings, apache.rocketmq.v2.Settings.Builder, apache.rocketmq.v2.SettingsOrBuilder> 
+        getSettingsFieldBuilder() {
+      if (settingsBuilder_ == null) {
+        settingsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            apache.rocketmq.v2.Settings, apache.rocketmq.v2.Settings.Builder, apache.rocketmq.v2.SettingsOrBuilder>(
+                getSettings(),
+                getParentForChildren(),
+                isClean());
+        settings_ = null;
+      }
+      return settingsBuilder_;
+    }
+    @java.lang.Override
+    public final Builder setUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return super.setUnknownFields(unknownFields);
+    }
+
+    @java.lang.Override
+    public final Builder mergeUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return super.mergeUnknownFields(unknownFields);
+    }
+
+
+    // @@protoc_insertion_point(builder_scope:apache.rocketmq.v2.ClientSettings)
+  }
+
+  // @@protoc_insertion_point(class_scope:apache.rocketmq.v2.ClientSettings)
+  private static final apache.rocketmq.v2.ClientSettings DEFAULT_INSTANCE;
+  static {
+    DEFAULT_INSTANCE = new apache.rocketmq.v2.ClientSettings();
+  }
+
+  public static apache.rocketmq.v2.ClientSettings getDefaultInstance() {
+    return DEFAULT_INSTANCE;
+  }
+
+  private static final com.google.protobuf.Parser<ClientSettings>
+      PARSER = new com.google.protobuf.AbstractParser<ClientSettings>() {
+    @java.lang.Override
+    public ClientSettings parsePartialFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return new ClientSettings(input, extensionRegistry);
+    }
+  };
+
+  public static com.google.protobuf.Parser<ClientSettings> parser() {
+    return PARSER;
+  }
+
+  @java.lang.Override
+  public com.google.protobuf.Parser<ClientSettings> getParserForType() {
+    return PARSER;
+  }
+
+  @java.lang.Override
+  public apache.rocketmq.v2.ClientSettings getDefaultInstanceForType() {
+    return DEFAULT_INSTANCE;
+  }
+
+}
+
diff --git a/src/main/java/apache/rocketmq/v2/ClientSettingsOrBuilder.java b/src/main/java/apache/rocketmq/v2/ClientSettingsOrBuilder.java
new file mode 100644
index 0000000..2c12f1a
--- /dev/null
+++ b/src/main/java/apache/rocketmq/v2/ClientSettingsOrBuilder.java
@@ -0,0 +1,73 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: apache/rocketmq/v2/service.proto
+
+package apache.rocketmq.v2;
+
+public interface ClientSettingsOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:apache.rocketmq.v2.ClientSettings)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>string nonce = 1;</code>
+   * @return The nonce.
+   */
+  java.lang.String getNonce();
+  /**
+   * <code>string nonce = 1;</code>
+   * @return The bytes for nonce.
+   */
+  com.google.protobuf.ByteString
+      getNonceBytes();
+
+  /**
+   * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+   * @return The enum numeric value on the wire for direction.
+   */
+  int getDirectionValue();
+  /**
+   * <code>.apache.rocketmq.v2.Direction direction = 2;</code>
+   * @return The direction.
+   */
+  apache.rocketmq.v2.Direction getDirection();
+
+  /**
+   * <code>.apache.rocketmq.v2.ClientType client_type = 3;</code>
+   * @return The enum numeric value on the wire for clientType.
+   */
+  int getClientTypeValue();
+  /**
+   * <code>.apache.rocketmq.v2.ClientType client_type = 3;</code>
+   * @return The clientType.
+   */
+  apache.rocketmq.v2.ClientType getClientType();
+
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints access_point = 4;</code>
+   * @return Whether the accessPoint field is set.
+   */
+  boolean hasAccessPoint();
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints access_point = 4;</code>
+   * @return The accessPoint.
+   */
+  apache.rocketmq.v2.Endpoints getAccessPoint();
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints access_point = 4;</code>
+   */
+  apache.rocketmq.v2.EndpointsOrBuilder getAccessPointOrBuilder();
+
+  /**
+   * <code>.apache.rocketmq.v2.Settings settings = 5;</code>
+   * @return Whether the settings field is set.
+   */
+  boolean hasSettings();
+  /**
+   * <code>.apache.rocketmq.v2.Settings settings = 5;</code>
+   * @return The settings.
+   */
+  apache.rocketmq.v2.Settings getSettings();
+  /**
+   * <code>.apache.rocketmq.v2.Settings settings = 5;</code>
+   */
+  apache.rocketmq.v2.SettingsOrBuilder getSettingsOrBuilder();
+}
diff --git a/src/main/java/apache/rocketmq/v2/AuthenticationMethod.java b/src/main/java/apache/rocketmq/v2/ClientType.java
similarity index 56%
rename from src/main/java/apache/rocketmq/v2/AuthenticationMethod.java
rename to src/main/java/apache/rocketmq/v2/ClientType.java
index 2355727..3c8875b 100644
--- a/src/main/java/apache/rocketmq/v2/AuthenticationMethod.java
+++ b/src/main/java/apache/rocketmq/v2/ClientType.java
@@ -4,45 +4,53 @@
 package apache.rocketmq.v2;
 
 /**
- * Protobuf enum {@code apache.rocketmq.v2.AuthenticationMethod}
+ * Protobuf enum {@code apache.rocketmq.v2.ClientType}
  */
-public enum AuthenticationMethod
+public enum ClientType
     implements com.google.protobuf.ProtocolMessageEnum {
   /**
-   * <code>AUTHENTICATION_METHOD_UNSPECIFIED = 0;</code>
+   * <code>CLIENT_TYPE_UNSPECIFIED = 0;</code>
    */
-  AUTHENTICATION_METHOD_UNSPECIFIED(0),
+  CLIENT_TYPE_UNSPECIFIED(0),
   /**
-   * <code>SASL = 1;</code>
+   * <code>PRODUCER = 1;</code>
    */
-  SASL(1),
+  PRODUCER(1),
   /**
-   * <code>MUTUAL_TLS = 2;</code>
+   * <code>PUSH_CONSUMER = 2;</code>
    */
-  MUTUAL_TLS(2),
+  PUSH_CONSUMER(2),
   /**
-   * <code>HTTP_BASIC_AUTH = 3;</code>
+   * <code>PULL_CONSUMER = 3;</code>
    */
-  HTTP_BASIC_AUTH(3),
+  PULL_CONSUMER(3),
+  /**
+   * <code>SIMPLE_CONSUMER = 4;</code>
+   */
+  SIMPLE_CONSUMER(4),
   UNRECOGNIZED(-1),
   ;
 
   /**
-   * <code>AUTHENTICATION_METHOD_UNSPECIFIED = 0;</code>
+   * <code>CLIENT_TYPE_UNSPECIFIED = 0;</code>
+   */
+  public static final int CLIENT_TYPE_UNSPECIFIED_VALUE = 0;
+  /**
+   * <code>PRODUCER = 1;</code>
    */
-  public static final int AUTHENTICATION_METHOD_UNSPECIFIED_VALUE = 0;
+  public static final int PRODUCER_VALUE = 1;
   /**
-   * <code>SASL = 1;</code>
+   * <code>PUSH_CONSUMER = 2;</code>
    */
-  public static final int SASL_VALUE = 1;
+  public static final int PUSH_CONSUMER_VALUE = 2;
   /**
-   * <code>MUTUAL_TLS = 2;</code>
+   * <code>PULL_CONSUMER = 3;</code>
    */
-  public static final int MUTUAL_TLS_VALUE = 2;
+  public static final int PULL_CONSUMER_VALUE = 3;
   /**
-   * <code>HTTP_BASIC_AUTH = 3;</code>
+   * <code>SIMPLE_CONSUMER = 4;</code>
    */
-  public static final int HTTP_BASIC_AUTH_VALUE = 3;
+  public static final int SIMPLE_CONSUMER_VALUE = 4;
 
 
   public final int getNumber() {
@@ -59,7 +67,7 @@ public enum AuthenticationMethod
    * @deprecated Use {@link #forNumber(int)} instead.
    */
   @java.lang.Deprecated
-  public static AuthenticationMethod valueOf(int value) {
+  public static ClientType valueOf(int value) {
     return forNumber(value);
   }
 
@@ -67,25 +75,26 @@ public enum AuthenticationMethod
    * @param value The numeric wire value of the corresponding enum entry.
    * @return The enum associated with the given numeric wire value.
    */
-  public static AuthenticationMethod forNumber(int value) {
+  public static ClientType forNumber(int value) {
     switch (value) {
-      case 0: return AUTHENTICATION_METHOD_UNSPECIFIED;
-      case 1: return SASL;
-      case 2: return MUTUAL_TLS;
-      case 3: return HTTP_BASIC_AUTH;
+      case 0: return CLIENT_TYPE_UNSPECIFIED;
+      case 1: return PRODUCER;
+      case 2: return PUSH_CONSUMER;
+      case 3: return PULL_CONSUMER;
+      case 4: return SIMPLE_CONSUMER;
       default: return null;
     }
   }
 
-  public static com.google.protobuf.Internal.EnumLiteMap<AuthenticationMethod>
+  public static com.google.protobuf.Internal.EnumLiteMap<ClientType>
       internalGetValueMap() {
     return internalValueMap;
   }
   private static final com.google.protobuf.Internal.EnumLiteMap<
-      AuthenticationMethod> internalValueMap =
-        new com.google.protobuf.Internal.EnumLiteMap<AuthenticationMethod>() {
-          public AuthenticationMethod findValueByNumber(int number) {
-            return AuthenticationMethod.forNumber(number);
+      ClientType> internalValueMap =
+        new com.google.protobuf.Internal.EnumLiteMap<ClientType>() {
+          public ClientType findValueByNumber(int number) {
+            return ClientType.forNumber(number);
           }
         };
 
@@ -103,12 +112,12 @@ public enum AuthenticationMethod
   }
   public static final com.google.protobuf.Descriptors.EnumDescriptor
       getDescriptor() {
-    return apache.rocketmq.v2.MQDomain.getDescriptor().getEnumTypes().get(5);
+    return apache.rocketmq.v2.MQDomain.getDescriptor().getEnumTypes().get(7);
   }
 
-  private static final AuthenticationMethod[] VALUES = values();
+  private static final ClientType[] VALUES = values();
 
-  public static AuthenticationMethod valueOf(
+  public static ClientType valueOf(
       com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
     if (desc.getType() != getDescriptor()) {
       throw new java.lang.IllegalArgumentException(
@@ -122,10 +131,10 @@ public enum AuthenticationMethod
 
   private final int value;
 
-  private AuthenticationMethod(int value) {
+  private ClientType(int value) {
     this.value = value;
   }
 
-  // @@protoc_insertion_point(enum_scope:apache.rocketmq.v2.AuthenticationMethod)
+  // @@protoc_insertion_point(enum_scope:apache.rocketmq.v2.ClientType)
 }
 
diff --git a/src/main/java/apache/rocketmq/v2/Code.java b/src/main/java/apache/rocketmq/v2/Code.java
new file mode 100644
index 0000000..9949f34
--- /dev/null
+++ b/src/main/java/apache/rocketmq/v2/Code.java
@@ -0,0 +1,745 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: apache/rocketmq/v2/definition.proto
+
+package apache.rocketmq.v2;
+
+/**
+ * Protobuf enum {@code apache.rocketmq.v2.Code}
+ */
+public enum Code
+    implements com.google.protobuf.ProtocolMessageEnum {
+  /**
+   * <pre>
+   * Success.
+   * </pre>
+   *
+   * <code>OK = 0;</code>
+   */
+  OK(0),
+  /**
+   * <pre>
+   * Format of access point is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_ACCESS_POINT = 1;</code>
+   */
+  ILLEGAL_ACCESS_POINT(1),
+  /**
+   * <pre>
+   * Format of topic is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_TOPIC = 2;</code>
+   */
+  ILLEGAL_TOPIC(2),
+  /**
+   * <pre>
+   * Format of consumer group is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_CONSUMER_GROUP = 3;</code>
+   */
+  ILLEGAL_CONSUMER_GROUP(3),
+  /**
+   * <pre>
+   * Format of message tag is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_MESSAGE_TAG = 4;</code>
+   */
+  ILLEGAL_MESSAGE_TAG(4),
+  /**
+   * <pre>
+   * Format of message key is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_MESSAGE_KEY = 5;</code>
+   */
+  ILLEGAL_MESSAGE_KEY(5),
+  /**
+   * <pre>
+   * Size of message keys exceeds the threshold.
+   * </pre>
+   *
+   * <code>MESSAGE_KEYS_TOO_LARGE = 6;</code>
+   */
+  MESSAGE_KEYS_TOO_LARGE(6),
+  /**
+   * <pre>
+   * Format of message group is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_MESSAGE_GROUP = 7;</code>
+   */
+  ILLEGAL_MESSAGE_GROUP(7),
+  /**
+   * <pre>
+   * Format of message property key is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_MESSAGE_PROPERTY_KEY = 8;</code>
+   */
+  ILLEGAL_MESSAGE_PROPERTY_KEY(8),
+  /**
+   * <pre>
+   * Message properties total size exceeds the threshold.
+   * </pre>
+   *
+   * <code>MESSAGE_PROPERTIES_TOO_LARGE = 9;</code>
+   */
+  MESSAGE_PROPERTIES_TOO_LARGE(9),
+  /**
+   * <pre>
+   * Message body size exceeds the threshold.
+   * </pre>
+   *
+   * <code>MESSAGE_BODY_TOO_LARGE = 10;</code>
+   */
+  MESSAGE_BODY_TOO_LARGE(10),
+  /**
+   * <pre>
+   * User does not have the permission to operate.
+   * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403
+   * </pre>
+   *
+   * <code>FORBIDDEN = 403;</code>
+   */
+  FORBIDDEN(403),
+  /**
+   * <pre>
+   * Code indicates that the client request has not been completed
+   * because it lacks valid authentication credentials for the
+   * requested resource.
+   * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401
+   * </pre>
+   *
+   * <code>UNAUTHORIZED = 401;</code>
+   */
+  UNAUTHORIZED(401),
+  /**
+   * <pre>
+   * Topic resource does not exist.
+   * </pre>
+   *
+   * <code>TOPIC_NOT_FOUND = 13;</code>
+   */
+  TOPIC_NOT_FOUND(13),
+  /**
+   * <pre>
+   * Consumer group resource does not exist.
+   * </pre>
+   *
+   * <code>CONSUMER_GROUP_NOT_FOUND = 14;</code>
+   */
+  CONSUMER_GROUP_NOT_FOUND(14),
+  /**
+   * <pre>
+   * Not allowed to verify message. Chances are that you are verifying
+   * a FIFO message, as is violating FIFO semantics.
+   * </pre>
+   *
+   * <code>VERIFY_MESSAGE_FORBIDDEN = 15;</code>
+   */
+  VERIFY_MESSAGE_FORBIDDEN(15),
+  /**
+   * <pre>
+   * Failed to consume message.
+   * </pre>
+   *
+   * <code>FAILED_TO_CONSUME_MESSAGE = 16;</code>
+   */
+  FAILED_TO_CONSUME_MESSAGE(16),
+  /**
+   * <pre>
+   * Message is corrupted.
+   * </pre>
+   *
+   * <code>MESSAGE_CORRUPTED = 17;</code>
+   */
+  MESSAGE_CORRUPTED(17),
+  /**
+   * <pre>
+   * Too many requests are made in short period of duration.
+   * Requests are throttled.
+   * </pre>
+   *
+   * <code>TOO_MANY_REQUESTS = 18;</code>
+   */
+  TOO_MANY_REQUESTS(18),
+  /**
+   * <pre>
+   * Expired receipt-handle is used when trying to acknowledge or change
+   * invisible duration of a message
+   * </pre>
+   *
+   * <code>RECEIPT_HANDLE_EXPIRED = 19;</code>
+   */
+  RECEIPT_HANDLE_EXPIRED(19),
+  /**
+   * <pre>
+   * Message property is not match the message type.
+   * </pre>
+   *
+   * <code>MESSAGE_PROPERTY_DOES_NOT_MATCH_MESSAGE_TYPE = 20;</code>
+   */
+  MESSAGE_PROPERTY_DOES_NOT_MATCH_MESSAGE_TYPE(20),
+  /**
+   * <pre>
+   * Format of message id is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_MESSAGE_ID = 21;</code>
+   */
+  ILLEGAL_MESSAGE_ID(21),
+  /**
+   * <pre>
+   * Transaction id is invalid.
+   * </pre>
+   *
+   * <code>INVALID_TRANSACTION_ID = 22;</code>
+   */
+  INVALID_TRANSACTION_ID(22),
+  /**
+   * <pre>
+   * Format of filter expression is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_FILTER_EXPRESSION = 23;</code>
+   */
+  ILLEGAL_FILTER_EXPRESSION(23),
+  /**
+   * <pre>
+   * Receipt handle of message is invalid.
+   * </pre>
+   *
+   * <code>INVALID_RECEIPT_HANDLE = 24;</code>
+   */
+  INVALID_RECEIPT_HANDLE(24),
+  /**
+   * <pre>
+   * Message persistence timeout.
+   * </pre>
+   *
+   * <code>MASTER_PERSISTENCE_TIMEOUT = 25;</code>
+   */
+  MASTER_PERSISTENCE_TIMEOUT(25),
+  /**
+   * <pre>
+   * Slave persistence timeout.
+   * </pre>
+   *
+   * <code>SLAVE_PERSISTENCE_TIMEOUT = 26;</code>
+   */
+  SLAVE_PERSISTENCE_TIMEOUT(26),
+  /**
+   * <pre>
+   * The HA-mechanism is not working now.
+   * </pre>
+   *
+   * <code>HA_NOT_AVAILABLE = 27;</code>
+   */
+  HA_NOT_AVAILABLE(27),
+  /**
+   * <pre>
+   * Operation is not allowed in current version.
+   * </pre>
+   *
+   * <code>VERSION_UNSUPPORTED = 28;</code>
+   */
+  VERSION_UNSUPPORTED(28),
+  /**
+   * <pre>
+   * Message not found from server.
+   * </pre>
+   *
+   * <code>MESSAGE_NOT_FOUND = 29;</code>
+   */
+  MESSAGE_NOT_FOUND(29),
+  /**
+   * <pre>
+   * Message offset is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_MESSAGE_OFFSET = 30;</code>
+   */
+  ILLEGAL_MESSAGE_OFFSET(30),
+  /**
+   * <pre>
+   * Illegal message is for the sake of backward compatibility. In most case,
+   * more definitive code is better, e.g. `ILLEGAL_MESSAGE_TAG`.
+   * </pre>
+   *
+   * <code>ILLEGAL_MESSAGE = 31;</code>
+   */
+  ILLEGAL_MESSAGE(31),
+  /**
+   * <pre>
+   * Client type could not be recognized.
+   * </pre>
+   *
+   * <code>UNRECOGNIZED_CLIENT_TYPE = 32;</code>
+   */
+  UNRECOGNIZED_CLIENT_TYPE(32),
+  /**
+   * <pre>
+   * Code indicates that the server encountered an unexpected condition
+   * that prevented it from fulfilling the request.
+   * This error response is a generic "catch-all" response.
+   * Usually, this indicates the server cannot find a better alternative
+   * error code to response. Sometimes, server administrators log error
+   * responses like the 500 status code with more details about the request
+   * to prevent the error from happening again in the future.
+   * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
+   * </pre>
+   *
+   * <code>INTERNAL_SERVER_ERROR = 500;</code>
+   */
+  INTERNAL_SERVER_ERROR(500),
+  /**
+   * <pre>
+   * Code means that the server or client does not support the functionality
+   * required to fulfill the request.
+   * </pre>
+   *
+   * <code>NOT_IMPLEMENTED = 501;</code>
+   */
+  NOT_IMPLEMENTED(501),
+  /**
+   * <pre>
+   * Code indicates that the server, while acting as a gateway or proxy,
+   * did not get a response in time from the upstream server that
+   * it needed in order to complete the request.
+   * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504
+   * </pre>
+   *
+   * <code>GATEWAY_TIMEOUT = 504;</code>
+   */
+  GATEWAY_TIMEOUT(504),
+  UNRECOGNIZED(-1),
+  ;
+
+  /**
+   * <pre>
+   * Success.
+   * </pre>
+   *
+   * <code>OK = 0;</code>
+   */
+  public static final int OK_VALUE = 0;
+  /**
+   * <pre>
+   * Format of access point is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_ACCESS_POINT = 1;</code>
+   */
+  public static final int ILLEGAL_ACCESS_POINT_VALUE = 1;
+  /**
+   * <pre>
+   * Format of topic is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_TOPIC = 2;</code>
+   */
+  public static final int ILLEGAL_TOPIC_VALUE = 2;
+  /**
+   * <pre>
+   * Format of consumer group is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_CONSUMER_GROUP = 3;</code>
+   */
+  public static final int ILLEGAL_CONSUMER_GROUP_VALUE = 3;
+  /**
+   * <pre>
+   * Format of message tag is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_MESSAGE_TAG = 4;</code>
+   */
+  public static final int ILLEGAL_MESSAGE_TAG_VALUE = 4;
+  /**
+   * <pre>
+   * Format of message key is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_MESSAGE_KEY = 5;</code>
+   */
+  public static final int ILLEGAL_MESSAGE_KEY_VALUE = 5;
+  /**
+   * <pre>
+   * Size of message keys exceeds the threshold.
+   * </pre>
+   *
+   * <code>MESSAGE_KEYS_TOO_LARGE = 6;</code>
+   */
+  public static final int MESSAGE_KEYS_TOO_LARGE_VALUE = 6;
+  /**
+   * <pre>
+   * Format of message group is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_MESSAGE_GROUP = 7;</code>
+   */
+  public static final int ILLEGAL_MESSAGE_GROUP_VALUE = 7;
+  /**
+   * <pre>
+   * Format of message property key is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_MESSAGE_PROPERTY_KEY = 8;</code>
+   */
+  public static final int ILLEGAL_MESSAGE_PROPERTY_KEY_VALUE = 8;
+  /**
+   * <pre>
+   * Message properties total size exceeds the threshold.
+   * </pre>
+   *
+   * <code>MESSAGE_PROPERTIES_TOO_LARGE = 9;</code>
+   */
+  public static final int MESSAGE_PROPERTIES_TOO_LARGE_VALUE = 9;
+  /**
+   * <pre>
+   * Message body size exceeds the threshold.
+   * </pre>
+   *
+   * <code>MESSAGE_BODY_TOO_LARGE = 10;</code>
+   */
+  public static final int MESSAGE_BODY_TOO_LARGE_VALUE = 10;
+  /**
+   * <pre>
+   * User does not have the permission to operate.
+   * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403
+   * </pre>
+   *
+   * <code>FORBIDDEN = 403;</code>
+   */
+  public static final int FORBIDDEN_VALUE = 403;
+  /**
+   * <pre>
+   * Code indicates that the client request has not been completed
+   * because it lacks valid authentication credentials for the
+   * requested resource.
+   * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401
+   * </pre>
+   *
+   * <code>UNAUTHORIZED = 401;</code>
+   */
+  public static final int UNAUTHORIZED_VALUE = 401;
+  /**
+   * <pre>
+   * Topic resource does not exist.
+   * </pre>
+   *
+   * <code>TOPIC_NOT_FOUND = 13;</code>
+   */
+  public static final int TOPIC_NOT_FOUND_VALUE = 13;
+  /**
+   * <pre>
+   * Consumer group resource does not exist.
+   * </pre>
+   *
+   * <code>CONSUMER_GROUP_NOT_FOUND = 14;</code>
+   */
+  public static final int CONSUMER_GROUP_NOT_FOUND_VALUE = 14;
+  /**
+   * <pre>
+   * Not allowed to verify message. Chances are that you are verifying
+   * a FIFO message, as is violating FIFO semantics.
+   * </pre>
+   *
+   * <code>VERIFY_MESSAGE_FORBIDDEN = 15;</code>
+   */
+  public static final int VERIFY_MESSAGE_FORBIDDEN_VALUE = 15;
+  /**
+   * <pre>
+   * Failed to consume message.
+   * </pre>
+   *
+   * <code>FAILED_TO_CONSUME_MESSAGE = 16;</code>
+   */
+  public static final int FAILED_TO_CONSUME_MESSAGE_VALUE = 16;
+  /**
+   * <pre>
+   * Message is corrupted.
+   * </pre>
+   *
+   * <code>MESSAGE_CORRUPTED = 17;</code>
+   */
+  public static final int MESSAGE_CORRUPTED_VALUE = 17;
+  /**
+   * <pre>
+   * Too many requests are made in short period of duration.
+   * Requests are throttled.
+   * </pre>
+   *
+   * <code>TOO_MANY_REQUESTS = 18;</code>
+   */
+  public static final int TOO_MANY_REQUESTS_VALUE = 18;
+  /**
+   * <pre>
+   * Expired receipt-handle is used when trying to acknowledge or change
+   * invisible duration of a message
+   * </pre>
+   *
+   * <code>RECEIPT_HANDLE_EXPIRED = 19;</code>
+   */
+  public static final int RECEIPT_HANDLE_EXPIRED_VALUE = 19;
+  /**
+   * <pre>
+   * Message property is not match the message type.
+   * </pre>
+   *
+   * <code>MESSAGE_PROPERTY_DOES_NOT_MATCH_MESSAGE_TYPE = 20;</code>
+   */
+  public static final int MESSAGE_PROPERTY_DOES_NOT_MATCH_MESSAGE_TYPE_VALUE = 20;
+  /**
+   * <pre>
+   * Format of message id is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_MESSAGE_ID = 21;</code>
+   */
+  public static final int ILLEGAL_MESSAGE_ID_VALUE = 21;
+  /**
+   * <pre>
+   * Transaction id is invalid.
+   * </pre>
+   *
+   * <code>INVALID_TRANSACTION_ID = 22;</code>
+   */
+  public static final int INVALID_TRANSACTION_ID_VALUE = 22;
+  /**
+   * <pre>
+   * Format of filter expression is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_FILTER_EXPRESSION = 23;</code>
+   */
+  public static final int ILLEGAL_FILTER_EXPRESSION_VALUE = 23;
+  /**
+   * <pre>
+   * Receipt handle of message is invalid.
+   * </pre>
+   *
+   * <code>INVALID_RECEIPT_HANDLE = 24;</code>
+   */
+  public static final int INVALID_RECEIPT_HANDLE_VALUE = 24;
+  /**
+   * <pre>
+   * Message persistence timeout.
+   * </pre>
+   *
+   * <code>MASTER_PERSISTENCE_TIMEOUT = 25;</code>
+   */
+  public static final int MASTER_PERSISTENCE_TIMEOUT_VALUE = 25;
+  /**
+   * <pre>
+   * Slave persistence timeout.
+   * </pre>
+   *
+   * <code>SLAVE_PERSISTENCE_TIMEOUT = 26;</code>
+   */
+  public static final int SLAVE_PERSISTENCE_TIMEOUT_VALUE = 26;
+  /**
+   * <pre>
+   * The HA-mechanism is not working now.
+   * </pre>
+   *
+   * <code>HA_NOT_AVAILABLE = 27;</code>
+   */
+  public static final int HA_NOT_AVAILABLE_VALUE = 27;
+  /**
+   * <pre>
+   * Operation is not allowed in current version.
+   * </pre>
+   *
+   * <code>VERSION_UNSUPPORTED = 28;</code>
+   */
+  public static final int VERSION_UNSUPPORTED_VALUE = 28;
+  /**
+   * <pre>
+   * Message not found from server.
+   * </pre>
+   *
+   * <code>MESSAGE_NOT_FOUND = 29;</code>
+   */
+  public static final int MESSAGE_NOT_FOUND_VALUE = 29;
+  /**
+   * <pre>
+   * Message offset is illegal.
+   * </pre>
+   *
+   * <code>ILLEGAL_MESSAGE_OFFSET = 30;</code>
+   */
+  public static final int ILLEGAL_MESSAGE_OFFSET_VALUE = 30;
+  /**
+   * <pre>
+   * Illegal message is for the sake of backward compatibility. In most case,
+   * more definitive code is better, e.g. `ILLEGAL_MESSAGE_TAG`.
+   * </pre>
+   *
+   * <code>ILLEGAL_MESSAGE = 31;</code>
+   */
+  public static final int ILLEGAL_MESSAGE_VALUE = 31;
+  /**
+   * <pre>
+   * Client type could not be recognized.
+   * </pre>
+   *
+   * <code>UNRECOGNIZED_CLIENT_TYPE = 32;</code>
+   */
+  public static final int UNRECOGNIZED_CLIENT_TYPE_VALUE = 32;
+  /**
+   * <pre>
+   * Code indicates that the server encountered an unexpected condition
+   * that prevented it from fulfilling the request.
+   * This error response is a generic "catch-all" response.
+   * Usually, this indicates the server cannot find a better alternative
+   * error code to response. Sometimes, server administrators log error
+   * responses like the 500 status code with more details about the request
+   * to prevent the error from happening again in the future.
+   * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
+   * </pre>
+   *
+   * <code>INTERNAL_SERVER_ERROR = 500;</code>
+   */
+  public static final int INTERNAL_SERVER_ERROR_VALUE = 500;
+  /**
+   * <pre>
+   * Code means that the server or client does not support the functionality
+   * required to fulfill the request.
+   * </pre>
+   *
+   * <code>NOT_IMPLEMENTED = 501;</code>
+   */
+  public static final int NOT_IMPLEMENTED_VALUE = 501;
+  /**
+   * <pre>
+   * Code indicates that the server, while acting as a gateway or proxy,
+   * did not get a response in time from the upstream server that
+   * it needed in order to complete the request.
+   * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504
+   * </pre>
+   *
+   * <code>GATEWAY_TIMEOUT = 504;</code>
+   */
+  public static final int GATEWAY_TIMEOUT_VALUE = 504;
+
+
+  public final int getNumber() {
+    if (this == UNRECOGNIZED) {
+      throw new java.lang.IllegalArgumentException(
+          "Can't get the number of an unknown enum value.");
+    }
+    return value;
+  }
+
+  /**
+   * @param value The numeric wire value of the corresponding enum entry.
+   * @return The enum associated with the given numeric wire value.
+   * @deprecated Use {@link #forNumber(int)} instead.
+   */
+  @java.lang.Deprecated
+  public static Code valueOf(int value) {
+    return forNumber(value);
+  }
+
+  /**
+   * @param value The numeric wire value of the corresponding enum entry.
+   * @return The enum associated with the given numeric wire value.
+   */
+  public static Code forNumber(int value) {
+    switch (value) {
+      case 0: return OK;
+      case 1: return ILLEGAL_ACCESS_POINT;
+      case 2: return ILLEGAL_TOPIC;
+      case 3: return ILLEGAL_CONSUMER_GROUP;
+      case 4: return ILLEGAL_MESSAGE_TAG;
+      case 5: return ILLEGAL_MESSAGE_KEY;
+      case 6: return MESSAGE_KEYS_TOO_LARGE;
+      case 7: return ILLEGAL_MESSAGE_GROUP;
+      case 8: return ILLEGAL_MESSAGE_PROPERTY_KEY;
+      case 9: return MESSAGE_PROPERTIES_TOO_LARGE;
+      case 10: return MESSAGE_BODY_TOO_LARGE;
+      case 403: return FORBIDDEN;
+      case 401: return UNAUTHORIZED;
+      case 13: return TOPIC_NOT_FOUND;
+      case 14: return CONSUMER_GROUP_NOT_FOUND;
+      case 15: return VERIFY_MESSAGE_FORBIDDEN;
+      case 16: return FAILED_TO_CONSUME_MESSAGE;
+      case 17: return MESSAGE_CORRUPTED;
+      case 18: return TOO_MANY_REQUESTS;
+      case 19: return RECEIPT_HANDLE_EXPIRED;
+      case 20: return MESSAGE_PROPERTY_DOES_NOT_MATCH_MESSAGE_TYPE;
+      case 21: return ILLEGAL_MESSAGE_ID;
+      case 22: return INVALID_TRANSACTION_ID;
+      case 23: return ILLEGAL_FILTER_EXPRESSION;
+      case 24: return INVALID_RECEIPT_HANDLE;
+      case 25: return MASTER_PERSISTENCE_TIMEOUT;
+      case 26: return SLAVE_PERSISTENCE_TIMEOUT;
+      case 27: return HA_NOT_AVAILABLE;
+      case 28: return VERSION_UNSUPPORTED;
+      case 29: return MESSAGE_NOT_FOUND;
+      case 30: return ILLEGAL_MESSAGE_OFFSET;
+      case 31: return ILLEGAL_MESSAGE;
+      case 32: return UNRECOGNIZED_CLIENT_TYPE;
+      case 500: return INTERNAL_SERVER_ERROR;
+      case 501: return NOT_IMPLEMENTED;
+      case 504: return GATEWAY_TIMEOUT;
+      default: return null;
+    }
+  }
+
+  public static com.google.protobuf.Internal.EnumLiteMap<Code>
+      internalGetValueMap() {
+    return internalValueMap;
+  }
+  private static final com.google.protobuf.Internal.EnumLiteMap<
+      Code> internalValueMap =
+        new com.google.protobuf.Internal.EnumLiteMap<Code>() {
+          public Code findValueByNumber(int number) {
+            return Code.forNumber(number);
+          }
+        };
+
+  public final com.google.protobuf.Descriptors.EnumValueDescriptor
+      getValueDescriptor() {
+    if (this == UNRECOGNIZED) {
+      throw new java.lang.IllegalStateException(
+          "Can't get the descriptor of an unrecognized enum value.");
+    }
+    return getDescriptor().getValues().get(ordinal());
+  }
+  public final com.google.protobuf.Descriptors.EnumDescriptor
+      getDescriptorForType() {
+    return getDescriptor();
+  }
+  public static final com.google.protobuf.Descriptors.EnumDescriptor
+      getDescriptor() {
+    return apache.rocketmq.v2.MQDomain.getDescriptor().getEnumTypes().get(10);
+  }
+
+  private static final Code[] VALUES = values();
+
+  public static Code valueOf(
+      com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+    if (desc.getType() != getDescriptor()) {
+      throw new java.lang.IllegalArgumentException(
+        "EnumValueDescriptor is not for this type.");
+    }
+    if (desc.getIndex() == -1) {
+      return UNRECOGNIZED;
+    }
+    return VALUES[desc.getIndex()];
+  }
+
+  private final int value;
+
+  private Code(int value) {
+    this.value = value;
+  }
+
+  // @@protoc_insertion_point(enum_scope:apache.rocketmq.v2.Code)
+}
+
diff --git a/src/main/java/apache/rocketmq/v2/Digest.java b/src/main/java/apache/rocketmq/v2/Digest.java
index 7e4075b..4c906fd 100644
--- a/src/main/java/apache/rocketmq/v2/Digest.java
+++ b/src/main/java/apache/rocketmq/v2/Digest.java
@@ -7,9 +7,9 @@ package apache.rocketmq.v2;
  * <pre>
  * When publishing messages to or subscribing messages from brokers, clients
  * shall include or validate digests of message body to ensure data integrity.
- * For message publishment, when an invalid digest were detected, brokers need
+ * For message publishing, when an invalid digest were detected, brokers need
  * respond client with BAD_REQUEST.
- * For messags subscription, when an invalid digest were detected, consumers
+ * For messages subscription, when an invalid digest were detected, consumers
  * need to handle this case according to message type:
  * 1) Standard messages should be negatively acknowledged instantly, causing
  * immediate re-delivery; 2) FIFO messages require special RPC, to re-fetch
@@ -183,7 +183,7 @@ private static final long serialVersionUID = 0L;
     if (type_ != apache.rocketmq.v2.DigestType.DIGEST_TYPE_UNSPECIFIED.getNumber()) {
       output.writeEnum(1, type_);
     }
-    if (!getChecksumBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(checksum_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 2, checksum_);
     }
     unknownFields.writeTo(output);
@@ -199,7 +199,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeEnumSize(1, type_);
     }
-    if (!getChecksumBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(checksum_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, checksum_);
     }
     size += unknownFields.getSerializedSize();
@@ -334,9 +334,9 @@ private static final long serialVersionUID = 0L;
    * <pre>
    * When publishing messages to or subscribing messages from brokers, clients
    * shall include or validate digests of message body to ensure data integrity.
-   * For message publishment, when an invalid digest were detected, brokers need
+   * For message publishing, when an invalid digest were detected, brokers need
    * respond client with BAD_REQUEST.
-   * For messags subscription, when an invalid digest were detected, consumers
+   * For messages subscription, when an invalid digest were detected, consumers
    * need to handle this case according to message type:
    * 1) Standard messages should be negatively acknowledged instantly, causing
    * immediate re-delivery; 2) FIFO messages require special RPC, to re-fetch
diff --git a/src/main/java/apache/rocketmq/v2/DigestType.java b/src/main/java/apache/rocketmq/v2/DigestType.java
index 7b55269..fd0584e 100644
--- a/src/main/java/apache/rocketmq/v2/DigestType.java
+++ b/src/main/java/apache/rocketmq/v2/DigestType.java
@@ -133,7 +133,7 @@ public enum DigestType
   }
   public static final com.google.protobuf.Descriptors.EnumDescriptor
       getDescriptor() {
-    return apache.rocketmq.v2.MQDomain.getDescriptor().getEnumTypes().get(8);
+    return apache.rocketmq.v2.MQDomain.getDescriptor().getEnumTypes().get(6);
   }
 
   private static final DigestType[] VALUES = values();
diff --git a/src/main/java/apache/rocketmq/v2/ConsumeMessageType.java b/src/main/java/apache/rocketmq/v2/Direction.java
similarity index 58%
rename from src/main/java/apache/rocketmq/v2/ConsumeMessageType.java
rename to src/main/java/apache/rocketmq/v2/Direction.java
index fcab3f0..20ca1a9 100644
--- a/src/main/java/apache/rocketmq/v2/ConsumeMessageType.java
+++ b/src/main/java/apache/rocketmq/v2/Direction.java
@@ -1,40 +1,40 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: apache/rocketmq/v2/definition.proto
+// source: apache/rocketmq/v2/service.proto
 
 package apache.rocketmq.v2;
 
 /**
- * Protobuf enum {@code apache.rocketmq.v2.ConsumeMessageType}
+ * Protobuf enum {@code apache.rocketmq.v2.Direction}
  */
-public enum ConsumeMessageType
+public enum Direction
     implements com.google.protobuf.ProtocolMessageEnum {
   /**
-   * <code>CONSUME_MESSAGE_TYPE_UNSPECIFIED = 0;</code>
+   * <code>DIRECTION_UNSPECIFIED = 0;</code>
    */
-  CONSUME_MESSAGE_TYPE_UNSPECIFIED(0),
+  DIRECTION_UNSPECIFIED(0),
   /**
-   * <code>ACTIVE = 1;</code>
+   * <code>REQUEST = 1;</code>
    */
-  ACTIVE(1),
+  REQUEST(1),
   /**
-   * <code>PASSIVE = 2;</code>
+   * <code>RESPONSE = 2;</code>
    */
-  PASSIVE(2),
+  RESPONSE(2),
   UNRECOGNIZED(-1),
   ;
 
   /**
-   * <code>CONSUME_MESSAGE_TYPE_UNSPECIFIED = 0;</code>
+   * <code>DIRECTION_UNSPECIFIED = 0;</code>
    */
-  public static final int CONSUME_MESSAGE_TYPE_UNSPECIFIED_VALUE = 0;
+  public static final int DIRECTION_UNSPECIFIED_VALUE = 0;
   /**
-   * <code>ACTIVE = 1;</code>
+   * <code>REQUEST = 1;</code>
    */
-  public static final int ACTIVE_VALUE = 1;
+  public static final int REQUEST_VALUE = 1;
   /**
-   * <code>PASSIVE = 2;</code>
+   * <code>RESPONSE = 2;</code>
    */
-  public static final int PASSIVE_VALUE = 2;
+  public static final int RESPONSE_VALUE = 2;
 
 
   public final int getNumber() {
@@ -51,7 +51,7 @@ public enum ConsumeMessageType
    * @deprecated Use {@link #forNumber(int)} instead.
    */
   @java.lang.Deprecated
-  public static ConsumeMessageType valueOf(int value) {
+  public static Direction valueOf(int value) {
     return forNumber(value);
   }
 
@@ -59,24 +59,24 @@ public enum ConsumeMessageType
    * @param value The numeric wire value of the corresponding enum entry.
    * @return The enum associated with the given numeric wire value.
    */
-  public static ConsumeMessageType forNumber(int value) {
+  public static Direction forNumber(int value) {
     switch (value) {
-      case 0: return CONSUME_MESSAGE_TYPE_UNSPECIFIED;
-      case 1: return ACTIVE;
-      case 2: return PASSIVE;
+      case 0: return DIRECTION_UNSPECIFIED;
+      case 1: return REQUEST;
+      case 2: return RESPONSE;
       default: return null;
     }
   }
 
-  public static com.google.protobuf.Internal.EnumLiteMap<ConsumeMessageType>
+  public static com.google.protobuf.Internal.EnumLiteMap<Direction>
       internalGetValueMap() {
     return internalValueMap;
   }
   private static final com.google.protobuf.Internal.EnumLiteMap<
-      ConsumeMessageType> internalValueMap =
-        new com.google.protobuf.Internal.EnumLiteMap<ConsumeMessageType>() {
-          public ConsumeMessageType findValueByNumber(int number) {
-            return ConsumeMessageType.forNumber(number);
+      Direction> internalValueMap =
+        new com.google.protobuf.Internal.EnumLiteMap<Direction>() {
+          public Direction findValueByNumber(int number) {
+            return Direction.forNumber(number);
           }
         };
 
@@ -94,12 +94,12 @@ public enum ConsumeMessageType
   }
   public static final com.google.protobuf.Descriptors.EnumDescriptor
       getDescriptor() {
-    return apache.rocketmq.v2.MQDomain.getDescriptor().getEnumTypes().get(4);
+    return apache.rocketmq.v2.MQService.getDescriptor().getEnumTypes().get(0);
   }
 
-  private static final ConsumeMessageType[] VALUES = values();
+  private static final Direction[] VALUES = values();
 
-  public static ConsumeMessageType valueOf(
+  public static Direction valueOf(
       com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
     if (desc.getType() != getDescriptor()) {
       throw new java.lang.IllegalArgumentException(
@@ -113,10 +113,10 @@ public enum ConsumeMessageType
 
   private final int value;
 
-  private ConsumeMessageType(int value) {
+  private Direction(int value) {
     this.value = value;
   }
 
-  // @@protoc_insertion_point(enum_scope:apache.rocketmq.v2.ConsumeMessageType)
+  // @@protoc_insertion_point(enum_scope:apache.rocketmq.v2.Direction)
 }
 
diff --git a/src/main/java/apache/rocketmq/v2/Encoding.java b/src/main/java/apache/rocketmq/v2/Encoding.java
index e393cc4..a02fec7 100644
--- a/src/main/java/apache/rocketmq/v2/Encoding.java
+++ b/src/main/java/apache/rocketmq/v2/Encoding.java
@@ -94,7 +94,7 @@ public enum Encoding
   }
   public static final com.google.protobuf.Descriptors.EnumDescriptor
       getDescriptor() {
-    return apache.rocketmq.v2.MQDomain.getDescriptor().getEnumTypes().get(9);
+    return apache.rocketmq.v2.MQDomain.getDescriptor().getEnumTypes().get(8);
   }
 
   private static final Encoding[] VALUES = values();
diff --git a/src/main/java/apache/rocketmq/v2/EndTransactionRequest.java b/src/main/java/apache/rocketmq/v2/EndTransactionRequest.java
index 14abf03..f88277b 100644
--- a/src/main/java/apache/rocketmq/v2/EndTransactionRequest.java
+++ b/src/main/java/apache/rocketmq/v2/EndTransactionRequest.java
@@ -55,13 +55,13 @@ private static final long serialVersionUID = 0L;
             break;
           case 10: {
             apache.rocketmq.v2.Resource.Builder subBuilder = null;
-            if (group_ != null) {
-              subBuilder = group_.toBuilder();
+            if (topic_ != null) {
+              subBuilder = topic_.toBuilder();
             }
-            group_ = input.readMessage(apache.rocketmq.v2.Resource.parser(), extensionRegistry);
+            topic_ = input.readMessage(apache.rocketmq.v2.Resource.parser(), extensionRegistry);
             if (subBuilder != null) {
-              subBuilder.mergeFrom(group_);
-              group_ = subBuilder.buildPartial();
+              subBuilder.mergeFrom(topic_);
+              topic_ = subBuilder.buildPartial();
             }
 
             break;
@@ -128,30 +128,30 @@ private static final long serialVersionUID = 0L;
             apache.rocketmq.v2.EndTransactionRequest.class, apache.rocketmq.v2.EndTransactionRequest.Builder.class);
   }
 
-  public static final int GROUP_FIELD_NUMBER = 1;
-  private apache.rocketmq.v2.Resource group_;
+  public static final int TOPIC_FIELD_NUMBER = 1;
+  private apache.rocketmq.v2.Resource topic_;
   /**
-   * <code>.apache.rocketmq.v2.Resource group = 1;</code>
-   * @return Whether the group field is set.
+   * <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+   * @return Whether the topic field is set.
    */
   @java.lang.Override
-  public boolean hasGroup() {
-    return group_ != null;
+  public boolean hasTopic() {
+    return topic_ != null;
   }
   /**
-   * <code>.apache.rocketmq.v2.Resource group = 1;</code>
-   * @return The group.
+   * <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+   * @return The topic.
    */
   @java.lang.Override
-  public apache.rocketmq.v2.Resource getGroup() {
-    return group_ == null ? apache.rocketmq.v2.Resource.getDefaultInstance() : group_;
+  public apache.rocketmq.v2.Resource getTopic() {
+    return topic_ == null ? apache.rocketmq.v2.Resource.getDefaultInstance() : topic_;
   }
   /**
-   * <code>.apache.rocketmq.v2.Resource group = 1;</code>
+   * <code>.apache.rocketmq.v2.Resource topic = 1;</code>
    */
   @java.lang.Override
-  public apache.rocketmq.v2.ResourceOrBuilder getGroupOrBuilder() {
-    return getGroup();
+  public apache.rocketmq.v2.ResourceOrBuilder getTopicOrBuilder() {
+    return getTopic();
   }
 
   public static final int MESSAGE_ID_FIELD_NUMBER = 2;
@@ -320,13 +320,13 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (group_ != null) {
-      output.writeMessage(1, getGroup());
+    if (topic_ != null) {
+      output.writeMessage(1, getTopic());
     }
-    if (!getMessageIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 2, messageId_);
     }
-    if (!getTransactionIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(transactionId_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 3, transactionId_);
     }
     if (resolution_ != apache.rocketmq.v2.TransactionResolution.TRANSACTION_RESOLUTION_UNSPECIFIED.getNumber()) {
@@ -335,7 +335,7 @@ private static final long serialVersionUID = 0L;
     if (source_ != apache.rocketmq.v2.TransactionSource.SOURCE_UNSPECIFIED.getNumber()) {
       output.writeEnum(5, source_);
     }
-    if (!getTraceContextBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(traceContext_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 6, traceContext_);
     }
     unknownFields.writeTo(output);
@@ -347,14 +347,14 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (group_ != null) {
+    if (topic_ != null) {
       size += com.google.protobuf.CodedOutputStream
-        .computeMessageSize(1, getGroup());
+        .computeMessageSize(1, getTopic());
     }
-    if (!getMessageIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, messageId_);
     }
-    if (!getTransactionIdBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(transactionId_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, transactionId_);
     }
     if (resolution_ != apache.rocketmq.v2.TransactionResolution.TRANSACTION_RESOLUTION_UNSPECIFIED.getNumber()) {
@@ -365,7 +365,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeEnumSize(5, source_);
     }
-    if (!getTraceContextBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(traceContext_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, traceContext_);
     }
     size += unknownFields.getSerializedSize();
@@ -383,10 +383,10 @@ private static final long serialVersionUID = 0L;
     }
     apache.rocketmq.v2.EndTransactionRequest other = (apache.rocketmq.v2.EndTransactionRequest) obj;
 
-    if (hasGroup() != other.hasGroup()) return false;
-    if (hasGroup()) {
-      if (!getGroup()
-          .equals(other.getGroup())) return false;
+    if (hasTopic() != other.hasTopic()) return false;
+    if (hasTopic()) {
+      if (!getTopic()
+          .equals(other.getTopic())) return false;
     }
     if (!getMessageId()
         .equals(other.getMessageId())) return false;
@@ -407,9 +407,9 @@ private static final long serialVersionUID = 0L;
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    if (hasGroup()) {
-      hash = (37 * hash) + GROUP_FIELD_NUMBER;
-      hash = (53 * hash) + getGroup().hashCode();
+    if (hasTopic()) {
+      hash = (37 * hash) + TOPIC_FIELD_NUMBER;
+      hash = (53 * hash) + getTopic().hashCode();
     }
     hash = (37 * hash) + MESSAGE_ID_FIELD_NUMBER;
     hash = (53 * hash) + getMessageId().hashCode();
@@ -554,11 +554,11 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      if (groupBuilder_ == null) {
-        group_ = null;
+      if (topicBuilder_ == null) {
+        topic_ = null;
       } else {
-        group_ = null;
-        groupBuilder_ = null;
+        topic_ = null;
+        topicBuilder_ = null;
       }
       messageId_ = "";
 
@@ -596,10 +596,10 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public apache.rocketmq.v2.EndTransactionRequest buildPartial() {
       apache.rocketmq.v2.EndTransactionRequest result = new apache.rocketmq.v2.EndTransactionRequest(this);
-      if (groupBuilder_ == null) {
-        result.group_ = group_;
+      if (topicBuilder_ == null) {
+        result.topic_ = topic_;
       } else {
-        result.group_ = groupBuilder_.build();
+        result.topic_ = topicBuilder_.build();
       }
       result.messageId_ = messageId_;
       result.transactionId_ = transactionId_;
@@ -654,8 +654,8 @@ private static final long serialVersionUID = 0L;
 
     public Builder mergeFrom(apache.rocketmq.v2.EndTransactionRequest other) {
       if (other == apache.rocketmq.v2.EndTransactionRequest.getDefaultInstance()) return this;
-      if (other.hasGroup()) {
-        mergeGroup(other.getGroup());
+      if (other.hasTopic()) {
+        mergeTopic(other.getTopic());
       }
       if (!other.getMessageId().isEmpty()) {
         messageId_ = other.messageId_;
@@ -704,123 +704,123 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
-    private apache.rocketmq.v2.Resource group_;
+    private apache.rocketmq.v2.Resource topic_;
     private com.google.protobuf.SingleFieldBuilderV3<
-        apache.rocketmq.v2.Resource, apache.rocketmq.v2.Resource.Builder, apache.rocketmq.v2.ResourceOrBuilder> groupBuilder_;
+        apache.rocketmq.v2.Resource, apache.rocketmq.v2.Resource.Builder, apache.rocketmq.v2.ResourceOrBuilder> topicBuilder_;
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 1;</code>
-     * @return Whether the group field is set.
+     * <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+     * @return Whether the topic field is set.
      */
-    public boolean hasGroup() {
-      return groupBuilder_ != null || group_ != null;
+    public boolean hasTopic() {
+      return topicBuilder_ != null || topic_ != null;
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 1;</code>
-     * @return The group.
+     * <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+     * @return The topic.
      */
-    public apache.rocketmq.v2.Resource getGroup() {
-      if (groupBuilder_ == null) {
-        return group_ == null ? apache.rocketmq.v2.Resource.getDefaultInstance() : group_;
+    public apache.rocketmq.v2.Resource getTopic() {
+      if (topicBuilder_ == null) {
+        return topic_ == null ? apache.rocketmq.v2.Resource.getDefaultInstance() : topic_;
       } else {
-        return groupBuilder_.getMessage();
+        return topicBuilder_.getMessage();
       }
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 1;</code>
+     * <code>.apache.rocketmq.v2.Resource topic = 1;</code>
      */
-    public Builder setGroup(apache.rocketmq.v2.Resource value) {
-      if (groupBuilder_ == null) {
+    public Builder setTopic(apache.rocketmq.v2.Resource value) {
+      if (topicBuilder_ == null) {
         if (value == null) {
           throw new NullPointerException();
         }
-        group_ = value;
+        topic_ = value;
         onChanged();
       } else {
-        groupBuilder_.setMessage(value);
+        topicBuilder_.setMessage(value);
       }
 
       return this;
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 1;</code>
+     * <code>.apache.rocketmq.v2.Resource topic = 1;</code>
      */
-    public Builder setGroup(
+    public Builder setTopic(
         apache.rocketmq.v2.Resource.Builder builderForValue) {
-      if (groupBuilder_ == null) {
-        group_ = builderForValue.build();
+      if (topicBuilder_ == null) {
+        topic_ = builderForValue.build();
         onChanged();
       } else {
-        groupBuilder_.setMessage(builderForValue.build());
+        topicBuilder_.setMessage(builderForValue.build());
       }
 
       return this;
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 1;</code>
+     * <code>.apache.rocketmq.v2.Resource topic = 1;</code>
      */
-    public Builder mergeGroup(apache.rocketmq.v2.Resource value) {
-      if (groupBuilder_ == null) {
-        if (group_ != null) {
-          group_ =
-            apache.rocketmq.v2.Resource.newBuilder(group_).mergeFrom(value).buildPartial();
+    public Builder mergeTopic(apache.rocketmq.v2.Resource value) {
+      if (topicBuilder_ == null) {
+        if (topic_ != null) {
+          topic_ =
+            apache.rocketmq.v2.Resource.newBuilder(topic_).mergeFrom(value).buildPartial();
         } else {
-          group_ = value;
+          topic_ = value;
         }
         onChanged();
       } else {
-        groupBuilder_.mergeFrom(value);
+        topicBuilder_.mergeFrom(value);
       }
 
       return this;
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 1;</code>
+     * <code>.apache.rocketmq.v2.Resource topic = 1;</code>
      */
-    public Builder clearGroup() {
-      if (groupBuilder_ == null) {
-        group_ = null;
+    public Builder clearTopic() {
+      if (topicBuilder_ == null) {
+        topic_ = null;
         onChanged();
       } else {
-        group_ = null;
-        groupBuilder_ = null;
+        topic_ = null;
+        topicBuilder_ = null;
       }
 
       return this;
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 1;</code>
+     * <code>.apache.rocketmq.v2.Resource topic = 1;</code>
      */
-    public apache.rocketmq.v2.Resource.Builder getGroupBuilder() {
+    public apache.rocketmq.v2.Resource.Builder getTopicBuilder() {
       
       onChanged();
-      return getGroupFieldBuilder().getBuilder();
+      return getTopicFieldBuilder().getBuilder();
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 1;</code>
+     * <code>.apache.rocketmq.v2.Resource topic = 1;</code>
      */
-    public apache.rocketmq.v2.ResourceOrBuilder getGroupOrBuilder() {
-      if (groupBuilder_ != null) {
-        return groupBuilder_.getMessageOrBuilder();
+    public apache.rocketmq.v2.ResourceOrBuilder getTopicOrBuilder() {
+      if (topicBuilder_ != null) {
+        return topicBuilder_.getMessageOrBuilder();
       } else {
-        return group_ == null ?
-            apache.rocketmq.v2.Resource.getDefaultInstance() : group_;
+        return topic_ == null ?
+            apache.rocketmq.v2.Resource.getDefaultInstance() : topic_;
       }
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 1;</code>
+     * <code>.apache.rocketmq.v2.Resource topic = 1;</code>
      */
     private com.google.protobuf.SingleFieldBuilderV3<
         apache.rocketmq.v2.Resource, apache.rocketmq.v2.Resource.Builder, apache.rocketmq.v2.ResourceOrBuilder> 
-        getGroupFieldBuilder() {
-      if (groupBuilder_ == null) {
-        groupBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+        getTopicFieldBuilder() {
+      if (topicBuilder_ == null) {
+        topicBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
             apache.rocketmq.v2.Resource, apache.rocketmq.v2.Resource.Builder, apache.rocketmq.v2.ResourceOrBuilder>(
-                getGroup(),
+                getTopic(),
                 getParentForChildren(),
                 isClean());
-        group_ = null;
+        topic_ = null;
       }
-      return groupBuilder_;
+      return topicBuilder_;
     }
 
     private java.lang.Object messageId_ = "";
diff --git a/src/main/java/apache/rocketmq/v2/EndTransactionRequestOrBuilder.java b/src/main/java/apache/rocketmq/v2/EndTransactionRequestOrBuilder.java
index 4719009..c738bf1 100644
--- a/src/main/java/apache/rocketmq/v2/EndTransactionRequestOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v2/EndTransactionRequestOrBuilder.java
@@ -8,19 +8,19 @@ public interface EndTransactionRequestOrBuilder extends
     com.google.protobuf.MessageOrBuilder {
 
   /**
-   * <code>.apache.rocketmq.v2.Resource group = 1;</code>
-   * @return Whether the group field is set.
+   * <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+   * @return Whether the topic field is set.
    */
-  boolean hasGroup();
+  boolean hasTopic();
   /**
-   * <code>.apache.rocketmq.v2.Resource group = 1;</code>
-   * @return The group.
+   * <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+   * @return The topic.
    */
-  apache.rocketmq.v2.Resource getGroup();
+  apache.rocketmq.v2.Resource getTopic();
   /**
-   * <code>.apache.rocketmq.v2.Resource group = 1;</code>
+   * <code>.apache.rocketmq.v2.Resource topic = 1;</code>
    */
-  apache.rocketmq.v2.ResourceOrBuilder getGroupOrBuilder();
+  apache.rocketmq.v2.ResourceOrBuilder getTopicOrBuilder();
 
   /**
    * <code>string message_id = 2;</code>
diff --git a/src/main/java/apache/rocketmq/v2/FilterExpression.java b/src/main/java/apache/rocketmq/v2/FilterExpression.java
index 8ca0580..ddd811b 100644
--- a/src/main/java/apache/rocketmq/v2/FilterExpression.java
+++ b/src/main/java/apache/rocketmq/v2/FilterExpression.java
@@ -168,7 +168,7 @@ private static final long serialVersionUID = 0L;
     if (type_ != apache.rocketmq.v2.FilterType.FILTER_TYPE_UNSPECIFIED.getNumber()) {
       output.writeEnum(1, type_);
     }
-    if (!getExpressionBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(expression_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 2, expression_);
     }
     unknownFields.writeTo(output);
@@ -184,7 +184,7 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeEnumSize(1, type_);
     }
-    if (!getExpressionBytes().isEmpty()) {
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(expression_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, expression_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/src/main/java/apache/rocketmq/v2/ForwardMessageToDeadLetterQueueRequest.java b/src/main/java/apache/rocketmq/v2/ForwardMessageToDeadLetterQueueRequest.java
index 7a53cf5..e78cdb5 100644
--- a/src/main/java/apache/rocketmq/v2/ForwardMessageToDeadLetterQueueRequest.java
+++ b/src/main/java/apache/rocketmq/v2/ForwardMessageToDeadLetterQueueRequest.java
@@ -16,7 +16,6 @@ private static final long serialVersionUID = 0L;
     super(builder);
   }
   private ForwardMessageToDeadLetterQueueRequest() {
-    clientId_ = "";
     receiptHandle_ = "";
     messageId_ = "";
   }
@@ -80,27 +79,21 @@ private static final long serialVersionUID = 0L;
           case 26: {
             java.lang.String s = input.readStringRequireUtf8();
 
-            clientId_ = s;
-            break;
-          }
-          case 34: {
-            java.lang.String s = input.readStringRequireUtf8();
-
             receiptHandle_ = s;
             break;
           }
-          case 42: {
+          case 34: {
             java.lang.String s = input.readStringRequireUtf8();
 
             messageId_ = s;
             break;
           }
-          case 48: {
+          case 40: {
 
             deliveryAttempt_ = input.readInt32();
             break;
           }
-          case 56: {
+          case 48: {
 
             maxDeliveryAttempts_ = input.readInt32();
             break;
@@ -189,48 +182,10 @@ private static final long serialVersionUID = 0L;
     return getTopic();
   }
 
-  public static final int CLIENT_ID_FIELD_NUMBER = 3;
-  private volatile java.lang.Object clientId_;
-  /**
-   * <code>string client_id = 3;</code>
-   * @return The clientId.
-   */
-  @java.lang.Override
-  public java.lang.String getClientId() {
-    java.lang.Object ref = clientId_;
-    if (ref instanceof java.lang.String) {
-      return (java.lang.String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      java.lang.String s = bs.toStringUtf8();
-      clientId_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string client_id = 3;</code>
-   * @return The bytes for clientId.
-   */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getClientIdBytes() {
-    java.lang.Object ref = clientId_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      clientId_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
-    }
-  }
-
-  public static final int RECEIPT_HANDLE_FIELD_NUMBER = 4;
+  public static final int RECEIPT_HANDLE_FIELD_NUMBER = 3;
   private volatile java.lang.Object receiptHandle_;
   /**
-   * <code>string receipt_handle = 4;</code>
+   * <code>string receipt_handle = 3;</code>
    * @return The receiptHandle.
    */
   @java.lang.Override
@@ -247,7 +202,7 @@ private static final long serialVersionUID = 0L;
     }
   }
   /**
-   * <code>string receipt_handle = 4;</code>
+   * <code>string receipt_handle = 3;</code>
    * @return The bytes for receiptHandle.
    */
   @java.lang.Override
@@ -265,10 +220,10 @@ private static final long serialVersionUID = 0L;
     }
   }
 
-  public static final int MESSAGE_ID_FIELD_NUMBER = 5;
+  public static final int MESSAGE_ID_FIELD_NUMBER = 4;
   private volatile java.lang.Object messageId_;
   /**
-   * <code>string message_id = 5;</code>
+   * <code>string message_id = 4;</code>
    * @return The messageId.
    */
   @java.lang.Override
@@ -285,7 +240,7 @@ private static final long serialVersionUID = 0L;
     }
   }
   /**
-   * <code>string message_id = 5;</code>
+   * <code>string message_id = 4;</code>
    * @return The bytes for messageId.
    */
   @java.lang.Override
@@ -303,10 +258,10 @@ private static final long serialVersionUID = 0L;
     }
   }
 
-  public static final int DELIVERY_ATTEMPT_FIELD_NUMBER = 6;
+  public static final int DELIVERY_ATTEMPT_FIELD_NUMBER = 5;
   private int deliveryAttempt_;
   /**
-   * <code>int32 delivery_attempt = 6;</code>
+   * <code>int32 delivery_attempt = 5;</code>
    * @return The deliveryAttempt.
    */
   @java.lang.Override
@@ -314,10 +269,10 @@ private static final long serialVersionUID = 0L;
     return deliveryAttempt_;
   }
 
-  public static final int MAX_DELIVERY_ATTEMPTS_FIELD_NUMBER = 7;
+  public static final int MAX_DELIVERY_ATTEMPTS_FIELD_NUMBER = 6;
   private int maxDeliveryAttempts_;
   /**
-   * <code>int32 max_delivery_attempts = 7;</code>
+   * <code>int32 max_delivery_attempts = 6;</code>
    * @return The maxDeliveryAttempts.
    */
   @java.lang.Override
@@ -345,20 +300,17 @@ private static final long serialVersionUID = 0L;
     if (topic_ != null) {
       output.writeMessage(2, getTopic());
     }
-    if (!getClientIdBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 3, clientId_);
-    }
-    if (!getReceiptHandleBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 4, receiptHandle_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 3, receiptHandle_);
     }
-    if (!getMessageIdBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 5, messageId_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 4, messageId_);
     }
     if (deliveryAttempt_ != 0) {
-      output.writeInt32(6, deliveryAttempt_);
+      output.writeInt32(5, deliveryAttempt_);
     }
     if (maxDeliveryAttempts_ != 0) {
-      output.writeInt32(7, maxDeliveryAttempts_);
+      output.writeInt32(6, maxDeliveryAttempts_);
     }
     unknownFields.writeTo(output);
   }
@@ -377,22 +329,19 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(2, getTopic());
     }
-    if (!getClientIdBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, clientId_);
-    }
-    if (!getReceiptHandleBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, receiptHandle_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, receiptHandle_);
     }
-    if (!getMessageIdBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, messageId_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, messageId_);
     }
     if (deliveryAttempt_ != 0) {
       size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(6, deliveryAttempt_);
+        .computeInt32Size(5, deliveryAttempt_);
     }
     if (maxDeliveryAttempts_ != 0) {
       size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(7, maxDeliveryAttempts_);
+        .computeInt32Size(6, maxDeliveryAttempts_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -419,8 +368,6 @@ private static final long serialVersionUID = 0L;
       if (!getTopic()
           .equals(other.getTopic())) return false;
     }
-    if (!getClientId()
-        .equals(other.getClientId())) return false;
     if (!getReceiptHandle()
         .equals(other.getReceiptHandle())) return false;
     if (!getMessageId()
@@ -448,8 +395,6 @@ private static final long serialVersionUID = 0L;
       hash = (37 * hash) + TOPIC_FIELD_NUMBER;
       hash = (53 * hash) + getTopic().hashCode();
     }
-    hash = (37 * hash) + CLIENT_ID_FIELD_NUMBER;
-    hash = (53 * hash) + getClientId().hashCode();
     hash = (37 * hash) + RECEIPT_HANDLE_FIELD_NUMBER;
     hash = (53 * hash) + getReceiptHandle().hashCode();
     hash = (37 * hash) + MESSAGE_ID_FIELD_NUMBER;
@@ -603,8 +548,6 @@ private static final long serialVersionUID = 0L;
         topic_ = null;
         topicBuilder_ = null;
       }
-      clientId_ = "";
-
       receiptHandle_ = "";
 
       messageId_ = "";
@@ -649,7 +592,6 @@ private static final long serialVersionUID = 0L;
       } else {
         result.topic_ = topicBuilder_.build();
       }
-      result.clientId_ = clientId_;
       result.receiptHandle_ = receiptHandle_;
       result.messageId_ = messageId_;
       result.deliveryAttempt_ = deliveryAttempt_;
@@ -708,10 +650,6 @@ private static final long serialVersionUID = 0L;
       if (other.hasTopic()) {
         mergeTopic(other.getTopic());
       }
-      if (!other.getClientId().isEmpty()) {
-        clientId_ = other.clientId_;
-        onChanged();
-      }
       if (!other.getReceiptHandle().isEmpty()) {
         receiptHandle_ = other.receiptHandle_;
         onChanged();
@@ -993,85 +931,9 @@ private static final long serialVersionUID = 0L;
       return topicBuilder_;
     }
 
-    private java.lang.Object clientId_ = "";
-    /**
-     * <code>string client_id = 3;</code>
-     * @return The clientId.
-     */
-    public java.lang.String getClientId() {
-      java.lang.Object ref = clientId_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        clientId_ = s;
-        return s;
-      } else {
-        return (java.lang.String) ref;
-      }
-    }
-    /**
-     * <code>string client_id = 3;</code>
-     * @return The bytes for clientId.
-     */
-    public com.google.protobuf.ByteString
-        getClientIdBytes() {
-      java.lang.Object ref = clientId_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        clientId_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-    /**
-     * <code>string client_id = 3;</code>
-     * @param value The clientId to set.
-     * @return This builder for chaining.
-     */
-    public Builder setClientId(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      clientId_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string client_id = 3;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearClientId() {
-      
-      clientId_ = getDefaultInstance().getClientId();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string client_id = 3;</code>
-     * @param value The bytes for clientId to set.
-     * @return This builder for chaining.
-     */
-    public Builder setClientIdBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      clientId_ = value;
-      onChanged();
-      return this;
-    }
-
     private java.lang.Object receiptHandle_ = "";
     /**
-     * <code>string receipt_handle = 4;</code>
+     * <code>string receipt_handle = 3;</code>
      * @return The receiptHandle.
      */
     public java.lang.String getReceiptHandle() {
@@ -1087,7 +949,7 @@ private static final long serialVersionUID = 0L;
       }
     }
     /**
-     * <code>string receipt_handle = 4;</code>
+     * <code>string receipt_handle = 3;</code>
      * @return The bytes for receiptHandle.
      */
     public com.google.protobuf.ByteString
@@ -1104,7 +966,7 @@ private static final long serialVersionUID = 0L;
       }
     }
     /**
-     * <code>string receipt_handle = 4;</code>
+     * <code>string receipt_handle = 3;</code>
      * @param value The receiptHandle to set.
      * @return This builder for chaining.
      */
@@ -1119,7 +981,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>string receipt_handle = 4;</code>
+     * <code>string receipt_handle = 3;</code>
      * @return This builder for chaining.
      */
     public Builder clearReceiptHandle() {
@@ -1129,7 +991,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>string receipt_handle = 4;</code>
+     * <code>string receipt_handle = 3;</code>
      * @param value The bytes for receiptHandle to set.
      * @return This builder for chaining.
      */
@@ -1147,7 +1009,7 @@ private static final long serialVersionUID = 0L;
 
     private java.lang.Object messageId_ = "";
     /**
-     * <code>string message_id = 5;</code>
+     * <code>string message_id = 4;</code>
      * @return The messageId.
      */
     public java.lang.String getMessageId() {
@@ -1163,7 +1025,7 @@ private static final long serialVersionUID = 0L;
       }
     }
     /**
-     * <code>string message_id = 5;</code>
+     * <code>string message_id = 4;</code>
      * @return The bytes for messageId.
      */
     public com.google.protobuf.ByteString
@@ -1180,7 +1042,7 @@ private static final long serialVersionUID = 0L;
       }
     }
     /**
-     * <code>string message_id = 5;</code>
+     * <code>string message_id = 4;</code>
      * @param value The messageId to set.
      * @return This builder for chaining.
      */
@@ -1195,7 +1057,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>string message_id = 5;</code>
+     * <code>string message_id = 4;</code>
      * @return This builder for chaining.
      */
     public Builder clearMessageId() {
@@ -1205,7 +1067,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>string message_id = 5;</code>
+     * <code>string message_id = 4;</code>
      * @param value The bytes for messageId to set.
      * @return This builder for chaining.
      */
@@ -1223,7 +1085,7 @@ private static final long serialVersionUID = 0L;
 
     private int deliveryAttempt_ ;
     /**
-     * <code>int32 delivery_attempt = 6;</code>
+     * <code>int32 delivery_attempt = 5;</code>
      * @return The deliveryAttempt.
      */
     @java.lang.Override
@@ -1231,7 +1093,7 @@ private static final long serialVersionUID = 0L;
       return deliveryAttempt_;
     }
     /**
-     * <code>int32 delivery_attempt = 6;</code>
+     * <code>int32 delivery_attempt = 5;</code>
      * @param value The deliveryAttempt to set.
      * @return This builder for chaining.
      */
@@ -1242,7 +1104,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>int32 delivery_attempt = 6;</code>
+     * <code>int32 delivery_attempt = 5;</code>
      * @return This builder for chaining.
      */
     public Builder clearDeliveryAttempt() {
@@ -1254,7 +1116,7 @@ private static final long serialVersionUID = 0L;
 
     private int maxDeliveryAttempts_ ;
     /**
-     * <code>int32 max_delivery_attempts = 7;</code>
+     * <code>int32 max_delivery_attempts = 6;</code>
      * @return The maxDeliveryAttempts.
      */
     @java.lang.Override
@@ -1262,7 +1124,7 @@ private static final long serialVersionUID = 0L;
       return maxDeliveryAttempts_;
     }
     /**
-     * <code>int32 max_delivery_attempts = 7;</code>
+     * <code>int32 max_delivery_attempts = 6;</code>
      * @param value The maxDeliveryAttempts to set.
      * @return This builder for chaining.
      */
@@ -1273,7 +1135,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>int32 max_delivery_attempts = 7;</code>
+     * <code>int32 max_delivery_attempts = 6;</code>
      * @return This builder for chaining.
      */
     public Builder clearMaxDeliveryAttempts() {
diff --git a/src/main/java/apache/rocketmq/v2/ForwardMessageToDeadLetterQueueRequestOrBuilder.java b/src/main/java/apache/rocketmq/v2/ForwardMessageToDeadLetterQueueRequestOrBuilder.java
index f219d0d..fe4efe8 100644
--- a/src/main/java/apache/rocketmq/v2/ForwardMessageToDeadLetterQueueRequestOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v2/ForwardMessageToDeadLetterQueueRequestOrBuilder.java
@@ -38,49 +38,37 @@ public interface ForwardMessageToDeadLetterQueueRequestOrBuilder extends
   apache.rocketmq.v2.ResourceOrBuilder getTopicOrBuilder();
 
   /**
-   * <code>string client_id = 3;</code>
-   * @return The clientId.
-   */
-  java.lang.String getClientId();
-  /**
-   * <code>string client_id = 3;</code>
-   * @return The bytes for clientId.
-   */
-  com.google.protobuf.ByteString
-      getClientIdBytes();
-
-  /**
-   * <code>string receipt_handle = 4;</code>
+   * <code>string receipt_handle = 3;</code>
    * @return The receiptHandle.
    */
   java.lang.String getReceiptHandle();
   /**
-   * <code>string receipt_handle = 4;</code>
+   * <code>string receipt_handle = 3;</code>
    * @return The bytes for receiptHandle.
    */
   com.google.protobuf.ByteString
       getReceiptHandleBytes();
 
   /**
-   * <code>string message_id = 5;</code>
+   * <code>string message_id = 4;</code>
    * @return The messageId.
    */
   java.lang.String getMessageId();
   /**
-   * <code>string message_id = 5;</code>
+   * <code>string message_id = 4;</code>
    * @return The bytes for messageId.
    */
   com.google.protobuf.ByteString
       getMessageIdBytes();
 
   /**
-   * <code>int32 delivery_attempt = 6;</code>
+   * <code>int32 delivery_attempt = 5;</code>
    * @return The deliveryAttempt.
    */
   int getDeliveryAttempt();
 
   /**
-   * <code>int32 max_delivery_attempts = 7;</code>
+   * <code>int32 max_delivery_attempts = 6;</code>
    * @return The maxDeliveryAttempts.
    */
   int getMaxDeliveryAttempts();
diff --git a/src/main/java/apache/rocketmq/v2/HeartbeatRequest.java b/src/main/java/apache/rocketmq/v2/HeartbeatRequest.java
index da5eb1e..b1c80de 100644
--- a/src/main/java/apache/rocketmq/v2/HeartbeatRequest.java
+++ b/src/main/java/apache/rocketmq/v2/HeartbeatRequest.java
@@ -16,7 +16,6 @@ private static final long serialVersionUID = 0L;
     super(builder);
   }
   private HeartbeatRequest() {
-    clientId_ = "";
   }
 
   @java.lang.Override
@@ -39,6 +38,7 @@ private static final long serialVersionUID = 0L;
     if (extensionRegistry == null) {
       throw new java.lang.NullPointerException();
     }
+    int mutable_bitField0_ = 0;
     com.google.protobuf.UnknownFieldSet.Builder unknownFields =
         com.google.protobuf.UnknownFieldSet.newBuilder();
     try {
@@ -50,14 +50,8 @@ private static final long serialVersionUID = 0L;
             done = true;
             break;
           case 10: {
-            java.lang.String s = input.readStringRequireUtf8();
-
-            clientId_ = s;
-            break;
-          }
-          case 18: {
             apache.rocketmq.v2.Resource.Builder subBuilder = null;
-            if (group_ != null) {
+            if (((bitField0_ & 0x00000001) != 0)) {
               subBuilder = group_.toBuilder();
             }
             group_ = input.readMessage(apache.rocketmq.v2.Resource.parser(), extensionRegistry);
@@ -65,7 +59,7 @@ private static final long serialVersionUID = 0L;
               subBuilder.mergeFrom(group_);
               group_ = subBuilder.buildPartial();
             }
-
+            bitField0_ |= 0x00000001;
             break;
           }
           default: {
@@ -100,56 +94,19 @@ private static final long serialVersionUID = 0L;
             apache.rocketmq.v2.HeartbeatRequest.class, apache.rocketmq.v2.HeartbeatRequest.Builder.class);
   }
 
-  public static final int CLIENT_ID_FIELD_NUMBER = 1;
-  private volatile java.lang.Object clientId_;
-  /**
-   * <code>string client_id = 1;</code>
-   * @return The clientId.
-   */
-  @java.lang.Override
-  public java.lang.String getClientId() {
-    java.lang.Object ref = clientId_;
-    if (ref instanceof java.lang.String) {
-      return (java.lang.String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      java.lang.String s = bs.toStringUtf8();
-      clientId_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string client_id = 1;</code>
-   * @return The bytes for clientId.
-   */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getClientIdBytes() {
-    java.lang.Object ref = clientId_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      clientId_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
-    }
-  }
-
-  public static final int GROUP_FIELD_NUMBER = 2;
+  private int bitField0_;
+  public static final int GROUP_FIELD_NUMBER = 1;
   private apache.rocketmq.v2.Resource group_;
   /**
-   * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+   * <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
    * @return Whether the group field is set.
    */
   @java.lang.Override
   public boolean hasGroup() {
-    return group_ != null;
+    return ((bitField0_ & 0x00000001) != 0);
   }
   /**
-   * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+   * <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
    * @return The group.
    */
   @java.lang.Override
@@ -157,11 +114,11 @@ private static final long serialVersionUID = 0L;
     return group_ == null ? apache.rocketmq.v2.Resource.getDefaultInstance() : group_;
   }
   /**
-   * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+   * <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
    */
   @java.lang.Override
   public apache.rocketmq.v2.ResourceOrBuilder getGroupOrBuilder() {
-    return getGroup();
+    return group_ == null ? apache.rocketmq.v2.Resource.getDefaultInstance() : group_;
   }
 
   private byte memoizedIsInitialized = -1;
@@ -178,11 +135,8 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!getClientIdBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, clientId_);
-    }
-    if (group_ != null) {
-      output.writeMessage(2, getGroup());
+    if (((bitField0_ & 0x00000001) != 0)) {
+      output.writeMessage(1, getGroup());
     }
     unknownFields.writeTo(output);
   }
@@ -193,12 +147,9 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (!getClientIdBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, clientId_);
-    }
-    if (group_ != null) {
+    if (((bitField0_ & 0x00000001) != 0)) {
       size += com.google.protobuf.CodedOutputStream
-        .computeMessageSize(2, getGroup());
+        .computeMessageSize(1, getGroup());
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -215,8 +166,6 @@ private static final long serialVersionUID = 0L;
     }
     apache.rocketmq.v2.HeartbeatRequest other = (apache.rocketmq.v2.HeartbeatRequest) obj;
 
-    if (!getClientId()
-        .equals(other.getClientId())) return false;
     if (hasGroup() != other.hasGroup()) return false;
     if (hasGroup()) {
       if (!getGroup()
@@ -233,8 +182,6 @@ private static final long serialVersionUID = 0L;
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + CLIENT_ID_FIELD_NUMBER;
-    hash = (53 * hash) + getClientId().hashCode();
     if (hasGroup()) {
       hash = (37 * hash) + GROUP_FIELD_NUMBER;
       hash = (53 * hash) + getGroup().hashCode();
@@ -367,19 +314,18 @@ private static final long serialVersionUID = 0L;
     private void maybeForceBuilderInitialization() {
       if (com.google.protobuf.GeneratedMessageV3
               .alwaysUseFieldBuilders) {
+        getGroupFieldBuilder();
       }
     }
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      clientId_ = "";
-
       if (groupBuilder_ == null) {
         group_ = null;
       } else {
-        group_ = null;
-        groupBuilder_ = null;
+        groupBuilder_.clear();
       }
+      bitField0_ = (bitField0_ & ~0x00000001);
       return this;
     }
 
@@ -406,12 +352,17 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public apache.rocketmq.v2.HeartbeatRequest buildPartial() {
       apache.rocketmq.v2.HeartbeatRequest result = new apache.rocketmq.v2.HeartbeatRequest(this);
-      result.clientId_ = clientId_;
-      if (groupBuilder_ == null) {
-        result.group_ = group_;
-      } else {
-        result.group_ = groupBuilder_.build();
+      int from_bitField0_ = bitField0_;
+      int to_bitField0_ = 0;
+      if (((from_bitField0_ & 0x00000001) != 0)) {
+        if (groupBuilder_ == null) {
+          result.group_ = group_;
+        } else {
+          result.group_ = groupBuilder_.build();
+        }
+        to_bitField0_ |= 0x00000001;
       }
+      result.bitField0_ = to_bitField0_;
       onBuilt();
       return result;
     }
@@ -460,10 +411,6 @@ private static final long serialVersionUID = 0L;
 
     public Builder mergeFrom(apache.rocketmq.v2.HeartbeatRequest other) {
       if (other == apache.rocketmq.v2.HeartbeatRequest.getDefaultInstance()) return this;
-      if (!other.getClientId().isEmpty()) {
-        clientId_ = other.clientId_;
-        onChanged();
-      }
       if (other.hasGroup()) {
         mergeGroup(other.getGroup());
       }
@@ -495,95 +442,20 @@ private static final long serialVersionUID = 0L;
       }
       return this;
     }
-
-    private java.lang.Object clientId_ = "";
-    /**
-     * <code>string client_id = 1;</code>
-     * @return The clientId.
-     */
-    public java.lang.String getClientId() {
-      java.lang.Object ref = clientId_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        clientId_ = s;
-        return s;
-      } else {
-        return (java.lang.String) ref;
-      }
-    }
-    /**
-     * <code>string client_id = 1;</code>
-     * @return The bytes for clientId.
-     */
-    public com.google.protobuf.ByteString
-        getClientIdBytes() {
-      java.lang.Object ref = clientId_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        clientId_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-    /**
-     * <code>string client_id = 1;</code>
-     * @param value The clientId to set.
-     * @return This builder for chaining.
-     */
-    public Builder setClientId(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      clientId_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string client_id = 1;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearClientId() {
-      
-      clientId_ = getDefaultInstance().getClientId();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string client_id = 1;</code>
-     * @param value The bytes for clientId to set.
-     * @return This builder for chaining.
-     */
-    public Builder setClientIdBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      clientId_ = value;
-      onChanged();
-      return this;
-    }
+    private int bitField0_;
 
     private apache.rocketmq.v2.Resource group_;
     private com.google.protobuf.SingleFieldBuilderV3<
         apache.rocketmq.v2.Resource, apache.rocketmq.v2.Resource.Builder, apache.rocketmq.v2.ResourceOrBuilder> groupBuilder_;
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+     * <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
      * @return Whether the group field is set.
      */
     public boolean hasGroup() {
-      return groupBuilder_ != null || group_ != null;
+      return ((bitField0_ & 0x00000001) != 0);
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+     * <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
      * @return The group.
      */
     public apache.rocketmq.v2.Resource getGroup() {
@@ -594,7 +466,7 @@ private static final long serialVersionUID = 0L;
       }
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+     * <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
      */
     public Builder setGroup(apache.rocketmq.v2.Resource value) {
       if (groupBuilder_ == null) {
@@ -606,11 +478,11 @@ private static final long serialVersionUID = 0L;
       } else {
         groupBuilder_.setMessage(value);
       }
-
+      bitField0_ |= 0x00000001;
       return this;
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+     * <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
      */
     public Builder setGroup(
         apache.rocketmq.v2.Resource.Builder builderForValue) {
@@ -620,15 +492,17 @@ private static final long serialVersionUID = 0L;
       } else {
         groupBuilder_.setMessage(builderForValue.build());
       }
-
+      bitField0_ |= 0x00000001;
       return this;
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+     * <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
      */
     public Builder mergeGroup(apache.rocketmq.v2.Resource value) {
       if (groupBuilder_ == null) {
-        if (group_ != null) {
+        if (((bitField0_ & 0x00000001) != 0) &&
+            group_ != null &&
+            group_ != apache.rocketmq.v2.Resource.getDefaultInstance()) {
           group_ =
             apache.rocketmq.v2.Resource.newBuilder(group_).mergeFrom(value).buildPartial();
         } else {
@@ -638,33 +512,32 @@ private static final long serialVersionUID = 0L;
       } else {
         groupBuilder_.mergeFrom(value);
       }
-
+      bitField0_ |= 0x00000001;
       return this;
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+     * <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
      */
     public Builder clearGroup() {
       if (groupBuilder_ == null) {
         group_ = null;
         onChanged();
       } else {
-        group_ = null;
-        groupBuilder_ = null;
+        groupBuilder_.clear();
       }
-
+      bitField0_ = (bitField0_ & ~0x00000001);
       return this;
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+     * <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
      */
     public apache.rocketmq.v2.Resource.Builder getGroupBuilder() {
-      
+      bitField0_ |= 0x00000001;
       onChanged();
       return getGroupFieldBuilder().getBuilder();
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+     * <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
      */
     public apache.rocketmq.v2.ResourceOrBuilder getGroupOrBuilder() {
       if (groupBuilder_ != null) {
@@ -675,7 +548,7 @@ private static final long serialVersionUID = 0L;
       }
     }
     /**
-     * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+     * <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
      */
     private com.google.protobuf.SingleFieldBuilderV3<
         apache.rocketmq.v2.Resource, apache.rocketmq.v2.Resource.Builder, apache.rocketmq.v2.ResourceOrBuilder> 
diff --git a/src/main/java/apache/rocketmq/v2/HeartbeatRequestOrBuilder.java b/src/main/java/apache/rocketmq/v2/HeartbeatRequestOrBuilder.java
index d57eaa4..35d7c0b 100644
--- a/src/main/java/apache/rocketmq/v2/HeartbeatRequestOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v2/HeartbeatRequestOrBuilder.java
@@ -8,29 +8,17 @@ public interface HeartbeatRequestOrBuilder extends
     com.google.protobuf.MessageOrBuilder {
 
   /**
-   * <code>string client_id = 1;</code>
-   * @return The clientId.
-   */
-  java.lang.String getClientId();
-  /**
-   * <code>string client_id = 1;</code>
-   * @return The bytes for clientId.
-   */
-  com.google.protobuf.ByteString
-      getClientIdBytes();
-
-  /**
-   * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+   * <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
    * @return Whether the group field is set.
    */
   boolean hasGroup();
   /**
-   * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+   * <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
    * @return The group.
    */
   apache.rocketmq.v2.Resource getGroup();
   /**
-   * <code>.apache.rocketmq.v2.Resource group = 2;</code>
+   * <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
    */
   apache.rocketmq.v2.ResourceOrBuilder getGroupOrBuilder();
 }
diff --git a/src/main/java/apache/rocketmq/v2/MQDomain.java b/src/main/java/apache/rocketmq/v2/MQDomain.java
index 31f2665..6f939ea 100644
--- a/src/main/java/apache/rocketmq/v2/MQDomain.java
+++ b/src/main/java/apache/rocketmq/v2/MQDomain.java
@@ -35,25 +35,15 @@ public final class MQDomain {
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_apache_rocketmq_v2_Resource_fieldAccessorTable;
   static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_apache_rocketmq_v2_Trace_descriptor;
+    internal_static_apache_rocketmq_v2_Tracing_descriptor;
   static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_apache_rocketmq_v2_Trace_fieldAccessorTable;
+      internal_static_apache_rocketmq_v2_Tracing_fieldAccessorTable;
   static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_apache_rocketmq_v2_Authentication_descriptor;
+    internal_static_apache_rocketmq_v2_Publishing_descriptor;
   static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_apache_rocketmq_v2_Authentication_fieldAccessorTable;
-  static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_apache_rocketmq_v2_Timeout_descriptor;
-  static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_apache_rocketmq_v2_Timeout_fieldAccessorTable;
-  static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_apache_rocketmq_v2_Publish_descriptor;
-  static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_apache_rocketmq_v2_Publish_fieldAccessorTable;
+      internal_static_apache_rocketmq_v2_Publishing_fieldAccessorTable;
   static final com.google.protobuf.Descriptors.Descriptor
     internal_static_apache_rocketmq_v2_CacheLimits_descriptor;
   static final 
@@ -119,6 +109,11 @@ public final class MQDomain {
   static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_apache_rocketmq_v2_SendReceipt_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_apache_rocketmq_v2_Status_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_apache_rocketmq_v2_Status_fieldAccessorTable;
 
   public static com.google.protobuf.Descriptors.FileDescriptor
       getDescriptor() {
@@ -138,106 +133,125 @@ public final class MQDomain {
       "x_attempts\030\001 \001(\005\022\027\n\017initial_backoff\030\002 \001(" +
       "\002\022\023\n\013max_backoff\030\003 \001(\002\022\032\n\022backoff_multip" +
       "lier\030\004 \001(\002\"4\n\010Resource\022\032\n\022resource_names" +
-      "pace\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\"P\n\005Trace\022\n\n\002on\030" +
-      "\001 \001(\010\022;\n\024service_access_point\030\002 \001(\0132\035.ap" +
-      "ache.rocketmq.v2.Endpoints\"\\\n\016Authentica" +
-      "tion\0228\n\006method\030\001 \001(\0162(.apache.rocketmq.v" +
-      "2.AuthenticationMethod\022\020\n\010identity\030\002 \001(\t" +
-      "\"\215\001\n\007Timeout\022*\n\007connect\030\001 \001(\0132\031.google.p" +
-      "rotobuf.Duration\022*\n\007request\030\002 \001(\0132\031.goog" +
-      "le.protobuf.Duration\022*\n\007polling\030\003 \001(\0132\031." +
-      "google.protobuf.Duration\"\346\001\n\007Publish\022,\n\006" +
-      "topics\030\001 \003(\0132\034.apache.rocketmq.v2.Resour" +
-      "ce\022?\n\034transaction_orphan_threshold\030\002 \001(\013" +
-      "2\031.google.protobuf.Duration\0225\n\014retry_pol" +
-      "icy\030\003 \001(\0132\037.apache.rocketmq.v2.RetryPoli" +
-      "cy\022\032\n\022compress_threshold\030\004 \001(\005\022\031\n\021max_me" +
-      "ssage_bytes\030\005 \001(\005\"+\n\013CacheLimits\022\r\n\005coun" +
-      "t\030\001 \001(\005\022\r\n\005bytes\030\002 \001(\003\"\312\004\n\014Subscription\022" +
-      "+\n\005group\030\001 \001(\0132\034.apache.rocketmq.v2.Reso" +
-      "urce\022<\n\rsubscriptions\030\002 \003(\0132%.apache.roc" +
-      "ketmq.v2.SubscriptionEntry\022@\n\022dead_lette" +
-      "r_policy\030\003 \001(\0132$.apache.rocketmq.v2.Dead" +
-      "LetterPolicy\022<\n\014consume_type\030\004 \001(\0162&.apa" +
-      "che.rocketmq.v2.ConsumeMessageType\022\014\n\004fi" +
-      "fo\030\005 \001(\010\0225\n\014retry_policy\030\006 \001(\0132\037.apache." +
-      "rocketmq.v2.RetryPolicy\022?\n\026consume_backo" +
-      "ff_policy\030\007 \001(\0132\037.apache.rocketmq.v2.Ret" +
-      "ryPolicy\022\036\n\026max_receive_batch_size\030\010 \001(\005" +
-      "\022\031\n\021messages_per_task\030\t \001(\005\0225\n\014cache_lim" +
-      "its\030\n \001(\0132\037.apache.rocketmq.v2.CacheLimi" +
-      "ts\022\034\n\024consume_thread_count\030\013 \001(\005\0229\n\026max_" +
-      "invisible_duration\030\014 \001(\0132\031.google.protob" +
-      "uf.Duration\"z\n\021SubscriptionEntry\022+\n\005topi" +
-      "c\030\001 \001(\0132\034.apache.rocketmq.v2.Resource\0228\n" +
-      "\nexpression\030\002 \001(\0132$.apache.rocketmq.v2.F" +
-      "ilterExpression\"%\n\007Address\022\014\n\004host\030\001 \001(\t" +
-      "\022\014\n\004port\030\002 \001(\005\"n\n\tEndpoints\0221\n\006scheme\030\001 " +
-      "\001(\0162!.apache.rocketmq.v2.AddressScheme\022." +
-      "\n\taddresses\030\002 \003(\0132\033.apache.rocketmq.v2.A" +
-      "ddress\"T\n\006Broker\022\014\n\004name\030\001 \001(\t\022\n\n\002id\030\002 \001" +
-      "(\005\0220\n\tendpoints\030\003 \001(\0132\035.apache.rocketmq." +
-      "v2.Endpoints\"\346\001\n\014MessageQueue\022+\n\005topic\030\001" +
-      " \001(\0132\034.apache.rocketmq.v2.Resource\022\n\n\002id" +
-      "\030\002 \001(\005\0222\n\npermission\030\003 \001(\0162\036.apache.rock" +
-      "etmq.v2.Permission\022*\n\006broker\030\004 \001(\0132\032.apa" +
-      "che.rocketmq.v2.Broker\022=\n\024accept_message" +
-      "_types\030\005 \003(\0162\037.apache.rocketmq.v2.Messag" +
-      "eType\"H\n\006Digest\022,\n\004type\030\001 \001(\0162\036.apache.r" +
-      "ocketmq.v2.DigestType\022\020\n\010checksum\030\002 \001(\t\"" +
-      "\260\005\n\020SystemProperties\022\013\n\003tag\030\001 \001(\t\022\014\n\004key" +
-      "s\030\002 \003(\t\022\022\n\nmessage_id\030\003 \001(\t\022/\n\013body_dige" +
-      "st\030\004 \001(\0132\032.apache.rocketmq.v2.Digest\0223\n\r" +
-      "body_encoding\030\005 \001(\0162\034.apache.rocketmq.v2" +
-      ".Encoding\0225\n\014message_type\030\006 \001(\0162\037.apache" +
-      ".rocketmq.v2.MessageType\0222\n\016born_timesta" +
-      "mp\030\007 \001(\0132\032.google.protobuf.Timestamp\022\021\n\t" +
-      "born_host\030\010 \001(\t\0223\n\017store_timestamp\030\t \001(\013" +
-      "2\032.google.protobuf.Timestamp\022\022\n\nstore_ho" +
-      "st\030\n \001(\t\0226\n\022delivery_timestamp\030\013 \001(\0132\032.g" +
-      "oogle.protobuf.Timestamp\022\026\n\016receipt_hand" +
-      "le\030\014 \001(\t\022\020\n\010queue_id\030\r \001(\005\022\024\n\014queue_offs" +
-      "et\030\016 \001(\003\0225\n\022invisible_duration\030\017 \001(\0132\031.g" +
-      "oogle.protobuf.Duration\022\030\n\020delivery_atte" +
-      "mpt\030\020 \001(\005\022\025\n\rmessage_group\030\021 \001(\t\022\025\n\rtrac" +
-      "e_context\030\022 \001(\t\022I\n&orphaned_transaction_" +
-      "recovery_duration\030\023 \001(\0132\031.google.protobu" +
-      "f.Duration\"\206\002\n\007Message\022+\n\005topic\030\001 \001(\0132\034." +
-      "apache.rocketmq.v2.Resource\022H\n\017user_prop" +
-      "erties\030\002 \003(\0132/.apache.rocketmq.v2.Messag" +
-      "e.UserPropertiesEntry\022?\n\021system_properti" +
-      "es\030\003 \001(\0132$.apache.rocketmq.v2.SystemProp" +
-      "erties\022\014\n\004body\030\004 \001(\014\0325\n\023UserPropertiesEn" +
-      "try\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"E\n\nA" +
-      "ssignment\0227\n\rmessage_queue\030\001 \001(\0132 .apach" +
-      "e.rocketmq.v2.MessageQueue\"9\n\013SendReceip" +
-      "t\022\022\n\nmessage_id\030\001 \001(\t\022\026\n\016transaction_id\030" +
-      "\002 \001(\t*Y\n\025TransactionResolution\022&\n\"TRANSA" +
-      "CTION_RESOLUTION_UNSPECIFIED\020\000\022\n\n\006COMMIT" +
-      "\020\001\022\014\n\010ROLLBACK\020\002*W\n\021TransactionSource\022\026\n" +
-      "\022SOURCE_UNSPECIFIED\020\000\022\021\n\rSOURCE_CLIENT\020\001" +
-      "\022\027\n\023SOURCE_SERVER_CHECK\020\002*W\n\nPermission\022" +
-      "\032\n\026PERMISSION_UNSPECIFIED\020\000\022\010\n\004NONE\020\001\022\010\n" +
-      "\004READ\020\002\022\t\n\005WRITE\020\003\022\016\n\nREAD_WRITE\020\004*;\n\nFi" +
-      "lterType\022\033\n\027FILTER_TYPE_UNSPECIFIED\020\000\022\007\n" +
-      "\003TAG\020\001\022\007\n\003SQL\020\002*S\n\022ConsumeMessageType\022$\n" +
-      " CONSUME_MESSAGE_TYPE_UNSPECIFIED\020\000\022\n\n\006A" +
-      "CTIVE\020\001\022\013\n\007PASSIVE\020\002*l\n\024AuthenticationMe" +
-      "thod\022%\n!AUTHENTICATION_METHOD_UNSPECIFIE" +
-      "D\020\000\022\010\n\004SASL\020\001\022\016\n\nMUTUAL_TLS\020\002\022\023\n\017HTTP_BA" +
-      "SIC_AUTH\020\003*T\n\rAddressScheme\022\036\n\032ADDRESS_S" +
-      "CHEME_UNSPECIFIED\020\000\022\010\n\004IPv4\020\001\022\010\n\004IPv6\020\002\022" +
-      "\017\n\013DOMAIN_NAME\020\003*]\n\013MessageType\022\034\n\030MESSA" +
-      "GE_TYPE_UNSPECIFIED\020\000\022\n\n\006NORMAL\020\001\022\010\n\004FIF" +
-      "O\020\002\022\t\n\005DELAY\020\003\022\017\n\013TRANSACTION\020\004*G\n\nDiges" +
-      "tType\022\033\n\027DIGEST_TYPE_UNSPECIFIED\020\000\022\t\n\005CR" +
-      "C32\020\001\022\007\n\003MD5\020\002\022\010\n\004SHA1\020\003*<\n\010Encoding\022\030\n\024" +
-      "ENCODING_UNSPECIFIED\020\000\022\014\n\010IDENTITY\020\001\022\010\n\004" +
-      "GZIP\020\002*`\n\021QueryOffsetPolicy\022#\n\037QUERY_OFF" +
-      "SET_POLICY_UNSPECIFIED\020\000\022\r\n\tBEGINNING\020\001\022" +
-      "\007\n\003END\020\002\022\016\n\nTIME_POINT\020\003B;\n\022apache.rocke" +
-      "tmq.v2B\010MQDomainP\001\240\001\001\330\001\001\252\002\022Apache.Rocket" +
-      "mq.V2b\006proto3"
+      "pace\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\"p\n\007Tracing\022\n\n\002o" +
+      "n\030\001 \001(\010\022@\n\024service_access_point\030\002 \001(\0132\035." +
+      "apache.rocketmq.v2.EndpointsH\000\210\001\001B\027\n\025_se" +
+      "rvice_access_point\"\250\001\n\nPublishing\022,\n\006top" +
+      "ics\030\001 \003(\0132\034.apache.rocketmq.v2.Resource\022" +
+      "5\n\014retry_policy\030\002 \001(\0132\037.apache.rocketmq." +
+      "v2.RetryPolicy\022\032\n\022compress_threshold\030\003 \001" +
+      "(\005\022\031\n\021max_message_bytes\030\004 \001(\005\"+\n\013CacheLi" +
+      "mits\022\r\n\005count\030\001 \001(\005\022\r\n\005bytes\030\002 \001(\003\"\224\003\n\014S" +
+      "ubscription\022+\n\005group\030\001 \001(\0132\034.apache.rock" +
+      "etmq.v2.Resource\022<\n\rsubscriptions\030\002 \003(\0132" +
+      "%.apache.rocketmq.v2.SubscriptionEntry\022@" +
+      "\n\022dead_letter_policy\030\003 \001(\0132$.apache.rock" +
+      "etmq.v2.DeadLetterPolicy\022\014\n\004fifo\030\005 \001(\010\022\036" +
+      "\n\026max_receive_batch_size\030\010 \001(\005\022\031\n\021messag" +
+      "es_per_task\030\t \001(\005\0225\n\014cache_limits\030\n \001(\0132" +
+      "\037.apache.rocketmq.v2.CacheLimits\022\034\n\024cons" +
+      "ume_thread_count\030\013 \001(\005\0229\n\026max_invisible_" +
+      "duration\030\014 \001(\0132\031.google.protobuf.Duratio" +
+      "n\"z\n\021SubscriptionEntry\022+\n\005topic\030\001 \001(\0132\034." +
+      "apache.rocketmq.v2.Resource\0228\n\nexpressio" +
+      "n\030\002 \001(\0132$.apache.rocketmq.v2.FilterExpre" +
+      "ssion\"%\n\007Address\022\014\n\004host\030\001 \001(\t\022\014\n\004port\030\002" +
+      " \001(\005\"n\n\tEndpoints\0221\n\006scheme\030\001 \001(\0162!.apac" +
+      "he.rocketmq.v2.AddressScheme\022.\n\taddresse" +
+      "s\030\002 \003(\0132\033.apache.rocketmq.v2.Address\"T\n\006" +
+      "Broker\022\014\n\004name\030\001 \001(\t\022\n\n\002id\030\002 \001(\005\0220\n\tendp" +
+      "oints\030\003 \001(\0132\035.apache.rocketmq.v2.Endpoin" +
+      "ts\"\346\001\n\014MessageQueue\022+\n\005topic\030\001 \001(\0132\034.apa" +
+      "che.rocketmq.v2.Resource\022\n\n\002id\030\002 \001(\005\0222\n\n" +
+      "permission\030\003 \001(\0162\036.apache.rocketmq.v2.Pe" +
+      "rmission\022*\n\006broker\030\004 \001(\0132\032.apache.rocket" +
+      "mq.v2.Broker\022=\n\024accept_message_types\030\005 \003" +
+      "(\0162\037.apache.rocketmq.v2.MessageType\"H\n\006D" +
+      "igest\022,\n\004type\030\001 \001(\0162\036.apache.rocketmq.v2" +
+      ".DigestType\022\020\n\010checksum\030\002 \001(\t\"\264\007\n\020System" +
+      "Properties\022\020\n\003tag\030\001 \001(\tH\000\210\001\001\022\014\n\004keys\030\002 \003" +
+      "(\t\022\022\n\nmessage_id\030\003 \001(\t\022/\n\013body_digest\030\004 " +
+      "\001(\0132\032.apache.rocketmq.v2.Digest\0223\n\rbody_" +
+      "encoding\030\005 \001(\0162\034.apache.rocketmq.v2.Enco" +
+      "ding\0225\n\014message_type\030\006 \001(\0162\037.apache.rock" +
+      "etmq.v2.MessageType\0222\n\016born_timestamp\030\007 " +
+      "\001(\0132\032.google.protobuf.Timestamp\022\021\n\tborn_" +
+      "host\030\010 \001(\t\0228\n\017store_timestamp\030\t \001(\0132\032.go" +
+      "ogle.protobuf.TimestampH\001\210\001\001\022\022\n\nstore_ho" +
+      "st\030\n \001(\t\022;\n\022delivery_timestamp\030\013 \001(\0132\032.g" +
+      "oogle.protobuf.TimestampH\002\210\001\001\022\033\n\016receipt" +
+      "_handle\030\014 \001(\tH\003\210\001\001\022\020\n\010queue_id\030\r \001(\005\022\031\n\014" +
+      "queue_offset\030\016 \001(\003H\004\210\001\001\022:\n\022invisible_dur" +
+      "ation\030\017 \001(\0132\031.google.protobuf.DurationH\005" +
+      "\210\001\001\022\035\n\020delivery_attempt\030\020 \001(\005H\006\210\001\001\022\032\n\rme" +
+      "ssage_group\030\021 \001(\tH\007\210\001\001\022\032\n\rtrace_context\030" +
+      "\022 \001(\tH\010\210\001\001\022N\n&orphaned_transaction_recov" +
+      "ery_duration\030\023 \001(\0132\031.google.protobuf.Dur" +
+      "ationH\t\210\001\001B\006\n\004_tagB\022\n\020_store_timestampB\025" +
+      "\n\023_delivery_timestampB\021\n\017_receipt_handle" +
+      "B\017\n\r_queue_offsetB\025\n\023_invisible_duration" +
+      "B\023\n\021_delivery_attemptB\020\n\016_message_groupB" +
+      "\020\n\016_trace_contextB)\n\'_orphaned_transacti" +
+      "on_recovery_duration\"\206\002\n\007Message\022+\n\005topi" +
+      "c\030\001 \001(\0132\034.apache.rocketmq.v2.Resource\022H\n" +
+      "\017user_properties\030\002 \003(\0132/.apache.rocketmq" +
+      ".v2.Message.UserPropertiesEntry\022?\n\021syste" +
+      "m_properties\030\003 \001(\0132$.apache.rocketmq.v2." +
+      "SystemProperties\022\014\n\004body\030\004 \001(\014\0325\n\023UserPr" +
+      "opertiesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(" +
+      "\t:\0028\001\"E\n\nAssignment\0227\n\rmessage_queue\030\001 \001" +
+      "(\0132 .apache.rocketmq.v2.MessageQueue\"I\n\013" +
+      "SendReceipt\022\022\n\nmessage_id\030\001 \001(\t\022\026\n\016trans" +
+      "action_id\030\002 \001(\t\022\016\n\006offset\030\003 \001(\003\"A\n\006Statu" +
+      "s\022&\n\004code\030\001 \001(\0162\030.apache.rocketmq.v2.Cod" +
+      "e\022\017\n\007message\030\002 \001(\t*Y\n\025TransactionResolut" +
+      "ion\022&\n\"TRANSACTION_RESOLUTION_UNSPECIFIE" +
+      "D\020\000\022\n\n\006COMMIT\020\001\022\014\n\010ROLLBACK\020\002*W\n\021Transac" +
+      "tionSource\022\026\n\022SOURCE_UNSPECIFIED\020\000\022\021\n\rSO" +
+      "URCE_CLIENT\020\001\022\027\n\023SOURCE_SERVER_CHECK\020\002*W" +
+      "\n\nPermission\022\032\n\026PERMISSION_UNSPECIFIED\020\000" +
+      "\022\010\n\004NONE\020\001\022\010\n\004READ\020\002\022\t\n\005WRITE\020\003\022\016\n\nREAD_" +
+      "WRITE\020\004*;\n\nFilterType\022\033\n\027FILTER_TYPE_UNS" +
+      "PECIFIED\020\000\022\007\n\003TAG\020\001\022\007\n\003SQL\020\002*T\n\rAddressS" +
+      "cheme\022\036\n\032ADDRESS_SCHEME_UNSPECIFIED\020\000\022\010\n" +
+      "\004IPv4\020\001\022\010\n\004IPv6\020\002\022\017\n\013DOMAIN_NAME\020\003*]\n\013Me" +
+      "ssageType\022\034\n\030MESSAGE_TYPE_UNSPECIFIED\020\000\022" +
+      "\n\n\006NORMAL\020\001\022\010\n\004FIFO\020\002\022\t\n\005DELAY\020\003\022\017\n\013TRAN" +
+      "SACTION\020\004*G\n\nDigestType\022\033\n\027DIGEST_TYPE_U" +
+      "NSPECIFIED\020\000\022\t\n\005CRC32\020\001\022\007\n\003MD5\020\002\022\010\n\004SHA1" +
+      "\020\003*r\n\nClientType\022\033\n\027CLIENT_TYPE_UNSPECIF" +
+      "IED\020\000\022\014\n\010PRODUCER\020\001\022\021\n\rPUSH_CONSUMER\020\002\022\021" +
+      "\n\rPULL_CONSUMER\020\003\022\023\n\017SIMPLE_CONSUMER\020\004*<" +
+      "\n\010Encoding\022\030\n\024ENCODING_UNSPECIFIED\020\000\022\014\n\010" +
+      "IDENTITY\020\001\022\010\n\004GZIP\020\002*`\n\021QueryOffsetPolic" +
+      "y\022#\n\037QUERY_OFFSET_POLICY_UNSPECIFIED\020\000\022\r" +
+      "\n\tBEGINNING\020\001\022\007\n\003END\020\002\022\016\n\nTIME_POINT\020\003*\272" +
+      "\007\n\004Code\022\006\n\002OK\020\000\022\030\n\024ILLEGAL_ACCESS_POINT\020" +
+      "\001\022\021\n\rILLEGAL_TOPIC\020\002\022\032\n\026ILLEGAL_CONSUMER" +
+      "_GROUP\020\003\022\027\n\023ILLEGAL_MESSAGE_TAG\020\004\022\027\n\023ILL" +
+      "EGAL_MESSAGE_KEY\020\005\022\032\n\026MESSAGE_KEYS_TOO_L" +
+      "ARGE\020\006\022\031\n\025ILLEGAL_MESSAGE_GROUP\020\007\022 \n\034ILL" +
+      "EGAL_MESSAGE_PROPERTY_KEY\020\010\022 \n\034MESSAGE_P" +
+      "ROPERTIES_TOO_LARGE\020\t\022\032\n\026MESSAGE_BODY_TO" +
+      "O_LARGE\020\n\022\016\n\tFORBIDDEN\020\223\003\022\021\n\014UNAUTHORIZE" +
+      "D\020\221\003\022\023\n\017TOPIC_NOT_FOUND\020\r\022\034\n\030CONSUMER_GR" +
+      "OUP_NOT_FOUND\020\016\022\034\n\030VERIFY_MESSAGE_FORBID" +
+      "DEN\020\017\022\035\n\031FAILED_TO_CONSUME_MESSAGE\020\020\022\025\n\021" +
+      "MESSAGE_CORRUPTED\020\021\022\025\n\021TOO_MANY_REQUESTS" +
+      "\020\022\022\032\n\026RECEIPT_HANDLE_EXPIRED\020\023\0220\n,MESSAG" +
+      "E_PROPERTY_DOES_NOT_MATCH_MESSAGE_TYPE\020\024" +
+      "\022\026\n\022ILLEGAL_MESSAGE_ID\020\025\022\032\n\026INVALID_TRAN" +
+      "SACTION_ID\020\026\022\035\n\031ILLEGAL_FILTER_EXPRESSIO" +
+      "N\020\027\022\032\n\026INVALID_RECEIPT_HANDLE\020\030\022\036\n\032MASTE" +
+      "R_PERSISTENCE_TIMEOUT\020\031\022\035\n\031SLAVE_PERSIST" +
+      "ENCE_TIMEOUT\020\032\022\024\n\020HA_NOT_AVAILABLE\020\033\022\027\n\023" +
+      "VERSION_UNSUPPORTED\020\034\022\025\n\021MESSAGE_NOT_FOU" +
+      "ND\020\035\022\032\n\026ILLEGAL_MESSAGE_OFFSET\020\036\022\023\n\017ILLE" +
+      "GAL_MESSAGE\020\037\022\034\n\030UNRECOGNIZED_CLIENT_TYP" +
+      "E\020 \022\032\n\025INTERNAL_SERVER_ERROR\020\364\003\022\024\n\017NOT_I" +
+      "MPLEMENTED\020\365\003\022\024\n\017GATEWAY_TIMEOUT\020\370\003B;\n\022a" +
+      "pache.rocketmq.v2B\010MQDomainP\001\240\001\001\330\001\001\252\002\022Ap" +
+      "ache.Rocketmq.V2b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -269,86 +283,74 @@ public final class MQDomain {
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_Resource_descriptor,
         new java.lang.String[] { "ResourceNamespace", "Name", });
-    internal_static_apache_rocketmq_v2_Trace_descriptor =
+    internal_static_apache_rocketmq_v2_Tracing_descriptor =
       getDescriptor().getMessageTypes().get(4);
-    internal_static_apache_rocketmq_v2_Trace_fieldAccessorTable = new
+    internal_static_apache_rocketmq_v2_Tracing_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_apache_rocketmq_v2_Trace_descriptor,
-        new java.lang.String[] { "On", "ServiceAccessPoint", });
-    internal_static_apache_rocketmq_v2_Authentication_descriptor =
+        internal_static_apache_rocketmq_v2_Tracing_descriptor,
+        new java.lang.String[] { "On", "ServiceAccessPoint", "ServiceAccessPoint", });
+    internal_static_apache_rocketmq_v2_Publishing_descriptor =
       getDescriptor().getMessageTypes().get(5);
-    internal_static_apache_rocketmq_v2_Authentication_fieldAccessorTable = new
+    internal_static_apache_rocketmq_v2_Publishing_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_apache_rocketmq_v2_Authentication_descriptor,
-        new java.lang.String[] { "Method", "Identity", });
-    internal_static_apache_rocketmq_v2_Timeout_descriptor =
-      getDescriptor().getMessageTypes().get(6);
-    internal_static_apache_rocketmq_v2_Timeout_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_apache_rocketmq_v2_Timeout_descriptor,
-        new java.lang.String[] { "Connect", "Request", "Polling", });
-    internal_static_apache_rocketmq_v2_Publish_descriptor =
-      getDescriptor().getMessageTypes().get(7);
-    internal_static_apache_rocketmq_v2_Publish_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_apache_rocketmq_v2_Publish_descriptor,
-        new java.lang.String[] { "Topics", "TransactionOrphanThreshold", "RetryPolicy", "CompressThreshold", "MaxMessageBytes", });
+        internal_static_apache_rocketmq_v2_Publishing_descriptor,
+        new java.lang.String[] { "Topics", "RetryPolicy", "CompressThreshold", "MaxMessageBytes", });
     internal_static_apache_rocketmq_v2_CacheLimits_descriptor =
-      getDescriptor().getMessageTypes().get(8);
+      getDescriptor().getMessageTypes().get(6);
     internal_static_apache_rocketmq_v2_CacheLimits_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_CacheLimits_descriptor,
         new java.lang.String[] { "Count", "Bytes", });
     internal_static_apache_rocketmq_v2_Subscription_descriptor =
-      getDescriptor().getMessageTypes().get(9);
+      getDescriptor().getMessageTypes().get(7);
     internal_static_apache_rocketmq_v2_Subscription_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_Subscription_descriptor,
-        new java.lang.String[] { "Group", "Subscriptions", "DeadLetterPolicy", "ConsumeType", "Fifo", "RetryPolicy", "ConsumeBackoffPolicy", "MaxReceiveBatchSize", "MessagesPerTask", "CacheLimits", "ConsumeThreadCount", "MaxInvisibleDuration", });
+        new java.lang.String[] { "Group", "Subscriptions", "DeadLetterPolicy", "Fifo", "MaxReceiveBatchSize", "MessagesPerTask", "CacheLimits", "ConsumeThreadCount", "MaxInvisibleDuration", });
     internal_static_apache_rocketmq_v2_SubscriptionEntry_descriptor =
-      getDescriptor().getMessageTypes().get(10);
+      getDescriptor().getMessageTypes().get(8);
     internal_static_apache_rocketmq_v2_SubscriptionEntry_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_SubscriptionEntry_descriptor,
         new java.lang.String[] { "Topic", "Expression", });
     internal_static_apache_rocketmq_v2_Address_descriptor =
-      getDescriptor().getMessageTypes().get(11);
+      getDescriptor().getMessageTypes().get(9);
     internal_static_apache_rocketmq_v2_Address_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_Address_descriptor,
         new java.lang.String[] { "Host", "Port", });
     internal_static_apache_rocketmq_v2_Endpoints_descriptor =
-      getDescriptor().getMessageTypes().get(12);
+      getDescriptor().getMessageTypes().get(10);
     internal_static_apache_rocketmq_v2_Endpoints_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_Endpoints_descriptor,
         new java.lang.String[] { "Scheme", "Addresses", });
     internal_static_apache_rocketmq_v2_Broker_descriptor =
-      getDescriptor().getMessageTypes().get(13);
+      getDescriptor().getMessageTypes().get(11);
     internal_static_apache_rocketmq_v2_Broker_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_Broker_descriptor,
         new java.lang.String[] { "Name", "Id", "Endpoints", });
     internal_static_apache_rocketmq_v2_MessageQueue_descriptor =
-      getDescriptor().getMessageTypes().get(14);
+      getDescriptor().getMessageTypes().get(12);
     internal_static_apache_rocketmq_v2_MessageQueue_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_MessageQueue_descriptor,
         new java.lang.String[] { "Topic", "Id", "Permission", "Broker", "AcceptMessageTypes", });
     internal_static_apache_rocketmq_v2_Digest_descriptor =
-      getDescriptor().getMessageTypes().get(15);
+      getDescriptor().getMessageTypes().get(13);
     internal_static_apache_rocketmq_v2_Digest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_Digest_descriptor,
         new java.lang.String[] { "Type", "Checksum", });
     internal_static_apache_rocketmq_v2_SystemProperties_descriptor =
-      getDescriptor().getMessageTypes().get(16);
+      getDescriptor().getMessageTypes().get(14);
     internal_static_apache_rocketmq_v2_SystemProperties_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_SystemProperties_descriptor,
-        new java.lang.String[] { "Tag", "Keys", "MessageId", "BodyDigest", "BodyEncoding", "MessageType", "BornTimestamp", "BornHost", "StoreTimestamp", "StoreHost", "DeliveryTimestamp", "ReceiptHandle", "QueueId", "QueueOffset", "InvisibleDuration", "DeliveryAttempt", "MessageGroup", "TraceContext", "OrphanedTransactionRecoveryDuration", });
+        new java.lang.String[] { "Tag", "Keys", "MessageId", "BodyDigest", "BodyEncoding", "MessageType", "BornTimestamp", "BornHost", "StoreTimestamp", "StoreHost", "DeliveryTimestamp", "ReceiptHandle", "QueueId", "QueueOffset", "InvisibleDuration", "DeliveryAttempt", "MessageGroup", "TraceContext", "OrphanedTransactionRecoveryDuration", "Tag", "StoreTimestamp", "DeliveryTimestamp", "ReceiptHandle", "QueueOffset", "InvisibleDuration", "DeliveryAttempt", "MessageGroup", "TraceContext", " [...]
     internal_static_apache_rocketmq_v2_Message_descriptor =
-      getDescriptor().getMessageTypes().get(17);
+      getDescriptor().getMessageTypes().get(15);
     internal_static_apache_rocketmq_v2_Message_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_Message_descriptor,
@@ -360,17 +362,23 @@ public final class MQDomain {
         internal_static_apache_rocketmq_v2_Message_UserPropertiesEntry_descriptor,
         new java.lang.String[] { "Key", "Value", });
     internal_static_apache_rocketmq_v2_Assignment_descriptor =
-      getDescriptor().getMessageTypes().get(18);
+      getDescriptor().getMessageTypes().get(16);
     internal_static_apache_rocketmq_v2_Assignment_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_Assignment_descriptor,
         new java.lang.String[] { "MessageQueue", });
     internal_static_apache_rocketmq_v2_SendReceipt_descriptor =
-      getDescriptor().getMessageTypes().get(19);
+      getDescriptor().getMessageTypes().get(17);
     internal_static_apache_rocketmq_v2_SendReceipt_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_SendReceipt_descriptor,
-        new java.lang.String[] { "MessageId", "TransactionId", });
+        new java.lang.String[] { "MessageId", "TransactionId", "Offset", });
+    internal_static_apache_rocketmq_v2_Status_descriptor =
+      getDescriptor().getMessageTypes().get(18);
+    internal_static_apache_rocketmq_v2_Status_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_apache_rocketmq_v2_Status_descriptor,
+        new java.lang.String[] { "Code", "Message", });
     com.google.protobuf.TimestampProto.getDescriptor();
     com.google.protobuf.DurationProto.getDescriptor();
   }
diff --git a/src/main/java/apache/rocketmq/v2/MQService.java b/src/main/java/apache/rocketmq/v2/MQService.java
index 0f2c78a..f52724d 100644
--- a/src/main/java/apache/rocketmq/v2/MQService.java
+++ b/src/main/java/apache/rocketmq/v2/MQService.java
@@ -14,11 +14,6 @@ public final class MQService {
     registerAllExtensions(
         (com.google.protobuf.ExtensionRegistryLite) registry);
   }
-  static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_apache_rocketmq_v2_Status_descriptor;
-  static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_apache_rocketmq_v2_Status_fieldAccessorTable;
   static final com.google.protobuf.Descriptors.Descriptor
     internal_static_apache_rocketmq_v2_QueryRouteRequest_descriptor;
   static final 
@@ -69,6 +64,16 @@ public final class MQService {
   static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_apache_rocketmq_v2_AckMessageResponse_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_apache_rocketmq_v2_NackMessageRequest_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_apache_rocketmq_v2_NackMessageRequest_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_apache_rocketmq_v2_NackMessageResponse_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_apache_rocketmq_v2_NackMessageResponse_fieldAccessorTable;
   static final com.google.protobuf.Descriptors.Descriptor
     internal_static_apache_rocketmq_v2_ForwardMessageToDeadLetterQueueRequest_descriptor;
   static final 
@@ -149,6 +154,16 @@ public final class MQService {
   static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_apache_rocketmq_v2_Settings_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_apache_rocketmq_v2_ClientSettings_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_apache_rocketmq_v2_ClientSettings_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_apache_rocketmq_v2_ClientOverwrittenSettings_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_apache_rocketmq_v2_ClientOverwrittenSettings_fieldAccessorTable;
   static final com.google.protobuf.Descriptors.Descriptor
     internal_static_apache_rocketmq_v2_TelemetryCommand_descriptor;
   static final 
@@ -186,392 +201,405 @@ public final class MQService {
       "\n apache/rocketmq/v2/service.proto\022\022apac" +
       "he.rocketmq.v2\032\036google/protobuf/duration" +
       ".proto\032\037google/protobuf/timestamp.proto\032" +
-      "\036google/rpc/error_details.proto\032\027google/" +
-      "rpc/status.proto\032#apache/rocketmq/v2/def" +
-      "inition.proto\"I\n\006Status\022.\n\004code\030\001 \001(\0162 ." +
-      "apache.rocketmq.v2.ResponseCode\022\017\n\007messa" +
-      "ge\030\002 \001(\t\"r\n\021QueryRouteRequest\022+\n\005topic\030\001" +
-      " \001(\0132\034.apache.rocketmq.v2.Resource\0220\n\ten" +
-      "dpoints\030\002 \001(\0132\035.apache.rocketmq.v2.Endpo" +
-      "ints\"z\n\022QueryRouteResponse\022*\n\006status\030\001 \001" +
-      "(\0132\032.apache.rocketmq.v2.Status\0228\n\016messag" +
-      "e_queues\030\002 \003(\0132 .apache.rocketmq.v2.Mess" +
-      "ageQueue\"|\n\022SendMessageRequest\022-\n\010messag" +
-      "es\030\001 \003(\0132\033.apache.rocketmq.v2.Message\0227\n" +
-      "\rmessage_queue\030\002 \001(\0132 .apache.rocketmq.v" +
-      "2.MessageQueue\"t\n\023SendMessageResponse\022*\n" +
-      "\006status\030\001 \001(\0132\032.apache.rocketmq.v2.Statu" +
-      "s\0221\n\010receipts\030\002 \003(\0132\037.apache.rocketmq.v2" +
-      ".SendReceipt\"\267\001\n\026QueryAssignmentRequest\022" +
-      "+\n\005topic\030\001 \001(\0132\034.apache.rocketmq.v2.Reso" +
-      "urce\022+\n\005group\030\002 \001(\0132\034.apache.rocketmq.v2" +
-      ".Resource\022\021\n\tclient_id\030\003 \001(\t\0220\n\tendpoint" +
-      "s\030\004 \001(\0132\035.apache.rocketmq.v2.Endpoints\"z" +
-      "\n\027QueryAssignmentResponse\022*\n\006status\030\001 \001(" +
-      "\0132\032.apache.rocketmq.v2.Status\0223\n\013assignm" +
-      "ents\030\002 \003(\0132\036.apache.rocketmq.v2.Assignme" +
-      "nt\"\233\003\n\025ReceiveMessageRequest\022+\n\005group\030\001 " +
-      "\001(\0132\034.apache.rocketmq.v2.Resource\022\021\n\tcli" +
-      "ent_id\030\002 \001(\t\0227\n\rmessage_queue\030\003 \001(\0132 .ap" +
-      "ache.rocketmq.v2.MessageQueue\022?\n\021filter_" +
-      "expression\030\004 \001(\0132$.apache.rocketmq.v2.Fi" +
-      "lterExpression\022<\n\030initialization_timesta" +
-      "mp\030\005 \001(\0132\032.google.protobuf.Timestamp\022\022\n\n" +
-      "batch_size\030\006 \001(\005\0225\n\022invisible_duration\030\007" +
-      " \001(\0132\031.google.protobuf.Duration\0221\n\016await" +
-      "_duration\030\010 \001(\0132\031.google.protobuf.Durati" +
-      "on\022\014\n\004fifo\030\t \001(\010\"\342\001\n\026ReceiveMessageRespo" +
-      "nse\022*\n\006status\030\001 \001(\0132\032.apache.rocketmq.v2" +
-      ".Status\022-\n\010messages\030\002 \003(\0132\033.apache.rocke" +
-      "tmq.v2.Message\0226\n\022delivery_timestamp\030\003 \001" +
-      "(\0132\032.google.protobuf.Timestamp\0225\n\022invisi" +
-      "ble_duration\030\004 \001(\0132\031.google.protobuf.Dur" +
-      "ation\"\254\001\n\021AckMessageRequest\022+\n\005group\030\001 \001" +
-      "(\0132\034.apache.rocketmq.v2.Resource\022+\n\005topi" +
-      "c\030\002 \001(\0132\034.apache.rocketmq.v2.Resource\022\021\n" +
-      "\tclient_id\030\003 \001(\t\022\026\n\016receipt_handle\030\004 \001(\t" +
-      "\022\022\n\nmessage_id\030\005 \001(\t\"@\n\022AckMessageRespon" +
+      "#apache/rocketmq/v2/definition.proto\"@\n\021" +
+      "QueryRouteRequest\022+\n\005topic\030\001 \001(\0132\034.apach" +
+      "e.rocketmq.v2.Resource\"z\n\022QueryRouteResp" +
+      "onse\022*\n\006status\030\001 \001(\0132\032.apache.rocketmq.v" +
+      "2.Status\0228\n\016message_queues\030\002 \003(\0132 .apach" +
+      "e.rocketmq.v2.MessageQueue\"|\n\022SendMessag" +
+      "eRequest\022-\n\010messages\030\001 \003(\0132\033.apache.rock" +
+      "etmq.v2.Message\0227\n\rmessage_queue\030\002 \001(\0132 " +
+      ".apache.rocketmq.v2.MessageQueue\"t\n\023Send" +
+      "MessageResponse\022*\n\006status\030\001 \001(\0132\032.apache" +
+      ".rocketmq.v2.Status\0221\n\010receipts\030\002 \003(\0132\037." +
+      "apache.rocketmq.v2.SendReceipt\"r\n\026QueryA" +
+      "ssignmentRequest\022+\n\005topic\030\001 \001(\0132\034.apache" +
+      ".rocketmq.v2.Resource\022+\n\005group\030\002 \001(\0132\034.a" +
+      "pache.rocketmq.v2.Resource\"z\n\027QueryAssig" +
+      "nmentResponse\022*\n\006status\030\001 \001(\0132\032.apache.r" +
+      "ocketmq.v2.Status\0223\n\013assignments\030\002 \003(\0132\036" +
+      ".apache.rocketmq.v2.Assignment\"\210\003\n\025Recei" +
+      "veMessageRequest\022+\n\005group\030\001 \001(\0132\034.apache" +
+      ".rocketmq.v2.Resource\0227\n\rmessage_queue\030\002" +
+      " \001(\0132 .apache.rocketmq.v2.MessageQueue\022?" +
+      "\n\021filter_expression\030\003 \001(\0132$.apache.rocke" +
+      "tmq.v2.FilterExpression\022<\n\030initializatio" +
+      "n_timestamp\030\004 \001(\0132\032.google.protobuf.Time" +
+      "stamp\022\022\n\nbatch_size\030\005 \001(\005\0225\n\022invisible_d" +
+      "uration\030\006 \001(\0132\031.google.protobuf.Duration" +
+      "\0221\n\016await_duration\030\007 \001(\0132\031.google.protob" +
+      "uf.Duration\022\014\n\004fifo\030\010 \001(\010\"\342\001\n\026ReceiveMes" +
+      "sageResponse\022*\n\006status\030\001 \001(\0132\032.apache.ro" +
+      "cketmq.v2.Status\022-\n\010messages\030\002 \003(\0132\033.apa" +
+      "che.rocketmq.v2.Message\0226\n\022delivery_time" +
+      "stamp\030\003 \001(\0132\032.google.protobuf.Timestamp\022" +
+      "5\n\022invisible_duration\030\004 \001(\0132\031.google.pro" +
+      "tobuf.Duration\"\231\001\n\021AckMessageRequest\022+\n\005" +
+      "group\030\001 \001(\0132\034.apache.rocketmq.v2.Resourc" +
+      "e\022+\n\005topic\030\002 \001(\0132\034.apache.rocketmq.v2.Re" +
+      "source\022\026\n\016receipt_handle\030\003 \001(\t\022\022\n\nmessag" +
+      "e_id\030\004 \001(\t\"@\n\022AckMessageResponse\022*\n\006stat" +
+      "us\030\001 \001(\0132\032.apache.rocketmq.v2.Status\"\264\001\n" +
+      "\022NackMessageRequest\022+\n\005group\030\001 \001(\0132\034.apa" +
+      "che.rocketmq.v2.Resource\022+\n\005topic\030\002 \001(\0132" +
+      "\034.apache.rocketmq.v2.Resource\022\026\n\016receipt" +
+      "_handle\030\003 \001(\t\022\022\n\nmessage_id\030\004 \001(\t\022\030\n\020del" +
+      "ivery_attempt\030\005 \001(\005\"A\n\023NackMessageRespon" +
       "se\022*\n\006status\030\001 \001(\0132\032.apache.rocketmq.v2." +
-      "Status\"\372\001\n&ForwardMessageToDeadLetterQue" +
+      "Status\"\347\001\n&ForwardMessageToDeadLetterQue" +
       "ueRequest\022+\n\005group\030\001 \001(\0132\034.apache.rocket" +
       "mq.v2.Resource\022+\n\005topic\030\002 \001(\0132\034.apache.r" +
-      "ocketmq.v2.Resource\022\021\n\tclient_id\030\003 \001(\t\022\026" +
-      "\n\016receipt_handle\030\004 \001(\t\022\022\n\nmessage_id\030\005 \001" +
-      "(\t\022\030\n\020delivery_attempt\030\006 \001(\005\022\035\n\025max_deli" +
-      "very_attempts\030\007 \001(\005\"U\n\'ForwardMessageToD" +
-      "eadLetterQueueResponse\022*\n\006status\030\001 \001(\0132\032" +
-      ".apache.rocketmq.v2.Status\"R\n\020HeartbeatR" +
-      "equest\022\021\n\tclient_id\030\001 \001(\t\022+\n\005group\030\002 \001(\013" +
-      "2\034.apache.rocketmq.v2.Resource\"?\n\021Heartb" +
-      "eatResponse\022*\n\006status\030\001 \001(\0132\032.apache.roc" +
-      "ketmq.v2.Status\"\375\001\n\025EndTransactionReques" +
-      "t\022+\n\005group\030\001 \001(\0132\034.apache.rocketmq.v2.Re" +
-      "source\022\022\n\nmessage_id\030\002 \001(\t\022\026\n\016transactio" +
-      "n_id\030\003 \001(\t\022=\n\nresolution\030\004 \001(\0162).apache." +
-      "rocketmq.v2.TransactionResolution\0225\n\006sou" +
-      "rce\030\005 \001(\0162%.apache.rocketmq.v2.Transacti" +
-      "onSource\022\025\n\rtrace_context\030\006 \001(\t\"D\n\026EndTr" +
-      "ansactionResponse\022*\n\006status\030\001 \001(\0132\032.apac" +
-      "he.rocketmq.v2.Status\"\264\001\n\022QueryOffsetReq" +
-      "uest\0227\n\rmessage_queue\030\001 \001(\0132 .apache.roc" +
-      "ketmq.v2.MessageQueue\0225\n\006policy\030\002 \001(\0162%." +
-      "apache.rocketmq.v2.QueryOffsetPolicy\022.\n\n" +
-      "time_point\030\003 \001(\0132\032.google.protobuf.Times" +
-      "tamp\"Q\n\023QueryOffsetResponse\022*\n\006status\030\001 " +
-      "\001(\0132\032.apache.rocketmq.v2.Status\022\016\n\006offse" +
-      "t\030\002 \001(\003\"\241\002\n\022PullMessageRequest\022+\n\005group\030" +
-      "\001 \001(\0132\034.apache.rocketmq.v2.Resource\0227\n\rm" +
-      "essage_queue\030\002 \001(\0132 .apache.rocketmq.v2." +
-      "MessageQueue\022\016\n\006offset\030\003 \001(\003\022\022\n\nbatch_si" +
-      "ze\030\004 \001(\005\022-\n\nawait_time\030\005 \001(\0132\031.google.pr" +
-      "otobuf.Duration\022?\n\021filter_expression\030\006 \001" +
-      "(\0132$.apache.rocketmq.v2.FilterExpression" +
-      "\022\021\n\tclient_id\030\007 \001(\t\"\255\001\n\023PullMessageRespo" +
+      "ocketmq.v2.Resource\022\026\n\016receipt_handle\030\003 " +
+      "\001(\t\022\022\n\nmessage_id\030\004 \001(\t\022\030\n\020delivery_atte" +
+      "mpt\030\005 \001(\005\022\035\n\025max_delivery_attempts\030\006 \001(\005" +
+      "\"U\n\'ForwardMessageToDeadLetterQueueRespo" +
       "nse\022*\n\006status\030\001 \001(\0132\032.apache.rocketmq.v2" +
-      ".Status\022\022\n\nmin_offset\030\002 \001(\003\022\023\n\013next_offs" +
-      "et\030\003 \001(\003\022\022\n\nmax_offset\030\004 \001(\003\022-\n\010messages" +
-      "\030\005 \003(\0132\033.apache.rocketmq.v2.Message\"2\n\034P" +
-      "rintThreadStackTraceCommand\022\022\n\ncommand_i" +
-      "d\030\001 \001(\003\"B\n\020ThreadStackTrace\022\022\n\ncommand_i" +
-      "d\030\001 \001(\003\022\032\n\022thread_stack_trace\030\002 \001(\t\"X\n\024V" +
-      "erifyMessageCommand\022\022\n\ncommand_id\030\001 \001(\003\022" +
-      ",\n\007message\030\002 \001(\0132\033.apache.rocketmq.v2.Me" +
-      "ssage\"U\n\023VerifyMessageResult\022\022\n\ncommand_" +
-      "id\030\001 \001(\003\022*\n\006status\030\002 \001(\0132\032.apache.rocket" +
-      "mq.v2.Status\"\224\001\n!RecoverOrphanedTransact" +
-      "ionCommand\022\022\n\ncommand_id\030\001 \001(\003\022C\n\036orphan" +
-      "ed_transactional_message\030\002 \001(\0132\033.apache." +
-      "rocketmq.v2.Message\022\026\n\016transaction_id\030\003 " +
-      "\001(\t\"\325\001\n\010Settings\022\021\n\tclient_id\030\001 \001(\t\022\024\n\014a" +
-      "ccess_point\030\002 \001(\t\022,\n\007publish\030\003 \001(\0132\033.apa" +
-      "che.rocketmq.v2.Publish\0226\n\014subscription\030" +
-      "\004 \001(\0132 .apache.rocketmq.v2.Subscription\022" +
-      ":\n\016authentication\030\005 \001(\0132\".apache.rocketm" +
-      "q.v2.Authentication\"\356\003\n\020TelemetryCommand" +
-      "\0220\n\010settings\030\001 \001(\0132\034.apache.rocketmq.v2." +
-      "SettingsH\000\022e\n$recover_orphaned_transacti" +
-      "on_command\030\002 \001(\01325.apache.rocketmq.v2.Re" +
-      "coverOrphanedTransactionCommandH\000\022\\\n pri" +
-      "nt_thread_stack_trace_command\030\003 \001(\01320.ap" +
-      "ache.rocketmq.v2.PrintThreadStackTraceCo" +
-      "mmandH\000\022B\n\022thread_stack_trace\030\004 \001(\0132$.ap" +
-      "ache.rocketmq.v2.ThreadStackTraceH\000\022J\n\026v" +
-      "erify_message_command\030\005 \001(\0132(.apache.roc" +
-      "ketmq.v2.VerifyMessageCommandH\000\022H\n\025verif" +
-      "y_message_result\030\006 \001(\0132\'.apache.rocketmq" +
-      ".v2.VerifyMessageResultH\000B\t\n\007command\"`\n\036" +
-      "NotifyClientTerminationRequest\022+\n\005group\030" +
-      "\001 \001(\0132\034.apache.rocketmq.v2.Resource\022\021\n\tc" +
-      "lient_id\030\002 \001(\t\"M\n\037NotifyClientTerminatio" +
-      "nResponse\022*\n\006status\030\001 \001(\0132\032.apache.rocke" +
-      "tmq.v2.Status\"\311\001\n\036ChangeInvisibleDuratio" +
-      "nRequest\022+\n\005group\030\001 \001(\0132\034.apache.rocketm" +
-      "q.v2.Resource\022+\n\005topic\030\002 \001(\0132\034.apache.ro" +
-      "cketmq.v2.Resource\022\026\n\016receipt_handle\030\003 \001" +
-      "(\t\0225\n\022invisible_duration\030\004 \001(\0132\031.google." +
-      "protobuf.Duration\"e\n\037ChangeInvisibleDura" +
-      "tionResponse\022*\n\006status\030\001 \001(\0132\032.apache.ro" +
-      "cketmq.v2.Status\022\026\n\016receipt_handle\030\002 \001(\t" +
-      "*\353\004\n\014ResponseCode\022\006\n\002OK\020\000\022\030\n\024ILLEGAL_ACC" +
-      "ESS_POINT\020\001\022\021\n\rILLEGAL_TOPIC\020\002\022\032\n\026ILLEGA" +
-      "L_CONSUMER_GROUP\020\003\022\027\n\023ILLEGAL_MESSAGE_TA" +
-      "G\020\004\022\027\n\023ILLEGAL_MESSAGE_KEY\020\005\022\032\n\026MESSAGE_" +
-      "KEYS_TOO_LARGE\020\006\022\031\n\025ILLEGAL_MESSAGE_GROU" +
-      "P\020\007\022 \n\034ILLEGAL_MESSAGE_PROPERTY_KEY\020\010\022 \n" +
-      "\034MESSAGE_PROPERTIES_TOO_LARGE\020\t\022\032\n\026MESSA" +
-      "GE_BODY_TOO_LARGE\020\n\022!\n\035REQUEST_AUTHORISA" +
-      "TION_FAILURE\020\013\022\"\n\036REQUEST_AUTHENTICATION" +
-      "_FAILURE\020\014\022\030\n\024TOPIC_DOES_NOT_EXIST\020\r\022!\n\035" +
-      "CONSUMER_GROUP_DOES_NOT_EXIST\020\016\022\036\n\032VERIF" +
-      "Y_MESSAGE_NOT_ALLOWED\020\017\022\035\n\031FAILED_TO_CON" +
-      "SUME_MESSAGE\020\020\022\025\n\021MESSAGE_CORRUPTED\020\021\022\030\n" +
-      "\024REQUEST_FLOW_CONTROL\020\022\022\033\n\027ACKNOWLEDGEME" +
-      "NT_EXPIRED\020\023\0220\n,MESSAGE_PROPERTY_DOES_NO" +
-      "T_MATCH_MESSAGE_TYPE\020\0242\242\013\n\020MessagingServ" +
-      "ice\022]\n\nQueryRoute\022%.apache.rocketmq.v2.Q" +
-      "ueryRouteRequest\032&.apache.rocketmq.v2.Qu" +
-      "eryRouteResponse\"\000\022Z\n\tHeartbeat\022$.apache" +
-      ".rocketmq.v2.HeartbeatRequest\032%.apache.r" +
-      "ocketmq.v2.HeartbeatResponse\"\000\022`\n\013SendMe" +
-      "ssage\022&.apache.rocketmq.v2.SendMessageRe" +
-      "quest\032\'.apache.rocketmq.v2.SendMessageRe" +
-      "sponse\"\000\022l\n\017QueryAssignment\022*.apache.roc" +
-      "ketmq.v2.QueryAssignmentRequest\032+.apache" +
-      ".rocketmq.v2.QueryAssignmentResponse\"\000\022i" +
-      "\n\016ReceiveMessage\022).apache.rocketmq.v2.Re" +
-      "ceiveMessageRequest\032*.apache.rocketmq.v2" +
-      ".ReceiveMessageResponse\"\000\022]\n\nAckMessage\022" +
-      "%.apache.rocketmq.v2.AckMessageRequest\032&" +
-      ".apache.rocketmq.v2.AckMessageResponse\"\000" +
-      "\022\234\001\n\037ForwardMessageToDeadLetterQueue\022:.a" +
-      "pache.rocketmq.v2.ForwardMessageToDeadLe" +
-      "tterQueueRequest\032;.apache.rocketmq.v2.Fo" +
-      "rwardMessageToDeadLetterQueueResponse\"\000\022" +
-      "i\n\016EndTransaction\022).apache.rocketmq.v2.E" +
-      "ndTransactionRequest\032*.apache.rocketmq.v" +
-      "2.EndTransactionResponse\"\000\022`\n\013QueryOffse" +
-      "t\022&.apache.rocketmq.v2.QueryOffsetReques" +
-      "t\032\'.apache.rocketmq.v2.QueryOffsetRespon" +
-      "se\"\000\022`\n\013PullMessage\022&.apache.rocketmq.v2" +
-      ".PullMessageRequest\032\'.apache.rocketmq.v2" +
-      ".PullMessageResponse\"\000\022]\n\tTelemetry\022$.ap" +
-      "ache.rocketmq.v2.TelemetryCommand\032$.apac" +
-      "he.rocketmq.v2.TelemetryCommand\"\000(\0010\001\022\204\001" +
-      "\n\027NotifyClientTermination\0222.apache.rocke" +
-      "tmq.v2.NotifyClientTerminationRequest\0323." +
-      "apache.rocketmq.v2.NotifyClientTerminati" +
-      "onResponse\"\000\022\204\001\n\027ChangeInvisibleDuration" +
-      "\0222.apache.rocketmq.v2.ChangeInvisibleDur" +
-      "ationRequest\0323.apache.rocketmq.v2.Change" +
-      "InvisibleDurationResponse\"\000B<\n\022apache.ro" +
-      "cketmq.v2B\tMQServiceP\001\240\001\001\330\001\001\252\002\022Apache.Ro" +
-      "cketmq.V2b\006proto3"
+      ".Status\"N\n\020HeartbeatRequest\0220\n\005group\030\001 \001" +
+      "(\0132\034.apache.rocketmq.v2.ResourceH\000\210\001\001B\010\n" +
+      "\006_group\"?\n\021HeartbeatResponse\022*\n\006status\030\001" +
+      " \001(\0132\032.apache.rocketmq.v2.Status\"\375\001\n\025End" +
+      "TransactionRequest\022+\n\005topic\030\001 \001(\0132\034.apac" +
+      "he.rocketmq.v2.Resource\022\022\n\nmessage_id\030\002 " +
+      "\001(\t\022\026\n\016transaction_id\030\003 \001(\t\022=\n\nresolutio" +
+      "n\030\004 \001(\0162).apache.rocketmq.v2.Transaction" +
+      "Resolution\0225\n\006source\030\005 \001(\0162%.apache.rock" +
+      "etmq.v2.TransactionSource\022\025\n\rtrace_conte" +
+      "xt\030\006 \001(\t\"D\n\026EndTransactionResponse\022*\n\006st" +
+      "atus\030\001 \001(\0132\032.apache.rocketmq.v2.Status\"\264" +
+      "\001\n\022QueryOffsetRequest\0227\n\rmessage_queue\030\001" +
+      " \001(\0132 .apache.rocketmq.v2.MessageQueue\0225" +
+      "\n\006policy\030\002 \001(\0162%.apache.rocketmq.v2.Quer" +
+      "yOffsetPolicy\022.\n\ntime_point\030\003 \001(\0132\032.goog" +
+      "le.protobuf.Timestamp\"Q\n\023QueryOffsetResp" +
+      "onse\022*\n\006status\030\001 \001(\0132\032.apache.rocketmq.v" +
+      "2.Status\022\016\n\006offset\030\002 \001(\003\"\216\002\n\022PullMessage" +
+      "Request\022+\n\005group\030\001 \001(\0132\034.apache.rocketmq" +
+      ".v2.Resource\0227\n\rmessage_queue\030\002 \001(\0132 .ap" +
+      "ache.rocketmq.v2.MessageQueue\022\016\n\006offset\030" +
+      "\003 \001(\003\022\022\n\nbatch_size\030\004 \001(\005\022-\n\nawait_time\030" +
+      "\005 \001(\0132\031.google.protobuf.Duration\022?\n\021filt" +
+      "er_expression\030\006 \001(\0132$.apache.rocketmq.v2" +
+      ".FilterExpression\"\255\001\n\023PullMessageRespons" +
+      "e\022*\n\006status\030\001 \001(\0132\032.apache.rocketmq.v2.S" +
+      "tatus\022\022\n\nmin_offset\030\002 \001(\003\022\023\n\013next_offset" +
+      "\030\003 \001(\003\022\022\n\nmax_offset\030\004 \001(\003\022-\n\010messages\030\005" +
+      " \003(\0132\033.apache.rocketmq.v2.Message\"-\n\034Pri" +
+      "ntThreadStackTraceCommand\022\r\n\005nonce\030\001 \001(\t" +
+      "\"\205\001\n\020ThreadStackTrace\022\r\n\005nonce\030\001 \001(\t\022*\n\006" +
+      "status\030\002 \001(\0132\032.apache.rocketmq.v2.Status" +
+      "\022\037\n\022thread_stack_trace\030\003 \001(\tH\000\210\001\001B\025\n\023_th" +
+      "read_stack_trace\"S\n\024VerifyMessageCommand" +
+      "\022\r\n\005nonce\030\001 \001(\t\022,\n\007message\030\002 \001(\0132\033.apach" +
+      "e.rocketmq.v2.Message\"P\n\023VerifyMessageRe" +
+      "sult\022\r\n\005nonce\030\001 \001(\t\022*\n\006status\030\002 \001(\0132\032.ap" +
+      "ache.rocketmq.v2.Status\"\200\001\n!RecoverOrpha" +
+      "nedTransactionCommand\022C\n\036orphaned_transa" +
+      "ctional_message\030\001 \001(\0132\033.apache.rocketmq." +
+      "v2.Message\022\026\n\016transaction_id\030\002 \001(\t\"\316\001\n\010S" +
+      "ettings\0227\n\npublishing\030\001 \001(\0132\036.apache.roc" +
+      "ketmq.v2.PublishingH\000\210\001\001\022;\n\014subscription" +
+      "\030\002 \001(\0132 .apache.rocketmq.v2.Subscription" +
+      "H\001\210\001\001\022,\n\007tracing\030\003 \001(\0132\033.apache.rocketmq" +
+      ".v2.TracingB\r\n\013_publishingB\017\n\r_subscript" +
+      "ion\"\353\001\n\016ClientSettings\022\r\n\005nonce\030\001 \001(\t\0220\n" +
+      "\tdirection\030\002 \001(\0162\035.apache.rocketmq.v2.Di" +
+      "rection\0223\n\013client_type\030\003 \001(\0162\036.apache.ro" +
+      "cketmq.v2.ClientType\0223\n\014access_point\030\004 \001" +
+      "(\0132\035.apache.rocketmq.v2.Endpoints\022.\n\010set" +
+      "tings\030\005 \001(\0132\034.apache.rocketmq.v2.Setting" +
+      "s\"\214\001\n\031ClientOverwrittenSettings\022\r\n\005nonce" +
+      "\030\001 \001(\t\0220\n\tdirection\030\002 \001(\0162\035.apache.rocke" +
+      "tmq.v2.Direction\022.\n\010settings\030\003 \001(\0132\034.apa" +
+      "che.rocketmq.v2.Settings\"\321\004\n\020TelemetryCo" +
+      "mmand\022=\n\017client_settings\030\001 \001(\0132\".apache." +
+      "rocketmq.v2.ClientSettingsH\000\022B\n\022thread_s" +
+      "tack_trace\030\002 \001(\0132$.apache.rocketmq.v2.Th" +
+      "readStackTraceH\000\022H\n\025verify_message_resul" +
+      "t\030\003 \001(\0132\'.apache.rocketmq.v2.VerifyMessa" +
+      "geResultH\000\022T\n\033client_overwritten_setting" +
+      "s\030\004 \001(\0132-.apache.rocketmq.v2.ClientOverw" +
+      "rittenSettingsH\000\022e\n$recover_orphaned_tra" +
+      "nsaction_command\030\005 \001(\01325.apache.rocketmq" +
+      ".v2.RecoverOrphanedTransactionCommandH\000\022" +
+      "\\\n print_thread_stack_trace_command\030\006 \001(" +
+      "\01320.apache.rocketmq.v2.PrintThreadStackT" +
+      "raceCommandH\000\022J\n\026verify_message_command\030" +
+      "\007 \001(\0132(.apache.rocketmq.v2.VerifyMessage" +
+      "CommandH\000B\t\n\007command\"\\\n\036NotifyClientTerm" +
+      "inationRequest\0220\n\005group\030\001 \001(\0132\034.apache.r" +
+      "ocketmq.v2.ResourceH\000\210\001\001B\010\n\006_group\"M\n\037No" +
+      "tifyClientTerminationResponse\022*\n\006status\030" +
+      "\001 \001(\0132\032.apache.rocketmq.v2.Status\"\311\001\n\036Ch" +
+      "angeInvisibleDurationRequest\022+\n\005group\030\001 " +
+      "\001(\0132\034.apache.rocketmq.v2.Resource\022+\n\005top" +
+      "ic\030\002 \001(\0132\034.apache.rocketmq.v2.Resource\022\026" +
+      "\n\016receipt_handle\030\003 \001(\t\0225\n\022invisible_dura" +
+      "tion\030\004 \001(\0132\031.google.protobuf.Duration\"e\n" +
+      "\037ChangeInvisibleDurationResponse\022*\n\006stat" +
+      "us\030\001 \001(\0132\032.apache.rocketmq.v2.Status\022\026\n\016" +
+      "receipt_handle\030\002 \001(\t*A\n\tDirection\022\031\n\025DIR" +
+      "ECTION_UNSPECIFIED\020\000\022\013\n\007REQUEST\020\001\022\014\n\010RES" +
+      "PONSE\020\0022\204\014\n\020MessagingService\022]\n\nQueryRou" +
+      "te\022%.apache.rocketmq.v2.QueryRouteReques" +
+      "t\032&.apache.rocketmq.v2.QueryRouteRespons" +
+      "e\"\000\022Z\n\tHeartbeat\022$.apache.rocketmq.v2.He" +
+      "artbeatRequest\032%.apache.rocketmq.v2.Hear" +
+      "tbeatResponse\"\000\022`\n\013SendMessage\022&.apache." +
+      "rocketmq.v2.SendMessageRequest\032\'.apache." +
+      "rocketmq.v2.SendMessageResponse\"\000\022l\n\017Que" +
+      "ryAssignment\022*.apache.rocketmq.v2.QueryA" +
+      "ssignmentRequest\032+.apache.rocketmq.v2.Qu" +
+      "eryAssignmentResponse\"\000\022i\n\016ReceiveMessag" +
+      "e\022).apache.rocketmq.v2.ReceiveMessageReq" +
+      "uest\032*.apache.rocketmq.v2.ReceiveMessage" +
+      "Response\"\000\022]\n\nAckMessage\022%.apache.rocket" +
+      "mq.v2.AckMessageRequest\032&.apache.rocketm" +
+      "q.v2.AckMessageResponse\"\000\022`\n\013NackMessage" +
+      "\022&.apache.rocketmq.v2.NackMessageRequest" +
+      "\032\'.apache.rocketmq.v2.NackMessageRespons" +
+      "e\"\000\022\234\001\n\037ForwardMessageToDeadLetterQueue\022" +
+      ":.apache.rocketmq.v2.ForwardMessageToDea" +
+      "dLetterQueueRequest\032;.apache.rocketmq.v2" +
+      ".ForwardMessageToDeadLetterQueueResponse" +
+      "\"\000\022i\n\016EndTransaction\022).apache.rocketmq.v" +
+      "2.EndTransactionRequest\032*.apache.rocketm" +
+      "q.v2.EndTransactionResponse\"\000\022`\n\013QueryOf" +
+      "fset\022&.apache.rocketmq.v2.QueryOffsetReq" +
+      "uest\032\'.apache.rocketmq.v2.QueryOffsetRes" +
+      "ponse\"\000\022`\n\013PullMessage\022&.apache.rocketmq" +
+      ".v2.PullMessageRequest\032\'.apache.rocketmq" +
+      ".v2.PullMessageResponse\"\000\022]\n\tTelemetry\022$" +
+      ".apache.rocketmq.v2.TelemetryCommand\032$.a" +
+      "pache.rocketmq.v2.TelemetryCommand\"\000(\0010\001" +
+      "\022\204\001\n\027NotifyClientTermination\0222.apache.ro" +
+      "cketmq.v2.NotifyClientTerminationRequest" +
+      "\0323.apache.rocketmq.v2.NotifyClientTermin" +
+      "ationResponse\"\000\022\204\001\n\027ChangeInvisibleDurat" +
+      "ion\0222.apache.rocketmq.v2.ChangeInvisible" +
+      "DurationRequest\0323.apache.rocketmq.v2.Cha" +
+      "ngeInvisibleDurationResponse\"\000B<\n\022apache" +
+      ".rocketmq.v2B\tMQServiceP\001\240\001\001\330\001\001\252\002\022Apache" +
+      ".Rocketmq.V2b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
         new com.google.protobuf.Descriptors.FileDescriptor[] {
           com.google.protobuf.DurationProto.getDescriptor(),
           com.google.protobuf.TimestampProto.getDescriptor(),
-          com.google.rpc.ErrorDetailsProto.getDescriptor(),
-          com.google.rpc.StatusProto.getDescriptor(),
           apache.rocketmq.v2.MQDomain.getDescriptor(),
         });
-    internal_static_apache_rocketmq_v2_Status_descriptor =
-      getDescriptor().getMessageTypes().get(0);
-    internal_static_apache_rocketmq_v2_Status_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_apache_rocketmq_v2_Status_descriptor,
-        new java.lang.String[] { "Code", "Message", });
     internal_static_apache_rocketmq_v2_QueryRouteRequest_descriptor =
-      getDescriptor().getMessageTypes().get(1);
+      getDescriptor().getMessageTypes().get(0);
     internal_static_apache_rocketmq_v2_QueryRouteRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_QueryRouteRequest_descriptor,
-        new java.lang.String[] { "Topic", "Endpoints", });
+        new java.lang.String[] { "Topic", });
     internal_static_apache_rocketmq_v2_QueryRouteResponse_descriptor =
-      getDescriptor().getMessageTypes().get(2);
+      getDescriptor().getMessageTypes().get(1);
     internal_static_apache_rocketmq_v2_QueryRouteResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_QueryRouteResponse_descriptor,
         new java.lang.String[] { "Status", "MessageQueues", });
     internal_static_apache_rocketmq_v2_SendMessageRequest_descriptor =
-      getDescriptor().getMessageTypes().get(3);
+      getDescriptor().getMessageTypes().get(2);
     internal_static_apache_rocketmq_v2_SendMessageRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_SendMessageRequest_descriptor,
         new java.lang.String[] { "Messages", "MessageQueue", });
     internal_static_apache_rocketmq_v2_SendMessageResponse_descriptor =
-      getDescriptor().getMessageTypes().get(4);
+      getDescriptor().getMessageTypes().get(3);
     internal_static_apache_rocketmq_v2_SendMessageResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_SendMessageResponse_descriptor,
         new java.lang.String[] { "Status", "Receipts", });
     internal_static_apache_rocketmq_v2_QueryAssignmentRequest_descriptor =
-      getDescriptor().getMessageTypes().get(5);
+      getDescriptor().getMessageTypes().get(4);
     internal_static_apache_rocketmq_v2_QueryAssignmentRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_QueryAssignmentRequest_descriptor,
-        new java.lang.String[] { "Topic", "Group", "ClientId", "Endpoints", });
+        new java.lang.String[] { "Topic", "Group", });
     internal_static_apache_rocketmq_v2_QueryAssignmentResponse_descriptor =
-      getDescriptor().getMessageTypes().get(6);
+      getDescriptor().getMessageTypes().get(5);
     internal_static_apache_rocketmq_v2_QueryAssignmentResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_QueryAssignmentResponse_descriptor,
         new java.lang.String[] { "Status", "Assignments", });
     internal_static_apache_rocketmq_v2_ReceiveMessageRequest_descriptor =
-      getDescriptor().getMessageTypes().get(7);
+      getDescriptor().getMessageTypes().get(6);
     internal_static_apache_rocketmq_v2_ReceiveMessageRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_ReceiveMessageRequest_descriptor,
-        new java.lang.String[] { "Group", "ClientId", "MessageQueue", "FilterExpression", "InitializationTimestamp", "BatchSize", "InvisibleDuration", "AwaitDuration", "Fifo", });
+        new java.lang.String[] { "Group", "MessageQueue", "FilterExpression", "InitializationTimestamp", "BatchSize", "InvisibleDuration", "AwaitDuration", "Fifo", });
     internal_static_apache_rocketmq_v2_ReceiveMessageResponse_descriptor =
-      getDescriptor().getMessageTypes().get(8);
+      getDescriptor().getMessageTypes().get(7);
     internal_static_apache_rocketmq_v2_ReceiveMessageResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_ReceiveMessageResponse_descriptor,
         new java.lang.String[] { "Status", "Messages", "DeliveryTimestamp", "InvisibleDuration", });
     internal_static_apache_rocketmq_v2_AckMessageRequest_descriptor =
-      getDescriptor().getMessageTypes().get(9);
+      getDescriptor().getMessageTypes().get(8);
     internal_static_apache_rocketmq_v2_AckMessageRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_AckMessageRequest_descriptor,
-        new java.lang.String[] { "Group", "Topic", "ClientId", "ReceiptHandle", "MessageId", });
+        new java.lang.String[] { "Group", "Topic", "ReceiptHandle", "MessageId", });
     internal_static_apache_rocketmq_v2_AckMessageResponse_descriptor =
-      getDescriptor().getMessageTypes().get(10);
+      getDescriptor().getMessageTypes().get(9);
     internal_static_apache_rocketmq_v2_AckMessageResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_AckMessageResponse_descriptor,
         new java.lang.String[] { "Status", });
-    internal_static_apache_rocketmq_v2_ForwardMessageToDeadLetterQueueRequest_descriptor =
+    internal_static_apache_rocketmq_v2_NackMessageRequest_descriptor =
+      getDescriptor().getMessageTypes().get(10);
+    internal_static_apache_rocketmq_v2_NackMessageRequest_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_apache_rocketmq_v2_NackMessageRequest_descriptor,
+        new java.lang.String[] { "Group", "Topic", "ReceiptHandle", "MessageId", "DeliveryAttempt", });
+    internal_static_apache_rocketmq_v2_NackMessageResponse_descriptor =
       getDescriptor().getMessageTypes().get(11);
+    internal_static_apache_rocketmq_v2_NackMessageResponse_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_apache_rocketmq_v2_NackMessageResponse_descriptor,
+        new java.lang.String[] { "Status", });
+    internal_static_apache_rocketmq_v2_ForwardMessageToDeadLetterQueueRequest_descriptor =
+      getDescriptor().getMessageTypes().get(12);
     internal_static_apache_rocketmq_v2_ForwardMessageToDeadLetterQueueRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_ForwardMessageToDeadLetterQueueRequest_descriptor,
-        new java.lang.String[] { "Group", "Topic", "ClientId", "ReceiptHandle", "MessageId", "DeliveryAttempt", "MaxDeliveryAttempts", });
+        new java.lang.String[] { "Group", "Topic", "ReceiptHandle", "MessageId", "DeliveryAttempt", "MaxDeliveryAttempts", });
     internal_static_apache_rocketmq_v2_ForwardMessageToDeadLetterQueueResponse_descriptor =
-      getDescriptor().getMessageTypes().get(12);
+      getDescriptor().getMessageTypes().get(13);
     internal_static_apache_rocketmq_v2_ForwardMessageToDeadLetterQueueResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_ForwardMessageToDeadLetterQueueResponse_descriptor,
         new java.lang.String[] { "Status", });
     internal_static_apache_rocketmq_v2_HeartbeatRequest_descriptor =
-      getDescriptor().getMessageTypes().get(13);
+      getDescriptor().getMessageTypes().get(14);
     internal_static_apache_rocketmq_v2_HeartbeatRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_HeartbeatRequest_descriptor,
-        new java.lang.String[] { "ClientId", "Group", });
+        new java.lang.String[] { "Group", "Group", });
     internal_static_apache_rocketmq_v2_HeartbeatResponse_descriptor =
-      getDescriptor().getMessageTypes().get(14);
+      getDescriptor().getMessageTypes().get(15);
     internal_static_apache_rocketmq_v2_HeartbeatResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_HeartbeatResponse_descriptor,
         new java.lang.String[] { "Status", });
     internal_static_apache_rocketmq_v2_EndTransactionRequest_descriptor =
-      getDescriptor().getMessageTypes().get(15);
+      getDescriptor().getMessageTypes().get(16);
     internal_static_apache_rocketmq_v2_EndTransactionRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_EndTransactionRequest_descriptor,
-        new java.lang.String[] { "Group", "MessageId", "TransactionId", "Resolution", "Source", "TraceContext", });
+        new java.lang.String[] { "Topic", "MessageId", "TransactionId", "Resolution", "Source", "TraceContext", });
     internal_static_apache_rocketmq_v2_EndTransactionResponse_descriptor =
-      getDescriptor().getMessageTypes().get(16);
+      getDescriptor().getMessageTypes().get(17);
     internal_static_apache_rocketmq_v2_EndTransactionResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_EndTransactionResponse_descriptor,
         new java.lang.String[] { "Status", });
     internal_static_apache_rocketmq_v2_QueryOffsetRequest_descriptor =
-      getDescriptor().getMessageTypes().get(17);
+      getDescriptor().getMessageTypes().get(18);
     internal_static_apache_rocketmq_v2_QueryOffsetRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_QueryOffsetRequest_descriptor,
         new java.lang.String[] { "MessageQueue", "Policy", "TimePoint", });
     internal_static_apache_rocketmq_v2_QueryOffsetResponse_descriptor =
-      getDescriptor().getMessageTypes().get(18);
+      getDescriptor().getMessageTypes().get(19);
     internal_static_apache_rocketmq_v2_QueryOffsetResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_QueryOffsetResponse_descriptor,
         new java.lang.String[] { "Status", "Offset", });
     internal_static_apache_rocketmq_v2_PullMessageRequest_descriptor =
-      getDescriptor().getMessageTypes().get(19);
+      getDescriptor().getMessageTypes().get(20);
     internal_static_apache_rocketmq_v2_PullMessageRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_PullMessageRequest_descriptor,
-        new java.lang.String[] { "Group", "MessageQueue", "Offset", "BatchSize", "AwaitTime", "FilterExpression", "ClientId", });
+        new java.lang.String[] { "Group", "MessageQueue", "Offset", "BatchSize", "AwaitTime", "FilterExpression", });
     internal_static_apache_rocketmq_v2_PullMessageResponse_descriptor =
-      getDescriptor().getMessageTypes().get(20);
+      getDescriptor().getMessageTypes().get(21);
     internal_static_apache_rocketmq_v2_PullMessageResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_PullMessageResponse_descriptor,
         new java.lang.String[] { "Status", "MinOffset", "NextOffset", "MaxOffset", "Messages", });
     internal_static_apache_rocketmq_v2_PrintThreadStackTraceCommand_descriptor =
-      getDescriptor().getMessageTypes().get(21);
+      getDescriptor().getMessageTypes().get(22);
     internal_static_apache_rocketmq_v2_PrintThreadStackTraceCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_PrintThreadStackTraceCommand_descriptor,
-        new java.lang.String[] { "CommandId", });
+        new java.lang.String[] { "Nonce", });
     internal_static_apache_rocketmq_v2_ThreadStackTrace_descriptor =
-      getDescriptor().getMessageTypes().get(22);
+      getDescriptor().getMessageTypes().get(23);
     internal_static_apache_rocketmq_v2_ThreadStackTrace_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_ThreadStackTrace_descriptor,
-        new java.lang.String[] { "CommandId", "ThreadStackTrace", });
+        new java.lang.String[] { "Nonce", "Status", "ThreadStackTrace", "ThreadStackTrace", });
     internal_static_apache_rocketmq_v2_VerifyMessageCommand_descriptor =
-      getDescriptor().getMessageTypes().get(23);
+      getDescriptor().getMessageTypes().get(24);
     internal_static_apache_rocketmq_v2_VerifyMessageCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_VerifyMessageCommand_descriptor,
-        new java.lang.String[] { "CommandId", "Message", });
+        new java.lang.String[] { "Nonce", "Message", });
     internal_static_apache_rocketmq_v2_VerifyMessageResult_descriptor =
-      getDescriptor().getMessageTypes().get(24);
+      getDescriptor().getMessageTypes().get(25);
     internal_static_apache_rocketmq_v2_VerifyMessageResult_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_VerifyMessageResult_descriptor,
-        new java.lang.String[] { "CommandId", "Status", });
+        new java.lang.String[] { "Nonce", "Status", });
     internal_static_apache_rocketmq_v2_RecoverOrphanedTransactionCommand_descriptor =
-      getDescriptor().getMessageTypes().get(25);
+      getDescriptor().getMessageTypes().get(26);
     internal_static_apache_rocketmq_v2_RecoverOrphanedTransactionCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_RecoverOrphanedTransactionCommand_descriptor,
-        new java.lang.String[] { "CommandId", "OrphanedTransactionalMessage", "TransactionId", });
+        new java.lang.String[] { "OrphanedTransactionalMessage", "TransactionId", });
     internal_static_apache_rocketmq_v2_Settings_descriptor =
-      getDescriptor().getMessageTypes().get(26);
+      getDescriptor().getMessageTypes().get(27);
     internal_static_apache_rocketmq_v2_Settings_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_Settings_descriptor,
-        new java.lang.String[] { "ClientId", "AccessPoint", "Publish", "Subscription", "Authentication", });
+        new java.lang.String[] { "Publishing", "Subscription", "Tracing", "Publishing", "Subscription", });
+    internal_static_apache_rocketmq_v2_ClientSettings_descriptor =
+      getDescriptor().getMessageTypes().get(28);
+    internal_static_apache_rocketmq_v2_ClientSettings_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_apache_rocketmq_v2_ClientSettings_descriptor,
+        new java.lang.String[] { "Nonce", "Direction", "ClientType", "AccessPoint", "Settings", });
+    internal_static_apache_rocketmq_v2_ClientOverwrittenSettings_descriptor =
+      getDescriptor().getMessageTypes().get(29);
+    internal_static_apache_rocketmq_v2_ClientOverwrittenSettings_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_apache_rocketmq_v2_ClientOverwrittenSettings_descriptor,
+        new java.lang.String[] { "Nonce", "Direction", "Settings", });
     internal_static_apache_rocketmq_v2_TelemetryCommand_descriptor =
-      getDescriptor().getMessageTypes().get(27);
+      getDescriptor().getMessageTypes().get(30);
     internal_static_apache_rocketmq_v2_TelemetryCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_TelemetryCommand_descriptor,
-        new java.lang.String[] { "Settings", "RecoverOrphanedTransactionCommand", "PrintThreadStackTraceCommand", "ThreadStackTrace", "VerifyMessageCommand", "VerifyMessageResult", "Command", });
+        new java.lang.String[] { "ClientSettings", "ThreadStackTrace", "VerifyMessageResult", "ClientOverwrittenSettings", "RecoverOrphanedTransactionCommand", "PrintThreadStackTraceCommand", "VerifyMessageCommand", "Command", });
     internal_static_apache_rocketmq_v2_NotifyClientTerminationRequest_descriptor =
-      getDescriptor().getMessageTypes().get(28);
+      getDescriptor().getMessageTypes().get(31);
     internal_static_apache_rocketmq_v2_NotifyClientTerminationRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_NotifyClientTerminationRequest_descriptor,
-        new java.lang.String[] { "Group", "ClientId", });
+        new java.lang.String[] { "Group", "Group", });
     internal_static_apache_rocketmq_v2_NotifyClientTerminationResponse_descriptor =
-      getDescriptor().getMessageTypes().get(29);
+      getDescriptor().getMessageTypes().get(32);
     internal_static_apache_rocketmq_v2_NotifyClientTerminationResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_NotifyClientTerminationResponse_descriptor,
         new java.lang.String[] { "Status", });
     internal_static_apache_rocketmq_v2_ChangeInvisibleDurationRequest_descriptor =
-      getDescriptor().getMessageTypes().get(30);
+      getDescriptor().getMessageTypes().get(33);
     internal_static_apache_rocketmq_v2_ChangeInvisibleDurationRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_ChangeInvisibleDurationRequest_descriptor,
         new java.lang.String[] { "Group", "Topic", "ReceiptHandle", "InvisibleDuration", });
     internal_static_apache_rocketmq_v2_ChangeInvisibleDurationResponse_descriptor =
-      getDescriptor().getMessageTypes().get(31);
+      getDescriptor().getMessageTypes().get(34);
     internal_static_apache_rocketmq_v2_ChangeInvisibleDurationResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_ChangeInvisibleDurationResponse_descriptor,
         new java.lang.String[] { "Status", "ReceiptHandle", });
     com.google.protobuf.DurationProto.getDescriptor();
     com.google.protobuf.TimestampProto.getDescriptor();
-    com.google.rpc.ErrorDetailsProto.getDescriptor();
-    com.google.rpc.StatusProto.getDescriptor();
     apache.rocketmq.v2.MQDomain.getDescriptor();
   }
 
diff --git a/src/main/java/apache/rocketmq/v2/Message.java b/src/main/java/apache/rocketmq/v2/Message.java
index 71b78af..cd44582 100644
--- a/src/main/java/apache/rocketmq/v2/Message.java
+++ b/src/main/java/apache/rocketmq/v2/Message.java
@@ -205,7 +205,7 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public boolean containsUserProperties(
       java.lang.String key) {
-    if (key == null) { throw new java.lang.NullPointerException(); }
+    if (key == null) { throw new NullPointerException("map key"); }
     return internalGetUserProperties().getMap().containsKey(key);
   }
   /**
@@ -248,7 +248,7 @@ private static final long serialVersionUID = 0L;
   public java.lang.String getUserPropertiesOrDefault(
       java.lang.String key,
       java.lang.String defaultValue) {
-    if (key == null) { throw new java.lang.NullPointerException(); }
+    if (key == null) { throw new NullPointerException("map key"); }
     java.util.Map<java.lang.String, java.lang.String> map =
         internalGetUserProperties().getMap();
     return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -268,7 +268,7 @@ private static final long serialVersionUID = 0L;
 
   public java.lang.String getUserPropertiesOrThrow(
       java.lang.String key) {
-    if (key == null) { throw new java.lang.NullPointerException(); }
+    if (key == null) { throw new NullPointerException("map key"); }
     java.util.Map<java.lang.String, java.lang.String> map =
         internalGetUserProperties().getMap();
     if (!map.containsKey(key)) {
@@ -887,7 +887,7 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean containsUserProperties(
         java.lang.String key) {
-      if (key == null) { throw new java.lang.NullPointerException(); }
+      if (key == null) { throw new NullPointerException("map key"); }
       return internalGetUserProperties().getMap().containsKey(key);
     }
     /**
@@ -930,7 +930,7 @@ private static final long serialVersionUID = 0L;
     public java.lang.String getUserPropertiesOrDefault(
         java.lang.String key,
         java.lang.String defaultValue) {
-      if (key == null) { throw new java.lang.NullPointerException(); }
+      if (key == null) { throw new NullPointerException("map key"); }
       java.util.Map<java.lang.String, java.lang.String> map =
           internalGetUserProperties().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -950,7 +950,7 @@ private static final long serialVersionUID = 0L;
 
     public java.lang.String getUserPropertiesOrThrow(
         java.lang.String key) {
-      if (key == null) { throw new java.lang.NullPointerException(); }
+      if (key == null) { throw new NullPointerException("map key"); }
       java.util.Map<java.lang.String, java.lang.String> map =
           internalGetUserProperties().getMap();
       if (!map.containsKey(key)) {
@@ -978,7 +978,7 @@ private static final long serialVersionUID = 0L;
 
     public Builder removeUserProperties(
         java.lang.String key) {
-      if (key == null) { throw new java.lang.NullPointerException(); }
+      if (key == null) { throw new NullPointerException("map key"); }
       internalGetMutableUserProperties().getMutableMap()
           .remove(key);
       return this;
@@ -1005,8 +1005,11 @@ private static final long serialVersionUID = 0L;
     public Builder putUserProperties(
         java.lang.String key,
         java.lang.String value) {
-      if (key == null) { throw new java.lang.NullPointerException(); }
-      if (value == null) { throw new java.lang.NullPointerException(); }
+      if (key == null) { throw new NullPointerException("map key"); }
+      if (value == null) {
+  throw new NullPointerException("map value");
+}
+
       internalGetMutableUserProperties().getMutableMap()
           .put(key, value);
       return this;
diff --git a/src/main/java/apache/rocketmq/v2/MessageType.java b/src/main/java/apache/rocketmq/v2/MessageType.java
index 80a8cf1..c275f61 100644
--- a/src/main/java/apache/rocketmq/v2/MessageType.java
+++ b/src/main/java/apache/rocketmq/v2/MessageType.java
@@ -138,7 +138,7 @@ public enum MessageType
   }
   public static final com.google.protobuf.Descriptors.EnumDescriptor
       getDescriptor() {
-    return apache.rocketmq.v2.MQDomain.getDescriptor().getEnumTypes().get(7);
+    return apache.rocketmq.v2.MQDomain.getDescriptor().getEnumTypes().get(5);
   }
 
   private static final MessageType[] VALUES = values();
diff --git a/src/main/java/apache/rocketmq/v2/MessagingServiceGrpc.java b/src/main/java/apache/rocketmq/v2/MessagingServiceGrpc.java
index c8ce62d..ffe34c9 100644
--- a/src/main/java/apache/rocketmq/v2/MessagingServiceGrpc.java
+++ b/src/main/java/apache/rocketmq/v2/MessagingServiceGrpc.java
@@ -212,6 +212,37 @@ public final class MessagingServiceGrpc {
     return getAckMessageMethod;
   }
 
+  private static volatile io.grpc.MethodDescriptor<apache.rocketmq.v2.NackMessageRequest,
+      apache.rocketmq.v2.NackMessageResponse> getNackMessageMethod;
+
+  @io.grpc.stub.annotations.RpcMethod(
+      fullMethodName = SERVICE_NAME + '/' + "NackMessage",
+      requestType = apache.rocketmq.v2.NackMessageRequest.class,
+      responseType = apache.rocketmq.v2.NackMessageResponse.class,
+      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+  public static io.grpc.MethodDescriptor<apache.rocketmq.v2.NackMessageRequest,
+      apache.rocketmq.v2.NackMessageResponse> getNackMessageMethod() {
+    io.grpc.MethodDescriptor<apache.rocketmq.v2.NackMessageRequest, apache.rocketmq.v2.NackMessageResponse> getNackMessageMethod;
+    if ((getNackMessageMethod = MessagingServiceGrpc.getNackMessageMethod) == null) {
+      synchronized (MessagingServiceGrpc.class) {
+        if ((getNackMessageMethod = MessagingServiceGrpc.getNackMessageMethod) == null) {
+          MessagingServiceGrpc.getNackMessageMethod = getNackMessageMethod =
+              io.grpc.MethodDescriptor.<apache.rocketmq.v2.NackMessageRequest, apache.rocketmq.v2.NackMessageResponse>newBuilder()
+              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "NackMessage"))
+              .setSampledToLocalTracing(true)
+              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  apache.rocketmq.v2.NackMessageRequest.getDefaultInstance()))
+              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  apache.rocketmq.v2.NackMessageResponse.getDefaultInstance()))
+              .setSchemaDescriptor(new MessagingServiceMethodDescriptorSupplier("NackMessage"))
+              .build();
+        }
+      }
+    }
+    return getNackMessageMethod;
+  }
+
   private static volatile io.grpc.MethodDescriptor<apache.rocketmq.v2.ForwardMessageToDeadLetterQueueRequest,
       apache.rocketmq.v2.ForwardMessageToDeadLetterQueueResponse> getForwardMessageToDeadLetterQueueMethod;
 
@@ -495,7 +526,7 @@ public final class MessagingServiceGrpc {
      * addressable message-queues. Note servers may return customized route
      * entries based on endpoints provided.
      * If the requested topic doesn't exist, returns `NOT_FOUND`.
-     * If the specific endpoints is emtpy, returns `INVALID_ARGUMENT`.
+     * If the specific endpoints is empty, returns `INVALID_ARGUMENT`.
      * </pre>
      */
     public void queryRoute(apache.rocketmq.v2.QueryRouteRequest request,
@@ -584,6 +615,20 @@ public final class MessagingServiceGrpc {
       io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getAckMessageMethod(), responseObserver);
     }
 
+    /**
+     * <pre>
+     * Signals that the message has not been successfully processed. The message
+     * server should resend the message follow the retry policy defined at
+     * server-side.
+     * If the corresponding topic or consumer group doesn't exist, returns
+     * `NOT_FOUND`.
+     * </pre>
+     */
+    public void nackMessage(apache.rocketmq.v2.NackMessageRequest request,
+        io.grpc.stub.StreamObserver<apache.rocketmq.v2.NackMessageResponse> responseObserver) {
+      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getNackMessageMethod(), responseObserver);
+    }
+
     /**
      * <pre>
      * Forwards one message to dead letter queue if the DeadLetterPolicy is
@@ -641,7 +686,7 @@ public final class MessagingServiceGrpc {
      * Once a client starts, it would immediately establishes bi-lateral stream
      * RPCs with brokers, reporting its settings as the initiative command.
      * When servers have need of inspecting client status, they would issue
-     * telemetry commands to clients. After executing recieved instructions,
+     * telemetry commands to clients. After executing received instructions,
      * clients shall report command execution results through client-side streams.
      * </pre>
      */
@@ -719,6 +764,13 @@ public final class MessagingServiceGrpc {
                 apache.rocketmq.v2.AckMessageRequest,
                 apache.rocketmq.v2.AckMessageResponse>(
                   this, METHODID_ACK_MESSAGE)))
+          .addMethod(
+            getNackMessageMethod(),
+            io.grpc.stub.ServerCalls.asyncUnaryCall(
+              new MethodHandlers<
+                apache.rocketmq.v2.NackMessageRequest,
+                apache.rocketmq.v2.NackMessageResponse>(
+                  this, METHODID_NACK_MESSAGE)))
           .addMethod(
             getForwardMessageToDeadLetterQueueMethod(),
             io.grpc.stub.ServerCalls.asyncUnaryCall(
@@ -804,7 +856,7 @@ public final class MessagingServiceGrpc {
      * addressable message-queues. Note servers may return customized route
      * entries based on endpoints provided.
      * If the requested topic doesn't exist, returns `NOT_FOUND`.
-     * If the specific endpoints is emtpy, returns `INVALID_ARGUMENT`.
+     * If the specific endpoints is empty, returns `INVALID_ARGUMENT`.
      * </pre>
      */
     public void queryRoute(apache.rocketmq.v2.QueryRouteRequest request,
@@ -899,6 +951,21 @@ public final class MessagingServiceGrpc {
           getChannel().newCall(getAckMessageMethod(), getCallOptions()), request, responseObserver);
     }
 
+    /**
+     * <pre>
+     * Signals that the message has not been successfully processed. The message
+     * server should resend the message follow the retry policy defined at
+     * server-side.
+     * If the corresponding topic or consumer group doesn't exist, returns
+     * `NOT_FOUND`.
+     * </pre>
+     */
+    public void nackMessage(apache.rocketmq.v2.NackMessageRequest request,
+        io.grpc.stub.StreamObserver<apache.rocketmq.v2.NackMessageResponse> responseObserver) {
+      io.grpc.stub.ClientCalls.asyncUnaryCall(
+          getChannel().newCall(getNackMessageMethod(), getCallOptions()), request, responseObserver);
+    }
+
     /**
      * <pre>
      * Forwards one message to dead letter queue if the DeadLetterPolicy is
@@ -960,7 +1027,7 @@ public final class MessagingServiceGrpc {
      * Once a client starts, it would immediately establishes bi-lateral stream
      * RPCs with brokers, reporting its settings as the initiative command.
      * When servers have need of inspecting client status, they would issue
-     * telemetry commands to clients. After executing recieved instructions,
+     * telemetry commands to clients. After executing received instructions,
      * clients shall report command execution results through client-side streams.
      * </pre>
      */
@@ -1030,7 +1097,7 @@ public final class MessagingServiceGrpc {
      * addressable message-queues. Note servers may return customized route
      * entries based on endpoints provided.
      * If the requested topic doesn't exist, returns `NOT_FOUND`.
-     * If the specific endpoints is emtpy, returns `INVALID_ARGUMENT`.
+     * If the specific endpoints is empty, returns `INVALID_ARGUMENT`.
      * </pre>
      */
     public apache.rocketmq.v2.QueryRouteResponse queryRoute(apache.rocketmq.v2.QueryRouteRequest request) {
@@ -1119,6 +1186,20 @@ public final class MessagingServiceGrpc {
           getChannel(), getAckMessageMethod(), getCallOptions(), request);
     }
 
+    /**
+     * <pre>
+     * Signals that the message has not been successfully processed. The message
+     * server should resend the message follow the retry policy defined at
+     * server-side.
+     * If the corresponding topic or consumer group doesn't exist, returns
+     * `NOT_FOUND`.
+     * </pre>
+     */
+    public apache.rocketmq.v2.NackMessageResponse nackMessage(apache.rocketmq.v2.NackMessageRequest request) {
+      return io.grpc.stub.ClientCalls.blockingUnaryCall(
+          getChannel(), getNackMessageMethod(), getCallOptions(), request);
+    }
+
     /**
      * <pre>
      * Forwards one message to dead letter queue if the DeadLetterPolicy is
@@ -1229,7 +1310,7 @@ public final class MessagingServiceGrpc {
      * addressable message-queues. Note servers may return customized route
      * entries based on endpoints provided.
      * If the requested topic doesn't exist, returns `NOT_FOUND`.
-     * If the specific endpoints is emtpy, returns `INVALID_ARGUMENT`.
+     * If the specific endpoints is empty, returns `INVALID_ARGUMENT`.
      * </pre>
      */
     public com.google.common.util.concurrent.ListenableFuture<apache.rocketmq.v2.QueryRouteResponse> queryRoute(
@@ -1324,6 +1405,21 @@ public final class MessagingServiceGrpc {
           getChannel().newCall(getAckMessageMethod(), getCallOptions()), request);
     }
 
+    /**
+     * <pre>
+     * Signals that the message has not been successfully processed. The message
+     * server should resend the message follow the retry policy defined at
+     * server-side.
+     * If the corresponding topic or consumer group doesn't exist, returns
+     * `NOT_FOUND`.
+     * </pre>
+     */
+    public com.google.common.util.concurrent.ListenableFuture<apache.rocketmq.v2.NackMessageResponse> nackMessage(
+        apache.rocketmq.v2.NackMessageRequest request) {
+      return io.grpc.stub.ClientCalls.futureUnaryCall(
+          getChannel().newCall(getNackMessageMethod(), getCallOptions()), request);
+    }
+
     /**
      * <pre>
      * Forwards one message to dead letter queue if the DeadLetterPolicy is
@@ -1414,13 +1510,14 @@ public final class MessagingServiceGrpc {
   private static final int METHODID_QUERY_ASSIGNMENT = 3;
   private static final int METHODID_RECEIVE_MESSAGE = 4;
   private static final int METHODID_ACK_MESSAGE = 5;
-  private static final int METHODID_FORWARD_MESSAGE_TO_DEAD_LETTER_QUEUE = 6;
-  private static final int METHODID_END_TRANSACTION = 7;
-  private static final int METHODID_QUERY_OFFSET = 8;
-  private static final int METHODID_PULL_MESSAGE = 9;
-  private static final int METHODID_NOTIFY_CLIENT_TERMINATION = 10;
-  private static final int METHODID_CHANGE_INVISIBLE_DURATION = 11;
-  private static final int METHODID_TELEMETRY = 12;
+  private static final int METHODID_NACK_MESSAGE = 6;
+  private static final int METHODID_FORWARD_MESSAGE_TO_DEAD_LETTER_QUEUE = 7;
+  private static final int METHODID_END_TRANSACTION = 8;
+  private static final int METHODID_QUERY_OFFSET = 9;
+  private static final int METHODID_PULL_MESSAGE = 10;
+  private static final int METHODID_NOTIFY_CLIENT_TERMINATION = 11;
+  private static final int METHODID_CHANGE_INVISIBLE_DURATION = 12;
+  private static final int METHODID_TELEMETRY = 13;
 
   private static final class MethodHandlers<Req, Resp> implements
       io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
@@ -1463,6 +1560,10 @@ public final class MessagingServiceGrpc {
           serviceImpl.ackMessage((apache.rocketmq.v2.AckMessageRequest) request,
               (io.grpc.stub.StreamObserver<apache.rocketmq.v2.AckMessageResponse>) responseObserver);
           break;
+        case METHODID_NACK_MESSAGE:
+          serviceImpl.nackMessage((apache.rocketmq.v2.NackMessageRequest) request,
+              (io.grpc.stub.StreamObserver<apache.rocketmq.v2.NackMessageResponse>) responseObserver);
+          break;
         case METHODID_FORWARD_MESSAGE_TO_DEAD_LETTER_QUEUE:
           serviceImpl.forwardMessageToDeadLetterQueue((apache.rocketmq.v2.ForwardMessageToDeadLetterQueueRequest) request,
               (io.grpc.stub.StreamObserver<apache.rocketmq.v2.ForwardMessageToDeadLetterQueueResponse>) responseObserver);
@@ -1557,6 +1658,7 @@ public final class MessagingServiceGrpc {
               .addMethod(getQueryAssignmentMethod())
               .addMethod(getReceiveMessageMethod())
               .addMethod(getAckMessageMethod())
+              .addMethod(getNackMessageMethod())
               .addMethod(getForwardMessageToDeadLetterQueueMethod())
               .addMethod(getEndTransactionMethod())
               .addMethod(getQueryOffsetMethod())
diff --git a/src/main/java/apache/rocketmq/v2/AckMessageRequest.java b/src/main/java/apache/rocketmq/v2/NackMessageRequest.java
similarity index 77%
copy from src/main/java/apache/rocketmq/v2/AckMessageRequest.java
copy to src/main/java/apache/rocketmq/v2/NackMessageRequest.java
index 47f37f7..c66d1ba 100644
--- a/src/main/java/apache/rocketmq/v2/AckMessageRequest.java
+++ b/src/main/java/apache/rocketmq/v2/NackMessageRequest.java
@@ -4,19 +4,18 @@
 package apache.rocketmq.v2;
 
 /**
- * Protobuf type {@code apache.rocketmq.v2.AckMessageRequest}
+ * Protobuf type {@code apache.rocketmq.v2.NackMessageRequest}
  */
-public final class AckMessageRequest extends
+public final class NackMessageRequest extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:apache.rocketmq.v2.AckMessageRequest)
-    AckMessageRequestOrBuilder {
+    // @@protoc_insertion_point(message_implements:apache.rocketmq.v2.NackMessageRequest)
+    NackMessageRequestOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use AckMessageRequest.newBuilder() to construct.
-  private AckMessageRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use NackMessageRequest.newBuilder() to construct.
+  private NackMessageRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private AckMessageRequest() {
-    clientId_ = "";
+  private NackMessageRequest() {
     receiptHandle_ = "";
     messageId_ = "";
   }
@@ -25,7 +24,7 @@ private static final long serialVersionUID = 0L;
   @SuppressWarnings({"unused"})
   protected java.lang.Object newInstance(
       UnusedPrivateParameter unused) {
-    return new AckMessageRequest();
+    return new NackMessageRequest();
   }
 
   @java.lang.Override
@@ -33,7 +32,7 @@ private static final long serialVersionUID = 0L;
   getUnknownFields() {
     return this.unknownFields;
   }
-  private AckMessageRequest(
+  private NackMessageRequest(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -80,19 +79,18 @@ private static final long serialVersionUID = 0L;
           case 26: {
             java.lang.String s = input.readStringRequireUtf8();
 
-            clientId_ = s;
+            receiptHandle_ = s;
             break;
           }
           case 34: {
             java.lang.String s = input.readStringRequireUtf8();
 
-            receiptHandle_ = s;
+            messageId_ = s;
             break;
           }
-          case 42: {
-            java.lang.String s = input.readStringRequireUtf8();
+          case 40: {
 
-            messageId_ = s;
+            deliveryAttempt_ = input.readInt32();
             break;
           }
           default: {
@@ -116,15 +114,15 @@ private static final long serialVersionUID = 0L;
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_AckMessageRequest_descriptor;
+    return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_NackMessageRequest_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_AckMessageRequest_fieldAccessorTable
+    return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_NackMessageRequest_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            apache.rocketmq.v2.AckMessageRequest.class, apache.rocketmq.v2.AckMessageRequest.Builder.class);
+            apache.rocketmq.v2.NackMessageRequest.class, apache.rocketmq.v2.NackMessageRequest.Builder.class);
   }
 
   public static final int GROUP_FIELD_NUMBER = 1;
@@ -179,48 +177,10 @@ private static final long serialVersionUID = 0L;
     return getTopic();
   }
 
-  public static final int CLIENT_ID_FIELD_NUMBER = 3;
-  private volatile java.lang.Object clientId_;
-  /**
-   * <code>string client_id = 3;</code>
-   * @return The clientId.
-   */
-  @java.lang.Override
-  public java.lang.String getClientId() {
-    java.lang.Object ref = clientId_;
-    if (ref instanceof java.lang.String) {
-      return (java.lang.String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      java.lang.String s = bs.toStringUtf8();
-      clientId_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string client_id = 3;</code>
-   * @return The bytes for clientId.
-   */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getClientIdBytes() {
-    java.lang.Object ref = clientId_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      clientId_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
-    }
-  }
-
-  public static final int RECEIPT_HANDLE_FIELD_NUMBER = 4;
+  public static final int RECEIPT_HANDLE_FIELD_NUMBER = 3;
   private volatile java.lang.Object receiptHandle_;
   /**
-   * <code>string receipt_handle = 4;</code>
+   * <code>string receipt_handle = 3;</code>
    * @return The receiptHandle.
    */
   @java.lang.Override
@@ -237,7 +197,7 @@ private static final long serialVersionUID = 0L;
     }
   }
   /**
-   * <code>string receipt_handle = 4;</code>
+   * <code>string receipt_handle = 3;</code>
    * @return The bytes for receiptHandle.
    */
   @java.lang.Override
@@ -255,10 +215,10 @@ private static final long serialVersionUID = 0L;
     }
   }
 
-  public static final int MESSAGE_ID_FIELD_NUMBER = 5;
+  public static final int MESSAGE_ID_FIELD_NUMBER = 4;
   private volatile java.lang.Object messageId_;
   /**
-   * <code>string message_id = 5;</code>
+   * <code>string message_id = 4;</code>
    * @return The messageId.
    */
   @java.lang.Override
@@ -275,7 +235,7 @@ private static final long serialVersionUID = 0L;
     }
   }
   /**
-   * <code>string message_id = 5;</code>
+   * <code>string message_id = 4;</code>
    * @return The bytes for messageId.
    */
   @java.lang.Override
@@ -293,6 +253,17 @@ private static final long serialVersionUID = 0L;
     }
   }
 
+  public static final int DELIVERY_ATTEMPT_FIELD_NUMBER = 5;
+  private int deliveryAttempt_;
+  /**
+   * <code>int32 delivery_attempt = 5;</code>
+   * @return The deliveryAttempt.
+   */
+  @java.lang.Override
+  public int getDeliveryAttempt() {
+    return deliveryAttempt_;
+  }
+
   private byte memoizedIsInitialized = -1;
   @java.lang.Override
   public final boolean isInitialized() {
@@ -313,14 +284,14 @@ private static final long serialVersionUID = 0L;
     if (topic_ != null) {
       output.writeMessage(2, getTopic());
     }
-    if (!getClientIdBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 3, clientId_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 3, receiptHandle_);
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 4, receiptHandle_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 4, messageId_);
     }
-    if (!getMessageIdBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 5, messageId_);
+    if (deliveryAttempt_ != 0) {
+      output.writeInt32(5, deliveryAttempt_);
     }
     unknownFields.writeTo(output);
   }
@@ -339,14 +310,15 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(2, getTopic());
     }
-    if (!getClientIdBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, clientId_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(receiptHandle_)) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, receiptHandle_);
     }
-    if (!getReceiptHandleBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, receiptHandle_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, messageId_);
     }
-    if (!getMessageIdBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, messageId_);
+    if (deliveryAttempt_ != 0) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt32Size(5, deliveryAttempt_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -358,10 +330,10 @@ private static final long serialVersionUID = 0L;
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof apache.rocketmq.v2.AckMessageRequest)) {
+    if (!(obj instanceof apache.rocketmq.v2.NackMessageRequest)) {
       return super.equals(obj);
     }
-    apache.rocketmq.v2.AckMessageRequest other = (apache.rocketmq.v2.AckMessageRequest) obj;
+    apache.rocketmq.v2.NackMessageRequest other = (apache.rocketmq.v2.NackMessageRequest) obj;
 
     if (hasGroup() != other.hasGroup()) return false;
     if (hasGroup()) {
@@ -373,12 +345,12 @@ private static final long serialVersionUID = 0L;
       if (!getTopic()
           .equals(other.getTopic())) return false;
     }
-    if (!getClientId()
-        .equals(other.getClientId())) return false;
     if (!getReceiptHandle()
         .equals(other.getReceiptHandle())) return false;
     if (!getMessageId()
         .equals(other.getMessageId())) return false;
+    if (getDeliveryAttempt()
+        != other.getDeliveryAttempt()) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -398,80 +370,80 @@ private static final long serialVersionUID = 0L;
       hash = (37 * hash) + TOPIC_FIELD_NUMBER;
       hash = (53 * hash) + getTopic().hashCode();
     }
-    hash = (37 * hash) + CLIENT_ID_FIELD_NUMBER;
-    hash = (53 * hash) + getClientId().hashCode();
     hash = (37 * hash) + RECEIPT_HANDLE_FIELD_NUMBER;
     hash = (53 * hash) + getReceiptHandle().hashCode();
     hash = (37 * hash) + MESSAGE_ID_FIELD_NUMBER;
     hash = (53 * hash) + getMessageId().hashCode();
+    hash = (37 * hash) + DELIVERY_ATTEMPT_FIELD_NUMBER;
+    hash = (53 * hash) + getDeliveryAttempt();
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
   }
 
-  public static apache.rocketmq.v2.AckMessageRequest parseFrom(
+  public static apache.rocketmq.v2.NackMessageRequest parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static apache.rocketmq.v2.AckMessageRequest parseFrom(
+  public static apache.rocketmq.v2.NackMessageRequest parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static apache.rocketmq.v2.AckMessageRequest parseFrom(
+  public static apache.rocketmq.v2.NackMessageRequest parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static apache.rocketmq.v2.AckMessageRequest parseFrom(
+  public static apache.rocketmq.v2.NackMessageRequest parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static apache.rocketmq.v2.AckMessageRequest parseFrom(byte[] data)
+  public static apache.rocketmq.v2.NackMessageRequest parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static apache.rocketmq.v2.AckMessageRequest parseFrom(
+  public static apache.rocketmq.v2.NackMessageRequest parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static apache.rocketmq.v2.AckMessageRequest parseFrom(java.io.InputStream input)
+  public static apache.rocketmq.v2.NackMessageRequest parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static apache.rocketmq.v2.AckMessageRequest parseFrom(
+  public static apache.rocketmq.v2.NackMessageRequest parseFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input, extensionRegistry);
   }
-  public static apache.rocketmq.v2.AckMessageRequest parseDelimitedFrom(java.io.InputStream input)
+  public static apache.rocketmq.v2.NackMessageRequest parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static apache.rocketmq.v2.AckMessageRequest parseDelimitedFrom(
+  public static apache.rocketmq.v2.NackMessageRequest parseDelimitedFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
   }
-  public static apache.rocketmq.v2.AckMessageRequest parseFrom(
+  public static apache.rocketmq.v2.NackMessageRequest parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static apache.rocketmq.v2.AckMessageRequest parseFrom(
+  public static apache.rocketmq.v2.NackMessageRequest parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -484,7 +456,7 @@ private static final long serialVersionUID = 0L;
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(apache.rocketmq.v2.AckMessageRequest prototype) {
+  public static Builder newBuilder(apache.rocketmq.v2.NackMessageRequest prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -500,26 +472,26 @@ private static final long serialVersionUID = 0L;
     return builder;
   }
   /**
-   * Protobuf type {@code apache.rocketmq.v2.AckMessageRequest}
+   * Protobuf type {@code apache.rocketmq.v2.NackMessageRequest}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:apache.rocketmq.v2.AckMessageRequest)
-      apache.rocketmq.v2.AckMessageRequestOrBuilder {
+      // @@protoc_insertion_point(builder_implements:apache.rocketmq.v2.NackMessageRequest)
+      apache.rocketmq.v2.NackMessageRequestOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_AckMessageRequest_descriptor;
+      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_NackMessageRequest_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_AckMessageRequest_fieldAccessorTable
+      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_NackMessageRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              apache.rocketmq.v2.AckMessageRequest.class, apache.rocketmq.v2.AckMessageRequest.Builder.class);
+              apache.rocketmq.v2.NackMessageRequest.class, apache.rocketmq.v2.NackMessageRequest.Builder.class);
     }
 
-    // Construct using apache.rocketmq.v2.AckMessageRequest.newBuilder()
+    // Construct using apache.rocketmq.v2.NackMessageRequest.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -549,29 +521,29 @@ private static final long serialVersionUID = 0L;
         topic_ = null;
         topicBuilder_ = null;
       }
-      clientId_ = "";
-
       receiptHandle_ = "";
 
       messageId_ = "";
 
+      deliveryAttempt_ = 0;
+
       return this;
     }
 
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_AckMessageRequest_descriptor;
+      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_NackMessageRequest_descriptor;
     }
 
     @java.lang.Override
-    public apache.rocketmq.v2.AckMessageRequest getDefaultInstanceForType() {
-      return apache.rocketmq.v2.AckMessageRequest.getDefaultInstance();
+    public apache.rocketmq.v2.NackMessageRequest getDefaultInstanceForType() {
+      return apache.rocketmq.v2.NackMessageRequest.getDefaultInstance();
     }
 
     @java.lang.Override
-    public apache.rocketmq.v2.AckMessageRequest build() {
-      apache.rocketmq.v2.AckMessageRequest result = buildPartial();
+    public apache.rocketmq.v2.NackMessageRequest build() {
+      apache.rocketmq.v2.NackMessageRequest result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -579,8 +551,8 @@ private static final long serialVersionUID = 0L;
     }
 
     @java.lang.Override
-    public apache.rocketmq.v2.AckMessageRequest buildPartial() {
-      apache.rocketmq.v2.AckMessageRequest result = new apache.rocketmq.v2.AckMessageRequest(this);
+    public apache.rocketmq.v2.NackMessageRequest buildPartial() {
+      apache.rocketmq.v2.NackMessageRequest result = new apache.rocketmq.v2.NackMessageRequest(this);
       if (groupBuilder_ == null) {
         result.group_ = group_;
       } else {
@@ -591,9 +563,9 @@ private static final long serialVersionUID = 0L;
       } else {
         result.topic_ = topicBuilder_.build();
       }
-      result.clientId_ = clientId_;
       result.receiptHandle_ = receiptHandle_;
       result.messageId_ = messageId_;
+      result.deliveryAttempt_ = deliveryAttempt_;
       onBuilt();
       return result;
     }
@@ -632,26 +604,22 @@ private static final long serialVersionUID = 0L;
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof apache.rocketmq.v2.AckMessageRequest) {
-        return mergeFrom((apache.rocketmq.v2.AckMessageRequest)other);
+      if (other instanceof apache.rocketmq.v2.NackMessageRequest) {
+        return mergeFrom((apache.rocketmq.v2.NackMessageRequest)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(apache.rocketmq.v2.AckMessageRequest other) {
-      if (other == apache.rocketmq.v2.AckMessageRequest.getDefaultInstance()) return this;
+    public Builder mergeFrom(apache.rocketmq.v2.NackMessageRequest other) {
+      if (other == apache.rocketmq.v2.NackMessageRequest.getDefaultInstance()) return this;
       if (other.hasGroup()) {
         mergeGroup(other.getGroup());
       }
       if (other.hasTopic()) {
         mergeTopic(other.getTopic());
       }
-      if (!other.getClientId().isEmpty()) {
-        clientId_ = other.clientId_;
-        onChanged();
-      }
       if (!other.getReceiptHandle().isEmpty()) {
         receiptHandle_ = other.receiptHandle_;
         onChanged();
@@ -660,6 +628,9 @@ private static final long serialVersionUID = 0L;
         messageId_ = other.messageId_;
         onChanged();
       }
+      if (other.getDeliveryAttempt() != 0) {
+        setDeliveryAttempt(other.getDeliveryAttempt());
+      }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
       return this;
@@ -675,11 +646,11 @@ private static final long serialVersionUID = 0L;
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      apache.rocketmq.v2.AckMessageRequest parsedMessage = null;
+      apache.rocketmq.v2.NackMessageRequest parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (apache.rocketmq.v2.AckMessageRequest) e.getUnfinishedMessage();
+        parsedMessage = (apache.rocketmq.v2.NackMessageRequest) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -927,85 +898,9 @@ private static final long serialVersionUID = 0L;
       return topicBuilder_;
     }
 
-    private java.lang.Object clientId_ = "";
-    /**
-     * <code>string client_id = 3;</code>
-     * @return The clientId.
-     */
-    public java.lang.String getClientId() {
-      java.lang.Object ref = clientId_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        clientId_ = s;
-        return s;
-      } else {
-        return (java.lang.String) ref;
-      }
-    }
-    /**
-     * <code>string client_id = 3;</code>
-     * @return The bytes for clientId.
-     */
-    public com.google.protobuf.ByteString
-        getClientIdBytes() {
-      java.lang.Object ref = clientId_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        clientId_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-    /**
-     * <code>string client_id = 3;</code>
-     * @param value The clientId to set.
-     * @return This builder for chaining.
-     */
-    public Builder setClientId(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      clientId_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string client_id = 3;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearClientId() {
-      
-      clientId_ = getDefaultInstance().getClientId();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string client_id = 3;</code>
-     * @param value The bytes for clientId to set.
-     * @return This builder for chaining.
-     */
-    public Builder setClientIdBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      clientId_ = value;
-      onChanged();
-      return this;
-    }
-
     private java.lang.Object receiptHandle_ = "";
     /**
-     * <code>string receipt_handle = 4;</code>
+     * <code>string receipt_handle = 3;</code>
      * @return The receiptHandle.
      */
     public java.lang.String getReceiptHandle() {
@@ -1021,7 +916,7 @@ private static final long serialVersionUID = 0L;
       }
     }
     /**
-     * <code>string receipt_handle = 4;</code>
+     * <code>string receipt_handle = 3;</code>
      * @return The bytes for receiptHandle.
      */
     public com.google.protobuf.ByteString
@@ -1038,7 +933,7 @@ private static final long serialVersionUID = 0L;
       }
     }
     /**
-     * <code>string receipt_handle = 4;</code>
+     * <code>string receipt_handle = 3;</code>
      * @param value The receiptHandle to set.
      * @return This builder for chaining.
      */
@@ -1053,7 +948,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>string receipt_handle = 4;</code>
+     * <code>string receipt_handle = 3;</code>
      * @return This builder for chaining.
      */
     public Builder clearReceiptHandle() {
@@ -1063,7 +958,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>string receipt_handle = 4;</code>
+     * <code>string receipt_handle = 3;</code>
      * @param value The bytes for receiptHandle to set.
      * @return This builder for chaining.
      */
@@ -1081,7 +976,7 @@ private static final long serialVersionUID = 0L;
 
     private java.lang.Object messageId_ = "";
     /**
-     * <code>string message_id = 5;</code>
+     * <code>string message_id = 4;</code>
      * @return The messageId.
      */
     public java.lang.String getMessageId() {
@@ -1097,7 +992,7 @@ private static final long serialVersionUID = 0L;
       }
     }
     /**
-     * <code>string message_id = 5;</code>
+     * <code>string message_id = 4;</code>
      * @return The bytes for messageId.
      */
     public com.google.protobuf.ByteString
@@ -1114,7 +1009,7 @@ private static final long serialVersionUID = 0L;
       }
     }
     /**
-     * <code>string message_id = 5;</code>
+     * <code>string message_id = 4;</code>
      * @param value The messageId to set.
      * @return This builder for chaining.
      */
@@ -1129,7 +1024,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>string message_id = 5;</code>
+     * <code>string message_id = 4;</code>
      * @return This builder for chaining.
      */
     public Builder clearMessageId() {
@@ -1139,7 +1034,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>string message_id = 5;</code>
+     * <code>string message_id = 4;</code>
      * @param value The bytes for messageId to set.
      * @return This builder for chaining.
      */
@@ -1154,6 +1049,37 @@ private static final long serialVersionUID = 0L;
       onChanged();
       return this;
     }
+
+    private int deliveryAttempt_ ;
+    /**
+     * <code>int32 delivery_attempt = 5;</code>
+     * @return The deliveryAttempt.
+     */
+    @java.lang.Override
+    public int getDeliveryAttempt() {
+      return deliveryAttempt_;
+    }
+    /**
+     * <code>int32 delivery_attempt = 5;</code>
+     * @param value The deliveryAttempt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setDeliveryAttempt(int value) {
+      
+      deliveryAttempt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int32 delivery_attempt = 5;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearDeliveryAttempt() {
+      
+      deliveryAttempt_ = 0;
+      onChanged();
+      return this;
+    }
     @java.lang.Override
     public final Builder setUnknownFields(
         final com.google.protobuf.UnknownFieldSet unknownFields) {
@@ -1167,41 +1093,41 @@ private static final long serialVersionUID = 0L;
     }
 
 
-    // @@protoc_insertion_point(builder_scope:apache.rocketmq.v2.AckMessageRequest)
+    // @@protoc_insertion_point(builder_scope:apache.rocketmq.v2.NackMessageRequest)
   }
 
-  // @@protoc_insertion_point(class_scope:apache.rocketmq.v2.AckMessageRequest)
-  private static final apache.rocketmq.v2.AckMessageRequest DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:apache.rocketmq.v2.NackMessageRequest)
+  private static final apache.rocketmq.v2.NackMessageRequest DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new apache.rocketmq.v2.AckMessageRequest();
+    DEFAULT_INSTANCE = new apache.rocketmq.v2.NackMessageRequest();
   }
 
-  public static apache.rocketmq.v2.AckMessageRequest getDefaultInstance() {
+  public static apache.rocketmq.v2.NackMessageRequest getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<AckMessageRequest>
-      PARSER = new com.google.protobuf.AbstractParser<AckMessageRequest>() {
+  private static final com.google.protobuf.Parser<NackMessageRequest>
+      PARSER = new com.google.protobuf.AbstractParser<NackMessageRequest>() {
     @java.lang.Override
-    public AckMessageRequest parsePartialFrom(
+    public NackMessageRequest parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new AckMessageRequest(input, extensionRegistry);
+      return new NackMessageRequest(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<AckMessageRequest> parser() {
+  public static com.google.protobuf.Parser<NackMessageRequest> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<AckMessageRequest> getParserForType() {
+  public com.google.protobuf.Parser<NackMessageRequest> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public apache.rocketmq.v2.AckMessageRequest getDefaultInstanceForType() {
+  public apache.rocketmq.v2.NackMessageRequest getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/src/main/java/apache/rocketmq/v2/AckMessageRequestOrBuilder.java b/src/main/java/apache/rocketmq/v2/NackMessageRequestOrBuilder.java
similarity index 74%
copy from src/main/java/apache/rocketmq/v2/AckMessageRequestOrBuilder.java
copy to src/main/java/apache/rocketmq/v2/NackMessageRequestOrBuilder.java
index 8e08548..7d9c491 100644
--- a/src/main/java/apache/rocketmq/v2/AckMessageRequestOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v2/NackMessageRequestOrBuilder.java
@@ -3,8 +3,8 @@
 
 package apache.rocketmq.v2;
 
-public interface AckMessageRequestOrBuilder extends
-    // @@protoc_insertion_point(interface_extends:apache.rocketmq.v2.AckMessageRequest)
+public interface NackMessageRequestOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:apache.rocketmq.v2.NackMessageRequest)
     com.google.protobuf.MessageOrBuilder {
 
   /**
@@ -38,38 +38,32 @@ public interface AckMessageRequestOrBuilder extends
   apache.rocketmq.v2.ResourceOrBuilder getTopicOrBuilder();
 
   /**
-   * <code>string client_id = 3;</code>
-   * @return The clientId.
-   */
-  java.lang.String getClientId();
-  /**
-   * <code>string client_id = 3;</code>
-   * @return The bytes for clientId.
-   */
-  com.google.protobuf.ByteString
-      getClientIdBytes();
-
-  /**
-   * <code>string receipt_handle = 4;</code>
+   * <code>string receipt_handle = 3;</code>
    * @return The receiptHandle.
    */
   java.lang.String getReceiptHandle();
   /**
-   * <code>string receipt_handle = 4;</code>
+   * <code>string receipt_handle = 3;</code>
    * @return The bytes for receiptHandle.
    */
   com.google.protobuf.ByteString
       getReceiptHandleBytes();
 
   /**
-   * <code>string message_id = 5;</code>
+   * <code>string message_id = 4;</code>
    * @return The messageId.
    */
   java.lang.String getMessageId();
   /**
-   * <code>string message_id = 5;</code>
+   * <code>string message_id = 4;</code>
    * @return The bytes for messageId.
    */
   com.google.protobuf.ByteString
       getMessageIdBytes();
+
+  /**
+   * <code>int32 delivery_attempt = 5;</code>
+   * @return The deliveryAttempt.
+   */
+  int getDeliveryAttempt();
 }
diff --git a/src/main/java/apache/rocketmq/v2/VerifyMessageResult.java b/src/main/java/apache/rocketmq/v2/NackMessageResponse.java
similarity index 72%
copy from src/main/java/apache/rocketmq/v2/VerifyMessageResult.java
copy to src/main/java/apache/rocketmq/v2/NackMessageResponse.java
index 47ece4a..e5f179a 100644
--- a/src/main/java/apache/rocketmq/v2/VerifyMessageResult.java
+++ b/src/main/java/apache/rocketmq/v2/NackMessageResponse.java
@@ -4,25 +4,25 @@
 package apache.rocketmq.v2;
 
 /**
- * Protobuf type {@code apache.rocketmq.v2.VerifyMessageResult}
+ * Protobuf type {@code apache.rocketmq.v2.NackMessageResponse}
  */
-public final class VerifyMessageResult extends
+public final class NackMessageResponse extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:apache.rocketmq.v2.VerifyMessageResult)
-    VerifyMessageResultOrBuilder {
+    // @@protoc_insertion_point(message_implements:apache.rocketmq.v2.NackMessageResponse)
+    NackMessageResponseOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use VerifyMessageResult.newBuilder() to construct.
-  private VerifyMessageResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use NackMessageResponse.newBuilder() to construct.
+  private NackMessageResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private VerifyMessageResult() {
+  private NackMessageResponse() {
   }
 
   @java.lang.Override
   @SuppressWarnings({"unused"})
   protected java.lang.Object newInstance(
       UnusedPrivateParameter unused) {
-    return new VerifyMessageResult();
+    return new NackMessageResponse();
   }
 
   @java.lang.Override
@@ -30,7 +30,7 @@ private static final long serialVersionUID = 0L;
   getUnknownFields() {
     return this.unknownFields;
   }
-  private VerifyMessageResult(
+  private NackMessageResponse(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -48,12 +48,7 @@ private static final long serialVersionUID = 0L;
           case 0:
             done = true;
             break;
-          case 8: {
-
-            commandId_ = input.readInt64();
-            break;
-          }
-          case 18: {
+          case 10: {
             apache.rocketmq.v2.Status.Builder subBuilder = null;
             if (status_ != null) {
               subBuilder = status_.toBuilder();
@@ -87,32 +82,21 @@ private static final long serialVersionUID = 0L;
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_VerifyMessageResult_descriptor;
+    return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_NackMessageResponse_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_VerifyMessageResult_fieldAccessorTable
+    return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_NackMessageResponse_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            apache.rocketmq.v2.VerifyMessageResult.class, apache.rocketmq.v2.VerifyMessageResult.Builder.class);
-  }
-
-  public static final int COMMAND_ID_FIELD_NUMBER = 1;
-  private long commandId_;
-  /**
-   * <code>int64 command_id = 1;</code>
-   * @return The commandId.
-   */
-  @java.lang.Override
-  public long getCommandId() {
-    return commandId_;
+            apache.rocketmq.v2.NackMessageResponse.class, apache.rocketmq.v2.NackMessageResponse.Builder.class);
   }
 
-  public static final int STATUS_FIELD_NUMBER = 2;
+  public static final int STATUS_FIELD_NUMBER = 1;
   private apache.rocketmq.v2.Status status_;
   /**
-   * <code>.apache.rocketmq.v2.Status status = 2;</code>
+   * <code>.apache.rocketmq.v2.Status status = 1;</code>
    * @return Whether the status field is set.
    */
   @java.lang.Override
@@ -120,7 +104,7 @@ private static final long serialVersionUID = 0L;
     return status_ != null;
   }
   /**
-   * <code>.apache.rocketmq.v2.Status status = 2;</code>
+   * <code>.apache.rocketmq.v2.Status status = 1;</code>
    * @return The status.
    */
   @java.lang.Override
@@ -128,7 +112,7 @@ private static final long serialVersionUID = 0L;
     return status_ == null ? apache.rocketmq.v2.Status.getDefaultInstance() : status_;
   }
   /**
-   * <code>.apache.rocketmq.v2.Status status = 2;</code>
+   * <code>.apache.rocketmq.v2.Status status = 1;</code>
    */
   @java.lang.Override
   public apache.rocketmq.v2.StatusOrBuilder getStatusOrBuilder() {
@@ -149,11 +133,8 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (commandId_ != 0L) {
-      output.writeInt64(1, commandId_);
-    }
     if (status_ != null) {
-      output.writeMessage(2, getStatus());
+      output.writeMessage(1, getStatus());
     }
     unknownFields.writeTo(output);
   }
@@ -164,13 +145,9 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (commandId_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(1, commandId_);
-    }
     if (status_ != null) {
       size += com.google.protobuf.CodedOutputStream
-        .computeMessageSize(2, getStatus());
+        .computeMessageSize(1, getStatus());
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -182,13 +159,11 @@ private static final long serialVersionUID = 0L;
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof apache.rocketmq.v2.VerifyMessageResult)) {
+    if (!(obj instanceof apache.rocketmq.v2.NackMessageResponse)) {
       return super.equals(obj);
     }
-    apache.rocketmq.v2.VerifyMessageResult other = (apache.rocketmq.v2.VerifyMessageResult) obj;
+    apache.rocketmq.v2.NackMessageResponse other = (apache.rocketmq.v2.NackMessageResponse) obj;
 
-    if (getCommandId()
-        != other.getCommandId()) return false;
     if (hasStatus() != other.hasStatus()) return false;
     if (hasStatus()) {
       if (!getStatus()
@@ -205,9 +180,6 @@ private static final long serialVersionUID = 0L;
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + COMMAND_ID_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getCommandId());
     if (hasStatus()) {
       hash = (37 * hash) + STATUS_FIELD_NUMBER;
       hash = (53 * hash) + getStatus().hashCode();
@@ -217,69 +189,69 @@ private static final long serialVersionUID = 0L;
     return hash;
   }
 
-  public static apache.rocketmq.v2.VerifyMessageResult parseFrom(
+  public static apache.rocketmq.v2.NackMessageResponse parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static apache.rocketmq.v2.VerifyMessageResult parseFrom(
+  public static apache.rocketmq.v2.NackMessageResponse parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static apache.rocketmq.v2.VerifyMessageResult parseFrom(
+  public static apache.rocketmq.v2.NackMessageResponse parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static apache.rocketmq.v2.VerifyMessageResult parseFrom(
+  public static apache.rocketmq.v2.NackMessageResponse parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static apache.rocketmq.v2.VerifyMessageResult parseFrom(byte[] data)
+  public static apache.rocketmq.v2.NackMessageResponse parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static apache.rocketmq.v2.VerifyMessageResult parseFrom(
+  public static apache.rocketmq.v2.NackMessageResponse parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static apache.rocketmq.v2.VerifyMessageResult parseFrom(java.io.InputStream input)
+  public static apache.rocketmq.v2.NackMessageResponse parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static apache.rocketmq.v2.VerifyMessageResult parseFrom(
+  public static apache.rocketmq.v2.NackMessageResponse parseFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input, extensionRegistry);
   }
-  public static apache.rocketmq.v2.VerifyMessageResult parseDelimitedFrom(java.io.InputStream input)
+  public static apache.rocketmq.v2.NackMessageResponse parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static apache.rocketmq.v2.VerifyMessageResult parseDelimitedFrom(
+  public static apache.rocketmq.v2.NackMessageResponse parseDelimitedFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
   }
-  public static apache.rocketmq.v2.VerifyMessageResult parseFrom(
+  public static apache.rocketmq.v2.NackMessageResponse parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static apache.rocketmq.v2.VerifyMessageResult parseFrom(
+  public static apache.rocketmq.v2.NackMessageResponse parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -292,7 +264,7 @@ private static final long serialVersionUID = 0L;
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(apache.rocketmq.v2.VerifyMessageResult prototype) {
+  public static Builder newBuilder(apache.rocketmq.v2.NackMessageResponse prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -308,26 +280,26 @@ private static final long serialVersionUID = 0L;
     return builder;
   }
   /**
-   * Protobuf type {@code apache.rocketmq.v2.VerifyMessageResult}
+   * Protobuf type {@code apache.rocketmq.v2.NackMessageResponse}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:apache.rocketmq.v2.VerifyMessageResult)
-      apache.rocketmq.v2.VerifyMessageResultOrBuilder {
+      // @@protoc_insertion_point(builder_implements:apache.rocketmq.v2.NackMessageResponse)
+      apache.rocketmq.v2.NackMessageResponseOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_VerifyMessageResult_descriptor;
+      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_NackMessageResponse_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_VerifyMessageResult_fieldAccessorTable
+      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_NackMessageResponse_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              apache.rocketmq.v2.VerifyMessageResult.class, apache.rocketmq.v2.VerifyMessageResult.Builder.class);
+              apache.rocketmq.v2.NackMessageResponse.class, apache.rocketmq.v2.NackMessageResponse.Builder.class);
     }
 
-    // Construct using apache.rocketmq.v2.VerifyMessageResult.newBuilder()
+    // Construct using apache.rocketmq.v2.NackMessageResponse.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -345,8 +317,6 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      commandId_ = 0L;
-
       if (statusBuilder_ == null) {
         status_ = null;
       } else {
@@ -359,17 +329,17 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_VerifyMessageResult_descriptor;
+      return apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_NackMessageResponse_descriptor;
     }
 
     @java.lang.Override
-    public apache.rocketmq.v2.VerifyMessageResult getDefaultInstanceForType() {
-      return apache.rocketmq.v2.VerifyMessageResult.getDefaultInstance();
+    public apache.rocketmq.v2.NackMessageResponse getDefaultInstanceForType() {
+      return apache.rocketmq.v2.NackMessageResponse.getDefaultInstance();
     }
 
     @java.lang.Override
-    public apache.rocketmq.v2.VerifyMessageResult build() {
-      apache.rocketmq.v2.VerifyMessageResult result = buildPartial();
+    public apache.rocketmq.v2.NackMessageResponse build() {
+      apache.rocketmq.v2.NackMessageResponse result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -377,9 +347,8 @@ private static final long serialVersionUID = 0L;
     }
 
     @java.lang.Override
-    public apache.rocketmq.v2.VerifyMessageResult buildPartial() {
-      apache.rocketmq.v2.VerifyMessageResult result = new apache.rocketmq.v2.VerifyMessageResult(this);
-      result.commandId_ = commandId_;
+    public apache.rocketmq.v2.NackMessageResponse buildPartial() {
+      apache.rocketmq.v2.NackMessageResponse result = new apache.rocketmq.v2.NackMessageResponse(this);
       if (statusBuilder_ == null) {
         result.status_ = status_;
       } else {
@@ -423,19 +392,16 @@ private static final long serialVersionUID = 0L;
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof apache.rocketmq.v2.VerifyMessageResult) {
-        return mergeFrom((apache.rocketmq.v2.VerifyMessageResult)other);
+      if (other instanceof apache.rocketmq.v2.NackMessageResponse) {
+        return mergeFrom((apache.rocketmq.v2.NackMessageResponse)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(apache.rocketmq.v2.VerifyMessageResult other) {
-      if (other == apache.rocketmq.v2.VerifyMessageResult.getDefaultInstance()) return this;
-      if (other.getCommandId() != 0L) {
-        setCommandId(other.getCommandId());
-      }
+    public Builder mergeFrom(apache.rocketmq.v2.NackMessageResponse other) {
+      if (other == apache.rocketmq.v2.NackMessageResponse.getDefaultInstance()) return this;
       if (other.hasStatus()) {
         mergeStatus(other.getStatus());
       }
@@ -454,11 +420,11 @@ private static final long serialVersionUID = 0L;
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      apache.rocketmq.v2.VerifyMessageResult parsedMessage = null;
+      apache.rocketmq.v2.NackMessageResponse parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (apache.rocketmq.v2.VerifyMessageResult) e.getUnfinishedMessage();
+        parsedMessage = (apache.rocketmq.v2.NackMessageResponse) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -468,49 +434,18 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
-    private long commandId_ ;
-    /**
-     * <code>int64 command_id = 1;</code>
-     * @return The commandId.
-     */
-    @java.lang.Override
-    public long getCommandId() {
-      return commandId_;
-    }
-    /**
-     * <code>int64 command_id = 1;</code>
-     * @param value The commandId to set.
-     * @return This builder for chaining.
-     */
-    public Builder setCommandId(long value) {
-      
-      commandId_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 command_id = 1;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearCommandId() {
-      
-      commandId_ = 0L;
-      onChanged();
-      return this;
-    }
-
     private apache.rocketmq.v2.Status status_;
     private com.google.protobuf.SingleFieldBuilderV3<
         apache.rocketmq.v2.Status, apache.rocketmq.v2.Status.Builder, apache.rocketmq.v2.StatusOrBuilder> statusBuilder_;
     /**
-     * <code>.apache.rocketmq.v2.Status status = 2;</code>
+     * <code>.apache.rocketmq.v2.Status status = 1;</code>
      * @return Whether the status field is set.
      */
     public boolean hasStatus() {
       return statusBuilder_ != null || status_ != null;
     }
     /**
-     * <code>.apache.rocketmq.v2.Status status = 2;</code>
+     * <code>.apache.rocketmq.v2.Status status = 1;</code>
      * @return The status.
      */
     public apache.rocketmq.v2.Status getStatus() {
@@ -521,7 +456,7 @@ private static final long serialVersionUID = 0L;
       }
     }
     /**
-     * <code>.apache.rocketmq.v2.Status status = 2;</code>
+     * <code>.apache.rocketmq.v2.Status status = 1;</code>
      */
     public Builder setStatus(apache.rocketmq.v2.Status value) {
       if (statusBuilder_ == null) {
@@ -537,7 +472,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>.apache.rocketmq.v2.Status status = 2;</code>
+     * <code>.apache.rocketmq.v2.Status status = 1;</code>
      */
     public Builder setStatus(
         apache.rocketmq.v2.Status.Builder builderForValue) {
@@ -551,7 +486,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>.apache.rocketmq.v2.Status status = 2;</code>
+     * <code>.apache.rocketmq.v2.Status status = 1;</code>
      */
     public Builder mergeStatus(apache.rocketmq.v2.Status value) {
       if (statusBuilder_ == null) {
@@ -569,7 +504,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>.apache.rocketmq.v2.Status status = 2;</code>
+     * <code>.apache.rocketmq.v2.Status status = 1;</code>
      */
     public Builder clearStatus() {
       if (statusBuilder_ == null) {
@@ -583,7 +518,7 @@ private static final long serialVersionUID = 0L;
       return this;
     }
     /**
-     * <code>.apache.rocketmq.v2.Status status = 2;</code>
+     * <code>.apache.rocketmq.v2.Status status = 1;</code>
      */
     public apache.rocketmq.v2.Status.Builder getStatusBuilder() {
       
@@ -591,7 +526,7 @@ private static final long serialVersionUID = 0L;
       return getStatusFieldBuilder().getBuilder();
     }
     /**
-     * <code>.apache.rocketmq.v2.Status status = 2;</code>
+     * <code>.apache.rocketmq.v2.Status status = 1;</code>
      */
     public apache.rocketmq.v2.StatusOrBuilder getStatusOrBuilder() {
       if (statusBuilder_ != null) {
@@ -602,7 +537,7 @@ private static final long serialVersionUID = 0L;
       }
     }
     /**
-     * <code>.apache.rocketmq.v2.Status status = 2;</code>
+     * <code>.apache.rocketmq.v2.Status status = 1;</code>
      */
     private com.google.protobuf.SingleFieldBuilderV3<
         apache.rocketmq.v2.Status, apache.rocketmq.v2.Status.Builder, apache.rocketmq.v2.StatusOrBuilder> 
@@ -630,41 +565,41 @@ private static final long serialVersionUID = 0L;
     }
 
 
-    // @@protoc_insertion_point(builder_scope:apache.rocketmq.v2.VerifyMessageResult)
+    // @@protoc_insertion_point(builder_scope:apache.rocketmq.v2.NackMessageResponse)
   }
 
-  // @@protoc_insertion_point(class_scope:apache.rocketmq.v2.VerifyMessageResult)
-  private static final apache.rocketmq.v2.VerifyMessageResult DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:apache.rocketmq.v2.NackMessageResponse)
+  private static final apache.rocketmq.v2.NackMessageResponse DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new apache.rocketmq.v2.VerifyMessageResult();
+    DEFAULT_INSTANCE = new apache.rocketmq.v2.NackMessageResponse();
   }
 
-  public static apache.rocketmq.v2.VerifyMessageResult getDefaultInstance() {
+  public static apache.rocketmq.v2.NackMessageResponse getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<VerifyMessageResult>
-      PARSER = new com.google.protobuf.AbstractParser<VerifyMessageResult>() {
+  private static final com.google.protobuf.Parser<NackMessageResponse>
+      PARSER = new com.google.protobuf.AbstractParser<NackMessageResponse>() {
     @java.lang.Override
-    public VerifyMessageResult parsePartialFrom(
+    public NackMessageResponse parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new VerifyMessageResult(input, extensionRegistry);
+      return new NackMessageResponse(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<VerifyMessageResult> parser() {
+  public static com.google.protobuf.Parser<NackMessageResponse> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<VerifyMessageResult> getParserForType() {
+  public com.google.protobuf.Parser<NackMessageResponse> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public apache.rocketmq.v2.VerifyMessageResult getDefaultInstanceForType() {
+  public apache.rocketmq.v2.NackMessageResponse getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/src/main/java/apache/rocketmq/v2/VerifyMessageResultOrBuilder.java b/src/main/java/apache/rocketmq/v2/NackMessageResponseOrBuilder.java
similarity index 57%
copy from src/main/java/apache/rocketmq/v2/VerifyMessageResultOrBuilder.java
copy to src/main/java/apache/rocketmq/v2/NackMessageResponseOrBuilder.java
index 1dc8f95..93f1956 100644
--- a/src/main/java/apache/rocketmq/v2/VerifyMessageResultOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v2/NackMessageResponseOrBuilder.java
@@ -3,28 +3,22 @@
 
 package apache.rocketmq.v2;
 
-public interface VerifyMessageResultOrBuilder extends
-    // @@protoc_insertion_point(interface_extends:apache.rocketmq.v2.VerifyMessageResult)
+public interface NackMessageResponseOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:apache.rocketmq.v2.NackMessageResponse)
     com.google.protobuf.MessageOrBuilder {
 
   /**
-   * <code>int64 command_id = 1;</code>
-   * @return The commandId.
-   */
-  long getCommandId();
-
-  /**
-   * <code>.apache.rocketmq.v2.Status status = 2;</code>
+   * <code>.apache.rocketmq.v2.Status status = 1;</code>
    * @return Whether the status field is set.
    */
   boolean hasStatus();
   /**
-   * <code>.apache.rocketmq.v2.Status status = 2;</code>
+   * <code>.apache.rocketmq.v2.Status status = 1;</code>
    * @return The status.
    */
   apache.rocketmq.v2.Status getStatus();
   /**
-   * <code>.apache.rocketmq.v2.Status status = 2;</code>
+   * <code>.apache.rocketmq.v2.Status status = 1;</code>
    */
   apache.rocketmq.v2.StatusOrBuilder getStatusOrBuilder();
 }
diff --git a/src/main/java/apache/rocketmq/v2/NotifyClientTerminationRequest.java b/src/main/java/apache/rocketmq/v2/NotifyClientTerminationRequest.java
index 56a8bfc..e6056d5 100644
--- a/src/main/java/apache/rocketmq/v2/NotifyClientTerminationRequest.java
+++ b/src/main/java/apache/rocketmq/v2/NotifyClientTerminationRequest.java
@@ -16,7 +16,6 @@ private static final long serialVersionUID = 0L;
     super(builder);
   }
   private NotifyClientTerminationRequest() {
-    clientId_ = "";
   }
 
   @java.lang.Override
@@ -39,6 +38,7 @@ private static final long serialVersionUID = 0L;
     if (extensionRegistry == null) {
       throw new java.lang.NullPointerException();
     }
+    int mutable_bitField0_ = 0;
     com.google.protobuf.UnknownFieldSet.Builder unknownFields =
         com.google.protobuf.UnknownFieldSet.newBuilder();
     try {
@@ -51,7 +51,7 @@ private static final long serialVersionUID = 0L;
             break;
           case 10: {
             apache.rocketmq.v2.Resource.Builder subBuilder = null;
-            if (group_ != null) {
+            if (((bitField0_ & 0x00000001) != 0)) {
               subBuilder = group_.toBuilder();
             }
             group_ = input.readMessage(apache.rocketmq.v2.Resource.parser(), extensionRegistry);
@@ -59,13 +59,7 @@ private static final long serialVersionUID = 0L;
               subBuilder.mergeFrom(group_);
               group_ = subBuilder.buildPartial();
             }
-
-            break;
-          }
-          case 18: {
-            java.lang.String s = input.readStringRequireUtf8();
-
-            clientId_ = s;
+            bitField0_ |= 0x00000001;
             break;
           }
           default: {
@@ -100,18 +94,27 @@ private static final long serialVersionUID = 0L;
             apache.rocketmq.v2.NotifyClientTerminationRequest.class, apache.rocketmq.v2.NotifyClientTerminationRequest.Builder.class);
   }
 
+  private int bitField0_;
   public static final int GROUP_FIELD_NUMBER = 1;
   private apache.rocketmq.v2.Resource group_;
   /**
-   * <code>.apache.rocketmq.v2.Resource group = 1;</code>
+   * <pre>
+   * Consumer group, which is absent for producer.
+   * </pre>
+   *
+   * <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
    * @return Whether the group field is set.
    */
   @java.lang.Override
... 15912 lines suppressed ...