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:49 UTC

[rocketmq-apis] 16/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 64a75c518804216c76f2336663b877f6e74687de
Author: 凌楚 <ya...@alibaba-inc.com>
AuthorDate: Thu Apr 28 14:37:12 2022 +0800

    Apply IDL update
---
 .../v2/ChangeInvisibleDurationRequest.java         | 166 +++++++++++
 .../ChangeInvisibleDurationRequestOrBuilder.java   |  20 ++
 src/main/java/apache/rocketmq/v2/MQService.java    | 326 +++++++++++----------
 .../apache/rocketmq/v2/QueryAssignmentRequest.java | 188 ++++++++++++
 .../v2/QueryAssignmentRequestOrBuilder.java        |  15 +
 .../java/apache/rocketmq/v2/QueryRouteRequest.java | 188 ++++++++++++
 .../rocketmq/v2/QueryRouteRequestOrBuilder.java    |  15 +
 .../apache/rocketmq/v2/ReceiveMessageRequest.java  |  81 +++++
 .../v2/ReceiveMessageRequestOrBuilder.java         |  10 +
 src/main/java/apache/rocketmq/v2/Settings.java     | 101 ++++---
 .../java/apache/rocketmq/v2/SettingsOrBuilder.java |   6 +-
 .../proto/apache/rocketmq/v2/service.proto         |  13 +-
 12 files changed, 915 insertions(+), 214 deletions(-)

diff --git a/src/main/java/apache/rocketmq/v2/ChangeInvisibleDurationRequest.java b/src/main/java/apache/rocketmq/v2/ChangeInvisibleDurationRequest.java
index 1c67443..281e50d 100644
--- a/src/main/java/apache/rocketmq/v2/ChangeInvisibleDurationRequest.java
+++ b/src/main/java/apache/rocketmq/v2/ChangeInvisibleDurationRequest.java
@@ -17,6 +17,7 @@ private static final long serialVersionUID = 0L;
   }
   private ChangeInvisibleDurationRequest() {
     receiptHandle_ = "";
+    messageId_ = "";
   }
 
   @java.lang.Override
@@ -94,6 +95,12 @@ private static final long serialVersionUID = 0L;
 
             break;
           }
+          case 42: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            messageId_ = s;
+            break;
+          }
           default: {
             if (!parseUnknownField(
                 input, unknownFields, extensionRegistry, tag)) {
@@ -262,6 +269,52 @@ private static final long serialVersionUID = 0L;
     return getInvisibleDuration();
   }
 
+  public static final int MESSAGE_ID_FIELD_NUMBER = 5;
+  private volatile java.lang.Object messageId_;
+  /**
+   * <pre>
+   * For message tracing
+   * </pre>
+   *
+   * <code>string message_id = 5;</code>
+   * @return The messageId.
+   */
+  @java.lang.Override
+  public java.lang.String getMessageId() {
+    java.lang.Object ref = messageId_;
+    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();
+      messageId_ = s;
+      return s;
+    }
+  }
+  /**
+   * <pre>
+   * For message tracing
+   * </pre>
+   *
+   * <code>string message_id = 5;</code>
+   * @return The bytes for messageId.
+   */
+  @java.lang.Override
+  public com.google.protobuf.ByteString
+      getMessageIdBytes() {
+    java.lang.Object ref = messageId_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      messageId_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
   private byte memoizedIsInitialized = -1;
   @java.lang.Override
   public final boolean isInitialized() {
@@ -288,6 +341,9 @@ private static final long serialVersionUID = 0L;
     if (invisibleDuration_ != null) {
       output.writeMessage(4, getInvisibleDuration());
     }
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 5, messageId_);
+    }
     unknownFields.writeTo(output);
   }
 
@@ -312,6 +368,9 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(4, getInvisibleDuration());
     }
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(messageId_)) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, messageId_);
+    }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
     return size;
@@ -344,6 +403,8 @@ private static final long serialVersionUID = 0L;
       if (!getInvisibleDuration()
           .equals(other.getInvisibleDuration())) return false;
     }
+    if (!getMessageId()
+        .equals(other.getMessageId())) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -369,6 +430,8 @@ private static final long serialVersionUID = 0L;
       hash = (37 * hash) + INVISIBLE_DURATION_FIELD_NUMBER;
       hash = (53 * hash) + getInvisibleDuration().hashCode();
     }
+    hash = (37 * hash) + MESSAGE_ID_FIELD_NUMBER;
+    hash = (53 * hash) + getMessageId().hashCode();
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
@@ -522,6 +585,8 @@ private static final long serialVersionUID = 0L;
         invisibleDuration_ = null;
         invisibleDurationBuilder_ = null;
       }
+      messageId_ = "";
+
       return this;
     }
 
@@ -564,6 +629,7 @@ private static final long serialVersionUID = 0L;
       } else {
         result.invisibleDuration_ = invisibleDurationBuilder_.build();
       }
+      result.messageId_ = messageId_;
       onBuilt();
       return result;
     }
@@ -625,6 +691,10 @@ private static final long serialVersionUID = 0L;
       if (other.hasInvisibleDuration()) {
         mergeInvisibleDuration(other.getInvisibleDuration());
       }
+      if (!other.getMessageId().isEmpty()) {
+        messageId_ = other.messageId_;
+        onChanged();
+      }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
       return this;
@@ -1142,6 +1212,102 @@ private static final long serialVersionUID = 0L;
       }
       return invisibleDurationBuilder_;
     }
+
+    private java.lang.Object messageId_ = "";
+    /**
+     * <pre>
+     * For message tracing
+     * </pre>
+     *
+     * <code>string message_id = 5;</code>
+     * @return The messageId.
+     */
+    public java.lang.String getMessageId() {
+      java.lang.Object ref = messageId_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        messageId_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <pre>
+     * For message tracing
+     * </pre>
+     *
+     * <code>string message_id = 5;</code>
+     * @return The bytes for messageId.
+     */
+    public com.google.protobuf.ByteString
+        getMessageIdBytes() {
+      java.lang.Object ref = messageId_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        messageId_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <pre>
+     * For message tracing
+     * </pre>
+     *
+     * <code>string message_id = 5;</code>
+     * @param value The messageId to set.
+     * @return This builder for chaining.
+     */
+    public Builder setMessageId(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      messageId_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * For message tracing
+     * </pre>
+     *
+     * <code>string message_id = 5;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearMessageId() {
+      
+      messageId_ = getDefaultInstance().getMessageId();
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * For message tracing
+     * </pre>
+     *
+     * <code>string message_id = 5;</code>
+     * @param value The bytes for messageId to set.
+     * @return This builder for chaining.
+     */
+    public Builder setMessageIdBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      messageId_ = value;
+      onChanged();
+      return this;
+    }
     @java.lang.Override
     public final Builder setUnknownFields(
         final com.google.protobuf.UnknownFieldSet unknownFields) {
diff --git a/src/main/java/apache/rocketmq/v2/ChangeInvisibleDurationRequestOrBuilder.java b/src/main/java/apache/rocketmq/v2/ChangeInvisibleDurationRequestOrBuilder.java
index 452ae1f..93999e4 100644
--- a/src/main/java/apache/rocketmq/v2/ChangeInvisibleDurationRequestOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v2/ChangeInvisibleDurationRequestOrBuilder.java
@@ -83,4 +83,24 @@ public interface ChangeInvisibleDurationRequestOrBuilder extends
    * <code>.google.protobuf.Duration invisible_duration = 4;</code>
    */
   com.google.protobuf.DurationOrBuilder getInvisibleDurationOrBuilder();
+
+  /**
+   * <pre>
+   * For message tracing
+   * </pre>
+   *
+   * <code>string message_id = 5;</code>
+   * @return The messageId.
+   */
+  java.lang.String getMessageId();
+  /**
+   * <pre>
+   * For message tracing
+   * </pre>
+   *
+   * <code>string message_id = 5;</code>
+   * @return The bytes for messageId.
+   */
+  com.google.protobuf.ByteString
+      getMessageIdBytes();
 }
diff --git a/src/main/java/apache/rocketmq/v2/MQService.java b/src/main/java/apache/rocketmq/v2/MQService.java
index 1a2c012..f20ced7 100644
--- a/src/main/java/apache/rocketmq/v2/MQService.java
+++ b/src/main/java/apache/rocketmq/v2/MQService.java
@@ -191,164 +191,168 @@ 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" +
-      "#apache/rocketmq/v2/definition.proto\"@\n\021" +
+      "#apache/rocketmq/v2/definition.proto\"r\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\"C\n\022SendMessag" +
-      "eRequest\022-\n\010messages\030\001 \003(\0132\033.apache.rock" +
-      "etmq.v2.Message\"t\n\023SendMessageResponse\022*" +
-      "\n\006status\030\001 \001(\0132\032.apache.rocketmq.v2.Stat" +
-      "us\0221\n\010receipts\030\002 \003(\0132\037.apache.rocketmq.v" +
-      "2.SendReceipt\"r\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\"z\n\027QueryAssignmentResponse\022*\n\006" +
+      "e.rocketmq.v2.Resource\0220\n\tendpoints\030\002 \001(" +
+      "\0132\035.apache.rocketmq.v2.Endpoints\"z\n\022Quer" +
+      "yRouteResponse\022*\n\006status\030\001 \001(\0132\032.apache." +
+      "rocketmq.v2.Status\0228\n\016message_queues\030\002 \003" +
+      "(\0132 .apache.rocketmq.v2.MessageQueue\"C\n\022" +
+      "SendMessageRequest\022-\n\010messages\030\001 \003(\0132\033.a" +
+      "pache.rocketmq.v2.Message\"t\n\023SendMessage" +
+      "Response\022*\n\006status\030\001 \001(\0132\032.apache.rocket" +
+      "mq.v2.Status\0221\n\010receipts\030\002 \003(\0132\037.apache." +
+      "rocketmq.v2.SendReceipt\"\244\001\n\026QueryAssignm" +
+      "entRequest\022+\n\005topic\030\001 \001(\0132\034.apache.rocke" +
+      "tmq.v2.Resource\022+\n\005group\030\002 \001(\0132\034.apache." +
+      "rocketmq.v2.Resource\0220\n\tendpoints\030\003 \001(\0132" +
+      "\035.apache.rocketmq.v2.Endpoints\"z\n\027QueryA" +
+      "ssignmentResponse\022*\n\006status\030\001 \001(\0132\032.apac" +
+      "he.rocketmq.v2.Status\0223\n\013assignments\030\002 \003" +
+      "(\0132\036.apache.rocketmq.v2.Assignment\"\271\002\n\025R" +
+      "eceiveMessageRequest\022+\n\005group\030\001 \001(\0132\034.ap" +
+      "ache.rocketmq.v2.Resource\0227\n\rmessage_que" +
+      "ue\030\002 \001(\0132 .apache.rocketmq.v2.MessageQue" +
+      "ue\022?\n\021filter_expression\030\003 \001(\0132$.apache.r" +
+      "ocketmq.v2.FilterExpression\022\022\n\nbatch_siz" +
+      "e\030\004 \001(\005\022:\n\022invisible_duration\030\005 \001(\0132\031.go" +
+      "ogle.protobuf.DurationH\000\210\001\001\022\022\n\nauto_rene" +
+      "w\030\006 \001(\010B\025\n\023_invisible_duration\"\201\001\n\026Recei" +
+      "veMessageResponse\022,\n\006status\030\001 \001(\0132\032.apac" +
+      "he.rocketmq.v2.StatusH\000\022.\n\007message\030\002 \001(\013" +
+      "2\033.apache.rocketmq.v2.MessageH\000B\t\n\007conte" +
+      "nt\"=\n\017AckMessageEntry\022\022\n\nmessage_id\030\001 \001(" +
+      "\t\022\026\n\016receipt_handle\030\002 \001(\t\"\243\001\n\021AckMessage" +
+      "Request\022+\n\005group\030\001 \001(\0132\034.apache.rocketmq" +
+      ".v2.Resource\022+\n\005topic\030\002 \001(\0132\034.apache.roc" +
+      "ketmq.v2.Resource\0224\n\007entries\030\003 \003(\0132#.apa" +
+      "che.rocketmq.v2.AckMessageEntry\"o\n\025AckMe" +
+      "ssageResultEntry\022\022\n\nmessage_id\030\001 \001(\t\022\026\n\016" +
+      "receipt_handle\030\002 \001(\t\022*\n\006status\030\003 \001(\0132\032.a" +
+      "pache.rocketmq.v2.Status\"|\n\022AckMessageRe" +
+      "sponse\022*\n\006status\030\001 \001(\0132\032.apache.rocketmq" +
+      ".v2.Status\022:\n\007entries\030\002 \003(\0132).apache.roc" +
+      "ketmq.v2.AckMessageResultEntry\"\264\001\n\022NackM" +
+      "essageRequest\022+\n\005group\030\001 \001(\0132\034.apache.ro" +
+      "cketmq.v2.Resource\022+\n\005topic\030\002 \001(\0132\034.apac" +
+      "he.rocketmq.v2.Resource\022\026\n\016receipt_handl" +
+      "e\030\003 \001(\t\022\022\n\nmessage_id\030\004 \001(\t\022\030\n\020delivery_" +
+      "attempt\030\005 \001(\005\"A\n\023NackMessageResponse\022*\n\006" +
       "status\030\001 \001(\0132\032.apache.rocketmq.v2.Status" +
-      "\0223\n\013assignments\030\002 \003(\0132\036.apache.rocketmq." +
-      "v2.Assignment\"\245\002\n\025ReceiveMessageRequest\022" +
-      "+\n\005group\030\001 \001(\0132\034.apache.rocketmq.v2.Reso" +
-      "urce\0227\n\rmessage_queue\030\002 \001(\0132 .apache.roc" +
-      "ketmq.v2.MessageQueue\022?\n\021filter_expressi" +
-      "on\030\003 \001(\0132$.apache.rocketmq.v2.FilterExpr" +
-      "ession\022\022\n\nbatch_size\030\004 \001(\005\022:\n\022invisible_" +
-      "duration\030\005 \001(\0132\031.google.protobuf.Duratio" +
-      "nH\000\210\001\001B\025\n\023_invisible_duration\"\201\001\n\026Receiv" +
-      "eMessageResponse\022,\n\006status\030\001 \001(\0132\032.apach" +
-      "e.rocketmq.v2.StatusH\000\022.\n\007message\030\002 \001(\0132" +
-      "\033.apache.rocketmq.v2.MessageH\000B\t\n\007conten" +
-      "t\"=\n\017AckMessageEntry\022\022\n\nmessage_id\030\001 \001(\t" +
-      "\022\026\n\016receipt_handle\030\002 \001(\t\"\243\001\n\021AckMessageR" +
-      "equest\022+\n\005group\030\001 \001(\0132\034.apache.rocketmq." +
-      "v2.Resource\022+\n\005topic\030\002 \001(\0132\034.apache.rock" +
-      "etmq.v2.Resource\0224\n\007entries\030\003 \003(\0132#.apac" +
-      "he.rocketmq.v2.AckMessageEntry\"o\n\025AckMes" +
-      "sageResultEntry\022\022\n\nmessage_id\030\001 \001(\t\022\026\n\016r" +
-      "eceipt_handle\030\002 \001(\t\022*\n\006status\030\003 \001(\0132\032.ap" +
-      "ache.rocketmq.v2.Status\"|\n\022AckMessageRes" +
-      "ponse\022*\n\006status\030\001 \001(\0132\032.apache.rocketmq." +
-      "v2.Status\022:\n\007entries\030\002 \003(\0132).apache.rock" +
-      "etmq.v2.AckMessageResultEntry\"\264\001\n\022NackMe" +
-      "ssageRequest\022+\n\005group\030\001 \001(\0132\034.apache.roc" +
-      "ketmq.v2.Resource\022+\n\005topic\030\002 \001(\0132\034.apach" +
-      "e.rocketmq.v2.Resource\022\026\n\016receipt_handle" +
-      "\030\003 \001(\t\022\022\n\nmessage_id\030\004 \001(\t\022\030\n\020delivery_a" +
-      "ttempt\030\005 \001(\005\"A\n\023NackMessageResponse\022*\n\006s" +
-      "tatus\030\001 \001(\0132\032.apache.rocketmq.v2.Status\"" +
-      "\347\001\n&ForwardMessageToDeadLetterQueueReque" +
-      "st\022+\n\005group\030\001 \001(\0132\034.apache.rocketmq.v2.R" +
-      "esource\022+\n\005topic\030\002 \001(\0132\034.apache.rocketmq" +
-      ".v2.Resource\022\026\n\016receipt_handle\030\003 \001(\t\022\022\n\n" +
-      "message_id\030\004 \001(\t\022\030\n\020delivery_attempt\030\005 \001" +
-      "(\005\022\035\n\025max_delivery_attempts\030\006 \001(\005\"U\n\'For" +
-      "wardMessageToDeadLetterQueueResponse\022*\n\006" +
-      "status\030\001 \001(\0132\032.apache.rocketmq.v2.Status" +
-      "\"N\n\020HeartbeatRequest\0220\n\005group\030\001 \001(\0132\034.ap" +
-      "ache.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\025EndTransac" +
-      "tionRequest\022+\n\005topic\030\001 \001(\0132\034.apache.rock" +
-      "etmq.v2.Resource\022\022\n\nmessage_id\030\002 \001(\t\022\026\n\016" +
-      "transaction_id\030\003 \001(\t\022=\n\nresolution\030\004 \001(\016" +
-      "2).apache.rocketmq.v2.TransactionResolut" +
-      "ion\0225\n\006source\030\005 \001(\0162%.apache.rocketmq.v2" +
-      ".TransactionSource\022\025\n\rtrace_context\030\006 \001(" +
-      "\t\"D\n\026EndTransactionResponse\022*\n\006status\030\001 " +
-      "\001(\0132\032.apache.rocketmq.v2.Status\"-\n\034Print" +
-      "ThreadStackTraceCommand\022\r\n\005nonce\030\001 \001(\t\"\205" +
-      "\001\n\020ThreadStackTrace\022\r\n\005nonce\030\001 \001(\t\022*\n\006st" +
-      "atus\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_thre" +
-      "ad_stack_trace\"S\n\024VerifyMessageCommand\022\r" +
-      "\n\005nonce\030\001 \001(\t\022,\n\007message\030\002 \001(\0132\033.apache." +
-      "rocketmq.v2.Message\"P\n\023VerifyMessageResu" +
-      "lt\022\r\n\005nonce\030\001 \001(\t\022*\n\006status\030\002 \001(\0132\032.apac" +
-      "he.rocketmq.v2.Status\"\200\001\n!RecoverOrphane" +
-      "dTransactionCommand\022C\n\036orphaned_transact" +
-      "ional_message\030\001 \001(\0132\033.apache.rocketmq.v2" +
-      ".Message\022\026\n\016transaction_id\030\002 \001(\t\"r\n\nPubl" +
-      "ishing\022,\n\006topics\030\001 \003(\0132\034.apache.rocketmq" +
-      ".v2.Resource\022\037\n\027compress_body_threshold\030" +
-      "\002 \001(\005\022\025\n\rmax_body_size\030\003 \001(\005\"\263\002\n\014Subscri" +
-      "ption\0220\n\005group\030\001 \001(\0132\034.apache.rocketmq.v" +
-      "2.ResourceH\000\210\001\001\022<\n\rsubscriptions\030\002 \003(\0132%" +
-      ".apache.rocketmq.v2.SubscriptionEntry\022\021\n" +
-      "\004fifo\030\003 \001(\010H\001\210\001\001\022\037\n\022receive_batch_size\030\004" +
-      " \001(\005H\002\210\001\001\022<\n\024long_polling_timeout\030\005 \001(\0132" +
-      "\031.google.protobuf.DurationH\003\210\001\001B\010\n\006_grou" +
-      "pB\007\n\005_fifoB\025\n\023_receive_batch_sizeB\027\n\025_lo" +
-      "ng_polling_timeout\"\240\003\n\010Settings\0228\n\013clien" +
-      "t_type\030\001 \001(\0162\036.apache.rocketmq.v2.Client" +
-      "TypeH\001\210\001\001\0228\n\014access_point\030\002 \001(\0132\035.apache" +
-      ".rocketmq.v2.EndpointsH\002\210\001\001\0227\n\016backoff_p" +
-      "olicy\030\003 \001(\0132\037.apache.rocketmq.v2.RetryPo" +
-      "licy\0227\n\017request_timeout\030\004 \001(\0132\031.google.p" +
-      "rotobuf.DurationH\003\210\001\001\0224\n\npublishing\030\005 \001(" +
-      "\0132\036.apache.rocketmq.v2.PublishingH\000\0228\n\014s" +
-      "ubscription\030\006 \001(\0132 .apache.rocketmq.v2.S" +
-      "ubscriptionH\000B\t\n\007pub_subB\016\n\014_client_type" +
-      "B\017\n\r_access_pointB\022\n\020_request_timeout\"\356\003" +
-      "\n\020TelemetryCommand\0220\n\010settings\030\001 \001(\0132\034.a" +
-      "pache.rocketmq.v2.SettingsH\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\022e\n$recover_orphaned_transacti" +
-      "on_command\030\004 \001(\01325.apache.rocketmq.v2.Re" +
-      "coverOrphanedTransactionCommandH\000\022\\\n pri" +
-      "nt_thread_stack_trace_command\030\005 \001(\01320.ap" +
-      "ache.rocketmq.v2.PrintThreadStackTraceCo" +
-      "mmandH\000\022J\n\026verify_message_command\030\006 \001(\0132" +
-      "(.apache.rocketmq.v2.VerifyMessageComman" +
-      "dH\000B\t\n\007command\"\\\n\036NotifyClientTerminatio" +
-      "nRequest\0220\n\005group\030\001 \001(\0132\034.apache.rocketm" +
-      "q.v2.ResourceH\000\210\001\001B\010\n\006_group\"M\n\037NotifyCl" +
-      "ientTerminationResponse\022*\n\006status\030\001 \001(\0132" +
-      "\032.apache.rocketmq.v2.Status\"\311\001\n\036ChangeIn" +
-      "visibleDurationRequest\022+\n\005group\030\001 \001(\0132\034." +
-      "apache.rocketmq.v2.Resource\022+\n\005topic\030\002 \001" +
-      "(\0132\034.apache.rocketmq.v2.Resource\022\026\n\016rece" +
-      "ipt_handle\030\003 \001(\t\0225\n\022invisible_duration\030\004" +
-      " \001(\0132\031.google.protobuf.Duration\"e\n\037Chang" +
-      "eInvisibleDurationResponse\022*\n\006status\030\001 \001" +
-      "(\0132\032.apache.rocketmq.v2.Status\022\026\n\016receip" +
-      "t_handle\030\002 \001(\t2\302\n\n\020MessagingService\022]\n\nQ" +
-      "ueryRoute\022%.apache.rocketmq.v2.QueryRout" +
-      "eRequest\032&.apache.rocketmq.v2.QueryRoute" +
-      "Response\"\000\022Z\n\tHeartbeat\022$.apache.rocketm" +
-      "q.v2.HeartbeatRequest\032%.apache.rocketmq." +
-      "v2.HeartbeatResponse\"\000\022`\n\013SendMessage\022&." +
-      "apache.rocketmq.v2.SendMessageRequest\032\'." +
-      "apache.rocketmq.v2.SendMessageResponse\"\000" +
-      "\022l\n\017QueryAssignment\022*.apache.rocketmq.v2" +
-      ".QueryAssignmentRequest\032+.apache.rocketm" +
-      "q.v2.QueryAssignmentResponse\"\000\022k\n\016Receiv" +
-      "eMessage\022).apache.rocketmq.v2.ReceiveMes" +
-      "sageRequest\032*.apache.rocketmq.v2.Receive" +
-      "MessageResponse\"\0000\001\022]\n\nAckMessage\022%.apac" +
-      "he.rocketmq.v2.AckMessageRequest\032&.apach" +
-      "e.rocketmq.v2.AckMessageResponse\"\000\022`\n\013Na" +
-      "ckMessage\022&.apache.rocketmq.v2.NackMessa" +
-      "geRequest\032\'.apache.rocketmq.v2.NackMessa" +
-      "geResponse\"\000\022\234\001\n\037ForwardMessageToDeadLet" +
-      "terQueue\022:.apache.rocketmq.v2.ForwardMes" +
-      "sageToDeadLetterQueueRequest\032;.apache.ro" +
-      "cketmq.v2.ForwardMessageToDeadLetterQueu" +
-      "eResponse\"\000\022i\n\016EndTransaction\022).apache.r" +
-      "ocketmq.v2.EndTransactionRequest\032*.apach" +
-      "e.rocketmq.v2.EndTransactionResponse\"\000\022]" +
-      "\n\tTelemetry\022$.apache.rocketmq.v2.Telemet" +
-      "ryCommand\032$.apache.rocketmq.v2.Telemetry" +
-      "Command\"\000(\0010\001\022\204\001\n\027NotifyClientTerminatio" +
-      "n\0222.apache.rocketmq.v2.NotifyClientTermi" +
-      "nationRequest\0323.apache.rocketmq.v2.Notif" +
-      "yClientTerminationResponse\"\000\022\204\001\n\027ChangeI" +
-      "nvisibleDuration\0222.apache.rocketmq.v2.Ch" +
-      "angeInvisibleDurationRequest\0323.apache.ro" +
-      "cketmq.v2.ChangeInvisibleDurationRespons" +
-      "e\"\000B<\n\022apache.rocketmq.v2B\tMQServiceP\001\240\001" +
-      "\001\330\001\001\252\002\022Apache.Rocketmq.V2b\006proto3"
+      "\"\347\001\n&ForwardMessageToDeadLetterQueueRequ" +
+      "est\022+\n\005group\030\001 \001(\0132\034.apache.rocketmq.v2." +
+      "Resource\022+\n\005topic\030\002 \001(\0132\034.apache.rocketm" +
+      "q.v2.Resource\022\026\n\016receipt_handle\030\003 \001(\t\022\022\n" +
+      "\nmessage_id\030\004 \001(\t\022\030\n\020delivery_attempt\030\005 " +
+      "\001(\005\022\035\n\025max_delivery_attempts\030\006 \001(\005\"U\n\'Fo" +
+      "rwardMessageToDeadLetterQueueResponse\022*\n" +
+      "\006status\030\001 \001(\0132\032.apache.rocketmq.v2.Statu" +
+      "s\"N\n\020HeartbeatRequest\0220\n\005group\030\001 \001(\0132\034.a" +
+      "pache.rocketmq.v2.ResourceH\000\210\001\001B\010\n\006_grou" +
+      "p\"?\n\021HeartbeatResponse\022*\n\006status\030\001 \001(\0132\032" +
+      ".apache.rocketmq.v2.Status\"\375\001\n\025EndTransa" +
+      "ctionRequest\022+\n\005topic\030\001 \001(\0132\034.apache.roc" +
+      "ketmq.v2.Resource\022\022\n\nmessage_id\030\002 \001(\t\022\026\n" +
+      "\016transaction_id\030\003 \001(\t\022=\n\nresolution\030\004 \001(" +
+      "\0162).apache.rocketmq.v2.TransactionResolu" +
+      "tion\0225\n\006source\030\005 \001(\0162%.apache.rocketmq.v" +
+      "2.TransactionSource\022\025\n\rtrace_context\030\006 \001" +
+      "(\t\"D\n\026EndTransactionResponse\022*\n\006status\030\001" +
+      " \001(\0132\032.apache.rocketmq.v2.Status\"-\n\034Prin" +
+      "tThreadStackTraceCommand\022\r\n\005nonce\030\001 \001(\t\"" +
+      "\205\001\n\020ThreadStackTrace\022\r\n\005nonce\030\001 \001(\t\022*\n\006s" +
+      "tatus\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_thr" +
+      "ead_stack_trace\"S\n\024VerifyMessageCommand\022" +
+      "\r\n\005nonce\030\001 \001(\t\022,\n\007message\030\002 \001(\0132\033.apache" +
+      ".rocketmq.v2.Message\"P\n\023VerifyMessageRes" +
+      "ult\022\r\n\005nonce\030\001 \001(\t\022*\n\006status\030\002 \001(\0132\032.apa" +
+      "che.rocketmq.v2.Status\"\200\001\n!RecoverOrphan" +
+      "edTransactionCommand\022C\n\036orphaned_transac" +
+      "tional_message\030\001 \001(\0132\033.apache.rocketmq.v" +
+      "2.Message\022\026\n\016transaction_id\030\002 \001(\t\"r\n\nPub" +
+      "lishing\022,\n\006topics\030\001 \003(\0132\034.apache.rocketm" +
+      "q.v2.Resource\022\037\n\027compress_body_threshold" +
+      "\030\002 \001(\005\022\025\n\rmax_body_size\030\003 \001(\005\"\263\002\n\014Subscr" +
+      "iption\0220\n\005group\030\001 \001(\0132\034.apache.rocketmq." +
+      "v2.ResourceH\000\210\001\001\022<\n\rsubscriptions\030\002 \003(\0132" +
+      "%.apache.rocketmq.v2.SubscriptionEntry\022\021" +
+      "\n\004fifo\030\003 \001(\010H\001\210\001\001\022\037\n\022receive_batch_size\030" +
+      "\004 \001(\005H\002\210\001\001\022<\n\024long_polling_timeout\030\005 \001(\013" +
+      "2\031.google.protobuf.DurationH\003\210\001\001B\010\n\006_gro" +
+      "upB\007\n\005_fifoB\025\n\023_receive_batch_sizeB\027\n\025_l" +
+      "ong_polling_timeout\"\270\003\n\010Settings\0228\n\013clie" +
+      "nt_type\030\001 \001(\0162\036.apache.rocketmq.v2.Clien" +
+      "tTypeH\001\210\001\001\0228\n\014access_point\030\002 \001(\0132\035.apach" +
+      "e.rocketmq.v2.EndpointsH\002\210\001\001\022<\n\016backoff_" +
+      "policy\030\003 \001(\0132\037.apache.rocketmq.v2.RetryP" +
+      "olicyH\003\210\001\001\0227\n\017request_timeout\030\004 \001(\0132\031.go" +
+      "ogle.protobuf.DurationH\004\210\001\001\0224\n\npublishin" +
+      "g\030\005 \001(\0132\036.apache.rocketmq.v2.PublishingH" +
+      "\000\0228\n\014subscription\030\006 \001(\0132 .apache.rocketm" +
+      "q.v2.SubscriptionH\000B\t\n\007pub_subB\016\n\014_clien" +
+      "t_typeB\017\n\r_access_pointB\021\n\017_backoff_poli" +
+      "cyB\022\n\020_request_timeout\"\356\003\n\020TelemetryComm" +
+      "and\0220\n\010settings\030\001 \001(\0132\034.apache.rocketmq." +
+      "v2.SettingsH\000\022B\n\022thread_stack_trace\030\002 \001(" +
+      "\0132$.apache.rocketmq.v2.ThreadStackTraceH" +
+      "\000\022H\n\025verify_message_result\030\003 \001(\0132\'.apach" +
+      "e.rocketmq.v2.VerifyMessageResultH\000\022e\n$r" +
+      "ecover_orphaned_transaction_command\030\004 \001(" +
+      "\01325.apache.rocketmq.v2.RecoverOrphanedTr" +
+      "ansactionCommandH\000\022\\\n print_thread_stack" +
+      "_trace_command\030\005 \001(\01320.apache.rocketmq.v" +
+      "2.PrintThreadStackTraceCommandH\000\022J\n\026veri" +
+      "fy_message_command\030\006 \001(\0132(.apache.rocket" +
+      "mq.v2.VerifyMessageCommandH\000B\t\n\007command\"" +
+      "\\\n\036NotifyClientTerminationRequest\0220\n\005gro" +
+      "up\030\001 \001(\0132\034.apache.rocketmq.v2.ResourceH\000" +
+      "\210\001\001B\010\n\006_group\"M\n\037NotifyClientTermination" +
+      "Response\022*\n\006status\030\001 \001(\0132\032.apache.rocket" +
+      "mq.v2.Status\"\335\001\n\036ChangeInvisibleDuration" +
+      "Request\022+\n\005group\030\001 \001(\0132\034.apache.rocketmq" +
+      ".v2.Resource\022+\n\005topic\030\002 \001(\0132\034.apache.roc" +
+      "ketmq.v2.Resource\022\026\n\016receipt_handle\030\003 \001(" +
+      "\t\0225\n\022invisible_duration\030\004 \001(\0132\031.google.p" +
+      "rotobuf.Duration\022\022\n\nmessage_id\030\005 \001(\t\"e\n\037" +
+      "ChangeInvisibleDurationResponse\022*\n\006statu" +
+      "s\030\001 \001(\0132\032.apache.rocketmq.v2.Status\022\026\n\016r" +
+      "eceipt_handle\030\002 \001(\t2\302\n\n\020MessagingService" +
+      "\022]\n\nQueryRoute\022%.apache.rocketmq.v2.Quer" +
+      "yRouteRequest\032&.apache.rocketmq.v2.Query" +
+      "RouteResponse\"\000\022Z\n\tHeartbeat\022$.apache.ro" +
+      "cketmq.v2.HeartbeatRequest\032%.apache.rock" +
+      "etmq.v2.HeartbeatResponse\"\000\022`\n\013SendMessa" +
+      "ge\022&.apache.rocketmq.v2.SendMessageReque" +
+      "st\032\'.apache.rocketmq.v2.SendMessageRespo" +
+      "nse\"\000\022l\n\017QueryAssignment\022*.apache.rocket" +
+      "mq.v2.QueryAssignmentRequest\032+.apache.ro" +
+      "cketmq.v2.QueryAssignmentResponse\"\000\022k\n\016R" +
+      "eceiveMessage\022).apache.rocketmq.v2.Recei" +
+      "veMessageRequest\032*.apache.rocketmq.v2.Re" +
+      "ceiveMessageResponse\"\0000\001\022]\n\nAckMessage\022%" +
+      ".apache.rocketmq.v2.AckMessageRequest\032&." +
+      "apache.rocketmq.v2.AckMessageResponse\"\000\022" +
+      "`\n\013NackMessage\022&.apache.rocketmq.v2.Nack" +
+      "MessageRequest\032\'.apache.rocketmq.v2.Nack" +
+      "MessageResponse\"\000\022\234\001\n\037ForwardMessageToDe" +
+      "adLetterQueue\022:.apache.rocketmq.v2.Forwa" +
+      "rdMessageToDeadLetterQueueRequest\032;.apac" +
+      "he.rocketmq.v2.ForwardMessageToDeadLette" +
+      "rQueueResponse\"\000\022i\n\016EndTransaction\022).apa" +
+      "che.rocketmq.v2.EndTransactionRequest\032*." +
+      "apache.rocketmq.v2.EndTransactionRespons" +
+      "e\"\000\022]\n\tTelemetry\022$.apache.rocketmq.v2.Te" +
+      "lemetryCommand\032$.apache.rocketmq.v2.Tele" +
+      "metryCommand\"\000(\0010\001\022\204\001\n\027NotifyClientTermi" +
+      "nation\0222.apache.rocketmq.v2.NotifyClient" +
+      "TerminationRequest\0323.apache.rocketmq.v2." +
+      "NotifyClientTerminationResponse\"\000\022\204\001\n\027Ch" +
+      "angeInvisibleDuration\0222.apache.rocketmq." +
+      "v2.ChangeInvisibleDurationRequest\0323.apac" +
+      "he.rocketmq.v2.ChangeInvisibleDurationRe" +
+      "sponse\"\000B<\n\022apache.rocketmq.v2B\tMQServic" +
+      "eP\001\240\001\001\330\001\001\252\002\022Apache.Rocketmq.V2b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -362,7 +366,7 @@ public final class MQService {
     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", });
+        new java.lang.String[] { "Topic", "Endpoints", });
     internal_static_apache_rocketmq_v2_QueryRouteResponse_descriptor =
       getDescriptor().getMessageTypes().get(1);
     internal_static_apache_rocketmq_v2_QueryRouteResponse_fieldAccessorTable = new
@@ -386,7 +390,7 @@ public final class MQService {
     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", });
+        new java.lang.String[] { "Topic", "Group", "Endpoints", });
     internal_static_apache_rocketmq_v2_QueryAssignmentResponse_descriptor =
       getDescriptor().getMessageTypes().get(5);
     internal_static_apache_rocketmq_v2_QueryAssignmentResponse_fieldAccessorTable = new
@@ -398,7 +402,7 @@ public final class MQService {
     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", "MessageQueue", "FilterExpression", "BatchSize", "InvisibleDuration", "InvisibleDuration", });
+        new java.lang.String[] { "Group", "MessageQueue", "FilterExpression", "BatchSize", "InvisibleDuration", "AutoRenew", "InvisibleDuration", });
     internal_static_apache_rocketmq_v2_ReceiveMessageResponse_descriptor =
       getDescriptor().getMessageTypes().get(7);
     internal_static_apache_rocketmq_v2_ReceiveMessageResponse_fieldAccessorTable = new
@@ -524,7 +528,7 @@ public final class MQService {
     internal_static_apache_rocketmq_v2_Settings_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_Settings_descriptor,
-        new java.lang.String[] { "ClientType", "AccessPoint", "BackoffPolicy", "RequestTimeout", "Publishing", "Subscription", "PubSub", "ClientType", "AccessPoint", "RequestTimeout", });
+        new java.lang.String[] { "ClientType", "AccessPoint", "BackoffPolicy", "RequestTimeout", "Publishing", "Subscription", "PubSub", "ClientType", "AccessPoint", "BackoffPolicy", "RequestTimeout", });
     internal_static_apache_rocketmq_v2_TelemetryCommand_descriptor =
       getDescriptor().getMessageTypes().get(28);
     internal_static_apache_rocketmq_v2_TelemetryCommand_fieldAccessorTable = new
@@ -548,7 +552,7 @@ public final class MQService {
     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", });
+        new java.lang.String[] { "Group", "Topic", "ReceiptHandle", "InvisibleDuration", "MessageId", });
     internal_static_apache_rocketmq_v2_ChangeInvisibleDurationResponse_descriptor =
       getDescriptor().getMessageTypes().get(32);
     internal_static_apache_rocketmq_v2_ChangeInvisibleDurationResponse_fieldAccessorTable = new
diff --git a/src/main/java/apache/rocketmq/v2/QueryAssignmentRequest.java b/src/main/java/apache/rocketmq/v2/QueryAssignmentRequest.java
index 70aa918..0ae071f 100644
--- a/src/main/java/apache/rocketmq/v2/QueryAssignmentRequest.java
+++ b/src/main/java/apache/rocketmq/v2/QueryAssignmentRequest.java
@@ -74,6 +74,19 @@ private static final long serialVersionUID = 0L;
 
             break;
           }
+          case 26: {
+            apache.rocketmq.v2.Endpoints.Builder subBuilder = null;
+            if (endpoints_ != null) {
+              subBuilder = endpoints_.toBuilder();
+            }
+            endpoints_ = input.readMessage(apache.rocketmq.v2.Endpoints.parser(), extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(endpoints_);
+              endpoints_ = subBuilder.buildPartial();
+            }
+
+            break;
+          }
           default: {
             if (!parseUnknownField(
                 input, unknownFields, extensionRegistry, tag)) {
@@ -158,6 +171,32 @@ private static final long serialVersionUID = 0L;
     return getGroup();
   }
 
+  public static final int ENDPOINTS_FIELD_NUMBER = 3;
+  private apache.rocketmq.v2.Endpoints endpoints_;
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+   * @return Whether the endpoints field is set.
+   */
+  @java.lang.Override
+  public boolean hasEndpoints() {
+    return endpoints_ != null;
+  }
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+   * @return The endpoints.
+   */
+  @java.lang.Override
+  public apache.rocketmq.v2.Endpoints getEndpoints() {
+    return endpoints_ == null ? apache.rocketmq.v2.Endpoints.getDefaultInstance() : endpoints_;
+  }
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+   */
+  @java.lang.Override
+  public apache.rocketmq.v2.EndpointsOrBuilder getEndpointsOrBuilder() {
+    return getEndpoints();
+  }
+
   private byte memoizedIsInitialized = -1;
   @java.lang.Override
   public final boolean isInitialized() {
@@ -178,6 +217,9 @@ private static final long serialVersionUID = 0L;
     if (group_ != null) {
       output.writeMessage(2, getGroup());
     }
+    if (endpoints_ != null) {
+      output.writeMessage(3, getEndpoints());
+    }
     unknownFields.writeTo(output);
   }
 
@@ -195,6 +237,10 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(2, getGroup());
     }
+    if (endpoints_ != null) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(3, getEndpoints());
+    }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
     return size;
@@ -220,6 +266,11 @@ private static final long serialVersionUID = 0L;
       if (!getGroup()
           .equals(other.getGroup())) return false;
     }
+    if (hasEndpoints() != other.hasEndpoints()) return false;
+    if (hasEndpoints()) {
+      if (!getEndpoints()
+          .equals(other.getEndpoints())) return false;
+    }
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -239,6 +290,10 @@ private static final long serialVersionUID = 0L;
       hash = (37 * hash) + GROUP_FIELD_NUMBER;
       hash = (53 * hash) + getGroup().hashCode();
     }
+    if (hasEndpoints()) {
+      hash = (37 * hash) + ENDPOINTS_FIELD_NUMBER;
+      hash = (53 * hash) + getEndpoints().hashCode();
+    }
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
@@ -384,6 +439,12 @@ private static final long serialVersionUID = 0L;
         group_ = null;
         groupBuilder_ = null;
       }
+      if (endpointsBuilder_ == null) {
+        endpoints_ = null;
+      } else {
+        endpoints_ = null;
+        endpointsBuilder_ = null;
+      }
       return this;
     }
 
@@ -420,6 +481,11 @@ private static final long serialVersionUID = 0L;
       } else {
         result.group_ = groupBuilder_.build();
       }
+      if (endpointsBuilder_ == null) {
+        result.endpoints_ = endpoints_;
+      } else {
+        result.endpoints_ = endpointsBuilder_.build();
+      }
       onBuilt();
       return result;
     }
@@ -474,6 +540,9 @@ private static final long serialVersionUID = 0L;
       if (other.hasGroup()) {
         mergeGroup(other.getGroup());
       }
+      if (other.hasEndpoints()) {
+        mergeEndpoints(other.getEndpoints());
+      }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
       return this;
@@ -740,6 +809,125 @@ private static final long serialVersionUID = 0L;
       }
       return groupBuilder_;
     }
+
+    private apache.rocketmq.v2.Endpoints endpoints_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        apache.rocketmq.v2.Endpoints, apache.rocketmq.v2.Endpoints.Builder, apache.rocketmq.v2.EndpointsOrBuilder> endpointsBuilder_;
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+     * @return Whether the endpoints field is set.
+     */
+    public boolean hasEndpoints() {
+      return endpointsBuilder_ != null || endpoints_ != null;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+     * @return The endpoints.
+     */
+    public apache.rocketmq.v2.Endpoints getEndpoints() {
+      if (endpointsBuilder_ == null) {
+        return endpoints_ == null ? apache.rocketmq.v2.Endpoints.getDefaultInstance() : endpoints_;
+      } else {
+        return endpointsBuilder_.getMessage();
+      }
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+     */
+    public Builder setEndpoints(apache.rocketmq.v2.Endpoints value) {
+      if (endpointsBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        endpoints_ = value;
+        onChanged();
+      } else {
+        endpointsBuilder_.setMessage(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+     */
+    public Builder setEndpoints(
+        apache.rocketmq.v2.Endpoints.Builder builderForValue) {
+      if (endpointsBuilder_ == null) {
+        endpoints_ = builderForValue.build();
+        onChanged();
+      } else {
+        endpointsBuilder_.setMessage(builderForValue.build());
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+     */
+    public Builder mergeEndpoints(apache.rocketmq.v2.Endpoints value) {
+      if (endpointsBuilder_ == null) {
+        if (endpoints_ != null) {
+          endpoints_ =
+            apache.rocketmq.v2.Endpoints.newBuilder(endpoints_).mergeFrom(value).buildPartial();
+        } else {
+          endpoints_ = value;
+        }
+        onChanged();
+      } else {
+        endpointsBuilder_.mergeFrom(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+     */
+    public Builder clearEndpoints() {
+      if (endpointsBuilder_ == null) {
+        endpoints_ = null;
+        onChanged();
+      } else {
+        endpoints_ = null;
+        endpointsBuilder_ = null;
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+     */
+    public apache.rocketmq.v2.Endpoints.Builder getEndpointsBuilder() {
+      
+      onChanged();
+      return getEndpointsFieldBuilder().getBuilder();
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+     */
+    public apache.rocketmq.v2.EndpointsOrBuilder getEndpointsOrBuilder() {
+      if (endpointsBuilder_ != null) {
+        return endpointsBuilder_.getMessageOrBuilder();
+      } else {
+        return endpoints_ == null ?
+            apache.rocketmq.v2.Endpoints.getDefaultInstance() : endpoints_;
+      }
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+        apache.rocketmq.v2.Endpoints, apache.rocketmq.v2.Endpoints.Builder, apache.rocketmq.v2.EndpointsOrBuilder> 
+        getEndpointsFieldBuilder() {
+      if (endpointsBuilder_ == null) {
+        endpointsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            apache.rocketmq.v2.Endpoints, apache.rocketmq.v2.Endpoints.Builder, apache.rocketmq.v2.EndpointsOrBuilder>(
+                getEndpoints(),
+                getParentForChildren(),
+                isClean());
+        endpoints_ = null;
+      }
+      return endpointsBuilder_;
+    }
     @java.lang.Override
     public final Builder setUnknownFields(
         final com.google.protobuf.UnknownFieldSet unknownFields) {
diff --git a/src/main/java/apache/rocketmq/v2/QueryAssignmentRequestOrBuilder.java b/src/main/java/apache/rocketmq/v2/QueryAssignmentRequestOrBuilder.java
index 8ce2dfc..270eaf4 100644
--- a/src/main/java/apache/rocketmq/v2/QueryAssignmentRequestOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v2/QueryAssignmentRequestOrBuilder.java
@@ -36,4 +36,19 @@ public interface QueryAssignmentRequestOrBuilder extends
    * <code>.apache.rocketmq.v2.Resource group = 2;</code>
    */
   apache.rocketmq.v2.ResourceOrBuilder getGroupOrBuilder();
+
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+   * @return Whether the endpoints field is set.
+   */
+  boolean hasEndpoints();
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+   * @return The endpoints.
+   */
+  apache.rocketmq.v2.Endpoints getEndpoints();
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+   */
+  apache.rocketmq.v2.EndpointsOrBuilder getEndpointsOrBuilder();
 }
diff --git a/src/main/java/apache/rocketmq/v2/QueryRouteRequest.java b/src/main/java/apache/rocketmq/v2/QueryRouteRequest.java
index f579d64..361bb6d 100644
--- a/src/main/java/apache/rocketmq/v2/QueryRouteRequest.java
+++ b/src/main/java/apache/rocketmq/v2/QueryRouteRequest.java
@@ -78,6 +78,19 @@ private static final long serialVersionUID = 0L;
 
             break;
           }
+          case 18: {
+            apache.rocketmq.v2.Endpoints.Builder subBuilder = null;
+            if (endpoints_ != null) {
+              subBuilder = endpoints_.toBuilder();
+            }
+            endpoints_ = input.readMessage(apache.rocketmq.v2.Endpoints.parser(), extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(endpoints_);
+              endpoints_ = subBuilder.buildPartial();
+            }
+
+            break;
+          }
           default: {
             if (!parseUnknownField(
                 input, unknownFields, extensionRegistry, tag)) {
@@ -136,6 +149,32 @@ private static final long serialVersionUID = 0L;
     return getTopic();
   }
 
+  public static final int ENDPOINTS_FIELD_NUMBER = 2;
+  private apache.rocketmq.v2.Endpoints endpoints_;
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+   * @return Whether the endpoints field is set.
+   */
+  @java.lang.Override
+  public boolean hasEndpoints() {
+    return endpoints_ != null;
+  }
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+   * @return The endpoints.
+   */
+  @java.lang.Override
+  public apache.rocketmq.v2.Endpoints getEndpoints() {
+    return endpoints_ == null ? apache.rocketmq.v2.Endpoints.getDefaultInstance() : endpoints_;
+  }
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+   */
+  @java.lang.Override
+  public apache.rocketmq.v2.EndpointsOrBuilder getEndpointsOrBuilder() {
+    return getEndpoints();
+  }
+
   private byte memoizedIsInitialized = -1;
   @java.lang.Override
   public final boolean isInitialized() {
@@ -153,6 +192,9 @@ private static final long serialVersionUID = 0L;
     if (topic_ != null) {
       output.writeMessage(1, getTopic());
     }
+    if (endpoints_ != null) {
+      output.writeMessage(2, getEndpoints());
+    }
     unknownFields.writeTo(output);
   }
 
@@ -166,6 +208,10 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(1, getTopic());
     }
+    if (endpoints_ != null) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(2, getEndpoints());
+    }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
     return size;
@@ -186,6 +232,11 @@ private static final long serialVersionUID = 0L;
       if (!getTopic()
           .equals(other.getTopic())) return false;
     }
+    if (hasEndpoints() != other.hasEndpoints()) return false;
+    if (hasEndpoints()) {
+      if (!getEndpoints()
+          .equals(other.getEndpoints())) return false;
+    }
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -201,6 +252,10 @@ private static final long serialVersionUID = 0L;
       hash = (37 * hash) + TOPIC_FIELD_NUMBER;
       hash = (53 * hash) + getTopic().hashCode();
     }
+    if (hasEndpoints()) {
+      hash = (37 * hash) + ENDPOINTS_FIELD_NUMBER;
+      hash = (53 * hash) + getEndpoints().hashCode();
+    }
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
@@ -357,6 +412,12 @@ private static final long serialVersionUID = 0L;
         topic_ = null;
         topicBuilder_ = null;
       }
+      if (endpointsBuilder_ == null) {
+        endpoints_ = null;
+      } else {
+        endpoints_ = null;
+        endpointsBuilder_ = null;
+      }
       return this;
     }
 
@@ -388,6 +449,11 @@ private static final long serialVersionUID = 0L;
       } else {
         result.topic_ = topicBuilder_.build();
       }
+      if (endpointsBuilder_ == null) {
+        result.endpoints_ = endpoints_;
+      } else {
+        result.endpoints_ = endpointsBuilder_.build();
+      }
       onBuilt();
       return result;
     }
@@ -439,6 +505,9 @@ private static final long serialVersionUID = 0L;
       if (other.hasTopic()) {
         mergeTopic(other.getTopic());
       }
+      if (other.hasEndpoints()) {
+        mergeEndpoints(other.getEndpoints());
+      }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
       return this;
@@ -586,6 +655,125 @@ private static final long serialVersionUID = 0L;
       }
       return topicBuilder_;
     }
+
+    private apache.rocketmq.v2.Endpoints endpoints_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        apache.rocketmq.v2.Endpoints, apache.rocketmq.v2.Endpoints.Builder, apache.rocketmq.v2.EndpointsOrBuilder> endpointsBuilder_;
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+     * @return Whether the endpoints field is set.
+     */
+    public boolean hasEndpoints() {
+      return endpointsBuilder_ != null || endpoints_ != null;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+     * @return The endpoints.
+     */
+    public apache.rocketmq.v2.Endpoints getEndpoints() {
+      if (endpointsBuilder_ == null) {
+        return endpoints_ == null ? apache.rocketmq.v2.Endpoints.getDefaultInstance() : endpoints_;
+      } else {
+        return endpointsBuilder_.getMessage();
+      }
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+     */
+    public Builder setEndpoints(apache.rocketmq.v2.Endpoints value) {
+      if (endpointsBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        endpoints_ = value;
+        onChanged();
+      } else {
+        endpointsBuilder_.setMessage(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+     */
+    public Builder setEndpoints(
+        apache.rocketmq.v2.Endpoints.Builder builderForValue) {
+      if (endpointsBuilder_ == null) {
+        endpoints_ = builderForValue.build();
+        onChanged();
+      } else {
+        endpointsBuilder_.setMessage(builderForValue.build());
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+     */
+    public Builder mergeEndpoints(apache.rocketmq.v2.Endpoints value) {
+      if (endpointsBuilder_ == null) {
+        if (endpoints_ != null) {
+          endpoints_ =
+            apache.rocketmq.v2.Endpoints.newBuilder(endpoints_).mergeFrom(value).buildPartial();
+        } else {
+          endpoints_ = value;
+        }
+        onChanged();
+      } else {
+        endpointsBuilder_.mergeFrom(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+     */
+    public Builder clearEndpoints() {
+      if (endpointsBuilder_ == null) {
+        endpoints_ = null;
+        onChanged();
+      } else {
+        endpoints_ = null;
+        endpointsBuilder_ = null;
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+     */
+    public apache.rocketmq.v2.Endpoints.Builder getEndpointsBuilder() {
+      
+      onChanged();
+      return getEndpointsFieldBuilder().getBuilder();
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+     */
+    public apache.rocketmq.v2.EndpointsOrBuilder getEndpointsOrBuilder() {
+      if (endpointsBuilder_ != null) {
+        return endpointsBuilder_.getMessageOrBuilder();
+      } else {
+        return endpoints_ == null ?
+            apache.rocketmq.v2.Endpoints.getDefaultInstance() : endpoints_;
+      }
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+        apache.rocketmq.v2.Endpoints, apache.rocketmq.v2.Endpoints.Builder, apache.rocketmq.v2.EndpointsOrBuilder> 
+        getEndpointsFieldBuilder() {
+      if (endpointsBuilder_ == null) {
+        endpointsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            apache.rocketmq.v2.Endpoints, apache.rocketmq.v2.Endpoints.Builder, apache.rocketmq.v2.EndpointsOrBuilder>(
+                getEndpoints(),
+                getParentForChildren(),
+                isClean());
+        endpoints_ = null;
+      }
+      return endpointsBuilder_;
+    }
     @java.lang.Override
     public final Builder setUnknownFields(
         final com.google.protobuf.UnknownFieldSet unknownFields) {
diff --git a/src/main/java/apache/rocketmq/v2/QueryRouteRequestOrBuilder.java b/src/main/java/apache/rocketmq/v2/QueryRouteRequestOrBuilder.java
index 0357827..a61c342 100644
--- a/src/main/java/apache/rocketmq/v2/QueryRouteRequestOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v2/QueryRouteRequestOrBuilder.java
@@ -21,4 +21,19 @@ public interface QueryRouteRequestOrBuilder extends
    * <code>.apache.rocketmq.v2.Resource topic = 1;</code>
    */
   apache.rocketmq.v2.ResourceOrBuilder getTopicOrBuilder();
+
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+   * @return Whether the endpoints field is set.
+   */
+  boolean hasEndpoints();
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+   * @return The endpoints.
+   */
+  apache.rocketmq.v2.Endpoints getEndpoints();
+  /**
+   * <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+   */
+  apache.rocketmq.v2.EndpointsOrBuilder getEndpointsOrBuilder();
 }
diff --git a/src/main/java/apache/rocketmq/v2/ReceiveMessageRequest.java b/src/main/java/apache/rocketmq/v2/ReceiveMessageRequest.java
index 3122e1c..42f2936 100644
--- a/src/main/java/apache/rocketmq/v2/ReceiveMessageRequest.java
+++ b/src/main/java/apache/rocketmq/v2/ReceiveMessageRequest.java
@@ -106,6 +106,11 @@ private static final long serialVersionUID = 0L;
             bitField0_ |= 0x00000001;
             break;
           }
+          case 48: {
+
+            autoRenew_ = input.readBool();
+            break;
+          }
           default: {
             if (!parseUnknownField(
                 input, unknownFields, extensionRegistry, tag)) {
@@ -266,6 +271,21 @@ private static final long serialVersionUID = 0L;
     return invisibleDuration_ == null ? com.google.protobuf.Duration.getDefaultInstance() : invisibleDuration_;
   }
 
+  public static final int AUTO_RENEW_FIELD_NUMBER = 6;
+  private boolean autoRenew_;
+  /**
+   * <pre>
+   * For message auto renew and clean
+   * </pre>
+   *
+   * <code>bool auto_renew = 6;</code>
+   * @return The autoRenew.
+   */
+  @java.lang.Override
+  public boolean getAutoRenew() {
+    return autoRenew_;
+  }
+
   private byte memoizedIsInitialized = -1;
   @java.lang.Override
   public final boolean isInitialized() {
@@ -295,6 +315,9 @@ private static final long serialVersionUID = 0L;
     if (((bitField0_ & 0x00000001) != 0)) {
       output.writeMessage(5, getInvisibleDuration());
     }
+    if (autoRenew_ != false) {
+      output.writeBool(6, autoRenew_);
+    }
     unknownFields.writeTo(output);
   }
 
@@ -324,6 +347,10 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(5, getInvisibleDuration());
     }
+    if (autoRenew_ != false) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeBoolSize(6, autoRenew_);
+    }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
     return size;
@@ -361,6 +388,8 @@ private static final long serialVersionUID = 0L;
       if (!getInvisibleDuration()
           .equals(other.getInvisibleDuration())) return false;
     }
+    if (getAutoRenew()
+        != other.getAutoRenew()) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -390,6 +419,9 @@ private static final long serialVersionUID = 0L;
       hash = (37 * hash) + INVISIBLE_DURATION_FIELD_NUMBER;
       hash = (53 * hash) + getInvisibleDuration().hashCode();
     }
+    hash = (37 * hash) + AUTO_RENEW_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+        getAutoRenew());
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
@@ -550,6 +582,8 @@ private static final long serialVersionUID = 0L;
         invisibleDurationBuilder_.clear();
       }
       bitField0_ = (bitField0_ & ~0x00000001);
+      autoRenew_ = false;
+
       return this;
     }
 
@@ -602,6 +636,7 @@ private static final long serialVersionUID = 0L;
         }
         to_bitField0_ |= 0x00000001;
       }
+      result.autoRenew_ = autoRenew_;
       result.bitField0_ = to_bitField0_;
       onBuilt();
       return result;
@@ -666,6 +701,9 @@ private static final long serialVersionUID = 0L;
       if (other.hasInvisibleDuration()) {
         mergeInvisibleDuration(other.getInvisibleDuration());
       }
+      if (other.getAutoRenew() != false) {
+        setAutoRenew(other.getAutoRenew());
+      }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
       return this;
@@ -1239,6 +1277,49 @@ private static final long serialVersionUID = 0L;
       }
       return invisibleDurationBuilder_;
     }
+
+    private boolean autoRenew_ ;
+    /**
+     * <pre>
+     * For message auto renew and clean
+     * </pre>
+     *
+     * <code>bool auto_renew = 6;</code>
+     * @return The autoRenew.
+     */
+    @java.lang.Override
+    public boolean getAutoRenew() {
+      return autoRenew_;
+    }
+    /**
+     * <pre>
+     * For message auto renew and clean
+     * </pre>
+     *
+     * <code>bool auto_renew = 6;</code>
+     * @param value The autoRenew to set.
+     * @return This builder for chaining.
+     */
+    public Builder setAutoRenew(boolean value) {
+      
+      autoRenew_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * For message auto renew and clean
+     * </pre>
+     *
+     * <code>bool auto_renew = 6;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearAutoRenew() {
+      
+      autoRenew_ = false;
+      onChanged();
+      return this;
+    }
     @java.lang.Override
     public final Builder setUnknownFields(
         final com.google.protobuf.UnknownFieldSet unknownFields) {
diff --git a/src/main/java/apache/rocketmq/v2/ReceiveMessageRequestOrBuilder.java b/src/main/java/apache/rocketmq/v2/ReceiveMessageRequestOrBuilder.java
index 2a43b5e..b6fbc15 100644
--- a/src/main/java/apache/rocketmq/v2/ReceiveMessageRequestOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v2/ReceiveMessageRequestOrBuilder.java
@@ -84,4 +84,14 @@ public interface ReceiveMessageRequestOrBuilder extends
    * <code>optional .google.protobuf.Duration invisible_duration = 5;</code>
    */
   com.google.protobuf.DurationOrBuilder getInvisibleDurationOrBuilder();
+
+  /**
+   * <pre>
+   * For message auto renew and clean
+   * </pre>
+   *
+   * <code>bool auto_renew = 6;</code>
+   * @return The autoRenew.
+   */
+  boolean getAutoRenew();
 }
diff --git a/src/main/java/apache/rocketmq/v2/Settings.java b/src/main/java/apache/rocketmq/v2/Settings.java
index d626778..74b0ba0 100644
--- a/src/main/java/apache/rocketmq/v2/Settings.java
+++ b/src/main/java/apache/rocketmq/v2/Settings.java
@@ -71,7 +71,7 @@ private static final long serialVersionUID = 0L;
           }
           case 26: {
             apache.rocketmq.v2.RetryPolicy.Builder subBuilder = null;
-            if (backoffPolicy_ != null) {
+            if (((bitField0_ & 0x00000004) != 0)) {
               subBuilder = backoffPolicy_.toBuilder();
             }
             backoffPolicy_ = input.readMessage(apache.rocketmq.v2.RetryPolicy.parser(), extensionRegistry);
@@ -79,12 +79,12 @@ private static final long serialVersionUID = 0L;
               subBuilder.mergeFrom(backoffPolicy_);
               backoffPolicy_ = subBuilder.buildPartial();
             }
-
+            bitField0_ |= 0x00000004;
             break;
           }
           case 34: {
             com.google.protobuf.Duration.Builder subBuilder = null;
-            if (((bitField0_ & 0x00000004) != 0)) {
+            if (((bitField0_ & 0x00000008) != 0)) {
               subBuilder = requestTimeout_.toBuilder();
             }
             requestTimeout_ = input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry);
@@ -92,7 +92,7 @@ private static final long serialVersionUID = 0L;
               subBuilder.mergeFrom(requestTimeout_);
               requestTimeout_ = subBuilder.buildPartial();
             }
-            bitField0_ |= 0x00000004;
+            bitField0_ |= 0x00000008;
             break;
           }
           case 42: {
@@ -275,12 +275,12 @@ private static final long serialVersionUID = 0L;
    * the prior one depletes its lifecycle.
    * </pre>
    *
-   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+   * <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
    * @return Whether the backoffPolicy field is set.
    */
   @java.lang.Override
   public boolean hasBackoffPolicy() {
-    return backoffPolicy_ != null;
+    return ((bitField0_ & 0x00000004) != 0);
   }
   /**
    * <pre>
@@ -294,7 +294,7 @@ private static final long serialVersionUID = 0L;
    * the prior one depletes its lifecycle.
    * </pre>
    *
-   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+   * <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
    * @return The backoffPolicy.
    */
   @java.lang.Override
@@ -313,11 +313,11 @@ private static final long serialVersionUID = 0L;
    * the prior one depletes its lifecycle.
    * </pre>
    *
-   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+   * <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
    */
   @java.lang.Override
   public apache.rocketmq.v2.RetryPolicyOrBuilder getBackoffPolicyOrBuilder() {
-    return getBackoffPolicy();
+    return backoffPolicy_ == null ? apache.rocketmq.v2.RetryPolicy.getDefaultInstance() : backoffPolicy_;
   }
 
   public static final int REQUEST_TIMEOUT_FIELD_NUMBER = 4;
@@ -332,7 +332,7 @@ private static final long serialVersionUID = 0L;
    */
   @java.lang.Override
   public boolean hasRequestTimeout() {
-    return ((bitField0_ & 0x00000004) != 0);
+    return ((bitField0_ & 0x00000008) != 0);
   }
   /**
    * <pre>
@@ -440,10 +440,10 @@ private static final long serialVersionUID = 0L;
     if (((bitField0_ & 0x00000002) != 0)) {
       output.writeMessage(2, getAccessPoint());
     }
-    if (backoffPolicy_ != null) {
+    if (((bitField0_ & 0x00000004) != 0)) {
       output.writeMessage(3, getBackoffPolicy());
     }
-    if (((bitField0_ & 0x00000004) != 0)) {
+    if (((bitField0_ & 0x00000008) != 0)) {
       output.writeMessage(4, getRequestTimeout());
     }
     if (pubSubCase_ == 5) {
@@ -469,11 +469,11 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(2, getAccessPoint());
     }
-    if (backoffPolicy_ != null) {
+    if (((bitField0_ & 0x00000004) != 0)) {
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(3, getBackoffPolicy());
     }
-    if (((bitField0_ & 0x00000004) != 0)) {
+    if (((bitField0_ & 0x00000008) != 0)) {
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(4, getRequestTimeout());
     }
@@ -700,6 +700,7 @@ private static final long serialVersionUID = 0L;
       if (com.google.protobuf.GeneratedMessageV3
               .alwaysUseFieldBuilders) {
         getAccessPointFieldBuilder();
+        getBackoffPolicyFieldBuilder();
         getRequestTimeoutFieldBuilder();
       }
     }
@@ -717,15 +718,15 @@ private static final long serialVersionUID = 0L;
       if (backoffPolicyBuilder_ == null) {
         backoffPolicy_ = null;
       } else {
-        backoffPolicy_ = null;
-        backoffPolicyBuilder_ = null;
+        backoffPolicyBuilder_.clear();
       }
+      bitField0_ = (bitField0_ & ~0x00000004);
       if (requestTimeoutBuilder_ == null) {
         requestTimeout_ = null;
       } else {
         requestTimeoutBuilder_.clear();
       }
-      bitField0_ = (bitField0_ & ~0x00000004);
+      bitField0_ = (bitField0_ & ~0x00000008);
       pubSubCase_ = 0;
       pubSub_ = null;
       return this;
@@ -768,18 +769,21 @@ private static final long serialVersionUID = 0L;
         }
         to_bitField0_ |= 0x00000002;
       }
-      if (backoffPolicyBuilder_ == null) {
-        result.backoffPolicy_ = backoffPolicy_;
-      } else {
-        result.backoffPolicy_ = backoffPolicyBuilder_.build();
-      }
       if (((from_bitField0_ & 0x00000004) != 0)) {
+        if (backoffPolicyBuilder_ == null) {
+          result.backoffPolicy_ = backoffPolicy_;
+        } else {
+          result.backoffPolicy_ = backoffPolicyBuilder_.build();
+        }
+        to_bitField0_ |= 0x00000004;
+      }
+      if (((from_bitField0_ & 0x00000008) != 0)) {
         if (requestTimeoutBuilder_ == null) {
           result.requestTimeout_ = requestTimeout_;
         } else {
           result.requestTimeout_ = requestTimeoutBuilder_.build();
         }
-        to_bitField0_ |= 0x00000004;
+        to_bitField0_ |= 0x00000008;
       }
       if (pubSubCase_ == 5) {
         if (publishingBuilder_ == null) {
@@ -1135,11 +1139,11 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+     * <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
      * @return Whether the backoffPolicy field is set.
      */
     public boolean hasBackoffPolicy() {
-      return backoffPolicyBuilder_ != null || backoffPolicy_ != null;
+      return ((bitField0_ & 0x00000004) != 0);
     }
     /**
      * <pre>
@@ -1153,7 +1157,7 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+     * <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
      * @return The backoffPolicy.
      */
     public apache.rocketmq.v2.RetryPolicy getBackoffPolicy() {
@@ -1175,7 +1179,7 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+     * <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
      */
     public Builder setBackoffPolicy(apache.rocketmq.v2.RetryPolicy value) {
       if (backoffPolicyBuilder_ == null) {
@@ -1187,7 +1191,7 @@ private static final long serialVersionUID = 0L;
       } else {
         backoffPolicyBuilder_.setMessage(value);
       }
-
+      bitField0_ |= 0x00000004;
       return this;
     }
     /**
@@ -1202,7 +1206,7 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+     * <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
      */
     public Builder setBackoffPolicy(
         apache.rocketmq.v2.RetryPolicy.Builder builderForValue) {
@@ -1212,7 +1216,7 @@ private static final long serialVersionUID = 0L;
       } else {
         backoffPolicyBuilder_.setMessage(builderForValue.build());
       }
-
+      bitField0_ |= 0x00000004;
       return this;
     }
     /**
@@ -1227,11 +1231,13 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+     * <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
      */
     public Builder mergeBackoffPolicy(apache.rocketmq.v2.RetryPolicy value) {
       if (backoffPolicyBuilder_ == null) {
-        if (backoffPolicy_ != null) {
+        if (((bitField0_ & 0x00000004) != 0) &&
+            backoffPolicy_ != null &&
+            backoffPolicy_ != apache.rocketmq.v2.RetryPolicy.getDefaultInstance()) {
           backoffPolicy_ =
             apache.rocketmq.v2.RetryPolicy.newBuilder(backoffPolicy_).mergeFrom(value).buildPartial();
         } else {
@@ -1241,7 +1247,7 @@ private static final long serialVersionUID = 0L;
       } else {
         backoffPolicyBuilder_.mergeFrom(value);
       }
-
+      bitField0_ |= 0x00000004;
       return this;
     }
     /**
@@ -1256,17 +1262,16 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+     * <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
      */
     public Builder clearBackoffPolicy() {
       if (backoffPolicyBuilder_ == null) {
         backoffPolicy_ = null;
         onChanged();
       } else {
-        backoffPolicy_ = null;
-        backoffPolicyBuilder_ = null;
+        backoffPolicyBuilder_.clear();
       }
-
+      bitField0_ = (bitField0_ & ~0x00000004);
       return this;
     }
     /**
@@ -1281,10 +1286,10 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+     * <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
      */
     public apache.rocketmq.v2.RetryPolicy.Builder getBackoffPolicyBuilder() {
-      
+      bitField0_ |= 0x00000004;
       onChanged();
       return getBackoffPolicyFieldBuilder().getBuilder();
     }
@@ -1300,7 +1305,7 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+     * <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
      */
     public apache.rocketmq.v2.RetryPolicyOrBuilder getBackoffPolicyOrBuilder() {
       if (backoffPolicyBuilder_ != null) {
@@ -1322,7 +1327,7 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+     * <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
      */
     private com.google.protobuf.SingleFieldBuilderV3<
         apache.rocketmq.v2.RetryPolicy, apache.rocketmq.v2.RetryPolicy.Builder, apache.rocketmq.v2.RetryPolicyOrBuilder> 
@@ -1350,7 +1355,7 @@ private static final long serialVersionUID = 0L;
      * @return Whether the requestTimeout field is set.
      */
     public boolean hasRequestTimeout() {
-      return ((bitField0_ & 0x00000004) != 0);
+      return ((bitField0_ & 0x00000008) != 0);
     }
     /**
      * <pre>
@@ -1384,7 +1389,7 @@ private static final long serialVersionUID = 0L;
       } else {
         requestTimeoutBuilder_.setMessage(value);
       }
-      bitField0_ |= 0x00000004;
+      bitField0_ |= 0x00000008;
       return this;
     }
     /**
@@ -1402,7 +1407,7 @@ private static final long serialVersionUID = 0L;
       } else {
         requestTimeoutBuilder_.setMessage(builderForValue.build());
       }
-      bitField0_ |= 0x00000004;
+      bitField0_ |= 0x00000008;
       return this;
     }
     /**
@@ -1414,7 +1419,7 @@ private static final long serialVersionUID = 0L;
      */
     public Builder mergeRequestTimeout(com.google.protobuf.Duration value) {
       if (requestTimeoutBuilder_ == null) {
-        if (((bitField0_ & 0x00000004) != 0) &&
+        if (((bitField0_ & 0x00000008) != 0) &&
             requestTimeout_ != null &&
             requestTimeout_ != com.google.protobuf.Duration.getDefaultInstance()) {
           requestTimeout_ =
@@ -1426,7 +1431,7 @@ private static final long serialVersionUID = 0L;
       } else {
         requestTimeoutBuilder_.mergeFrom(value);
       }
-      bitField0_ |= 0x00000004;
+      bitField0_ |= 0x00000008;
       return this;
     }
     /**
@@ -1443,7 +1448,7 @@ private static final long serialVersionUID = 0L;
       } else {
         requestTimeoutBuilder_.clear();
       }
-      bitField0_ = (bitField0_ & ~0x00000004);
+      bitField0_ = (bitField0_ & ~0x00000008);
       return this;
     }
     /**
@@ -1454,7 +1459,7 @@ private static final long serialVersionUID = 0L;
      * <code>optional .google.protobuf.Duration request_timeout = 4;</code>
      */
     public com.google.protobuf.Duration.Builder getRequestTimeoutBuilder() {
-      bitField0_ |= 0x00000004;
+      bitField0_ |= 0x00000008;
       onChanged();
       return getRequestTimeoutFieldBuilder().getBuilder();
     }
diff --git a/src/main/java/apache/rocketmq/v2/SettingsOrBuilder.java b/src/main/java/apache/rocketmq/v2/SettingsOrBuilder.java
index 0bdb176..66ca784 100644
--- a/src/main/java/apache/rocketmq/v2/SettingsOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v2/SettingsOrBuilder.java
@@ -62,7 +62,7 @@ public interface SettingsOrBuilder extends
    * the prior one depletes its lifecycle.
    * </pre>
    *
-   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+   * <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
    * @return Whether the backoffPolicy field is set.
    */
   boolean hasBackoffPolicy();
@@ -78,7 +78,7 @@ public interface SettingsOrBuilder extends
    * the prior one depletes its lifecycle.
    * </pre>
    *
-   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+   * <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
    * @return The backoffPolicy.
    */
   apache.rocketmq.v2.RetryPolicy getBackoffPolicy();
@@ -94,7 +94,7 @@ public interface SettingsOrBuilder extends
    * the prior one depletes its lifecycle.
    * </pre>
    *
-   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+   * <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
    */
   apache.rocketmq.v2.RetryPolicyOrBuilder getBackoffPolicyOrBuilder();
 
diff --git a/src/main/resources/proto/apache/rocketmq/v2/service.proto b/src/main/resources/proto/apache/rocketmq/v2/service.proto
index b9cf533..e9fb514 100644
--- a/src/main/resources/proto/apache/rocketmq/v2/service.proto
+++ b/src/main/resources/proto/apache/rocketmq/v2/service.proto
@@ -46,7 +46,10 @@ option java_outer_classname = "MQService";
 // access-point, which annotates tenant-id, instance-id or other
 // vendor-specific settings. Purpose-built name servers may respond customized
 // results based on these particular requirements.
-message QueryRouteRequest { Resource topic = 1; }
+message QueryRouteRequest {
+  Resource topic = 1;
+  Endpoints endpoints = 2;
+}
 
 message QueryRouteResponse {
   Status status = 1;
@@ -66,6 +69,7 @@ message SendMessageResponse {
 message QueryAssignmentRequest {
   Resource topic = 1;
   Resource group = 2;
+  Endpoints endpoints = 3;
 }
 
 message QueryAssignmentResponse {
@@ -80,6 +84,8 @@ message ReceiveMessageRequest {
   int32 batch_size = 4;
   // Required if client type is simple consumer.
   optional google.protobuf.Duration invisible_duration = 5;
+  // For message auto renew and clean
+  bool auto_renew = 6;
 }
 
 message ReceiveMessageResponse {
@@ -242,7 +248,7 @@ message Settings {
   // For FIFO messages, the interval should be relatively small because
   // messages of the same message group would not be readily available utill
   // the prior one depletes its lifecycle.
-  RetryPolicy backoff_policy = 3;
+  optional RetryPolicy backoff_policy = 3;
 
   // Request timeout for RPCs excluding long-polling.
   optional google.protobuf.Duration request_timeout = 4;
@@ -290,6 +296,9 @@ message ChangeInvisibleDurationRequest {
 
   // New invisible duration
   google.protobuf.Duration invisible_duration = 4;
+
+  // For message tracing
+  string message_id = 5;
 }
 
 message ChangeInvisibleDurationResponse {