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 bca856baf0c3ddaf4f13e2ca11585472df63fad1
Author: 凌楚 <[email protected]>
AuthorDate: Thu May 26 16:55:05 2022 +0800

    Apply IDL update
---
 src/main/java/apache/rocketmq/v2/MQService.java    | 174 ++---
 src/main/java/apache/rocketmq/v2/Metric.java       | 747 +++++++++++++++++++++
 .../java/apache/rocketmq/v2/MetricOrBuilder.java   |  46 ++
 src/main/java/apache/rocketmq/v2/Settings.java     | 188 ++++++
 .../java/apache/rocketmq/v2/SettingsOrBuilder.java |  15 +
 .../proto/apache/rocketmq/v2/service.proto         |   9 +
 6 files changed, 1099 insertions(+), 80 deletions(-)

diff --git a/src/main/java/apache/rocketmq/v2/MQService.java 
b/src/main/java/apache/rocketmq/v2/MQService.java
index 98d341f..7d7e3bf 100644
--- a/src/main/java/apache/rocketmq/v2/MQService.java
+++ b/src/main/java/apache/rocketmq/v2/MQService.java
@@ -144,6 +144,11 @@ public final class MQService {
   static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_apache_rocketmq_v2_Subscription_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_apache_rocketmq_v2_Metric_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_apache_rocketmq_v2_Metric_fieldAccessorTable;
   static final com.google.protobuf.Descriptors.Descriptor
     internal_static_apache_rocketmq_v2_Settings_descriptor;
   static final 
@@ -274,79 +279,82 @@ public final class MQService {
       "ze\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_" +
       "groupB\007\n\005_fifoB\025\n\023_receive_batch_sizeB\027\n" +
-      "\025_long_polling_timeout\"\344\003\n\010Settings\0228\n\013c" +
-      "lient_type\030\001 \001(\0162\036.apache.rocketmq.v2.Cl" +
-      "ientTypeH\001\210\001\001\0228\n\014access_point\030\002 
\001(\0132\035.ap" +
-      "ache.rocketmq.v2.EndpointsH\002\210\001\001\022<\n\016backo" +
-      "ff_policy\030\003 \001(\0132\037.apache.rocketmq.v2.Ret" +
-      "ryPolicyH\003\210\001\001\0227\n\017request_timeout\030\004 
\001(\0132\031" +
-      ".google.protobuf.DurationH\004\210\001\001\0224\n\npublis" +
-      "hing\030\005 \001(\0132\036.apache.rocketmq.v2.Publishi" +
-      "ngH\000\0228\n\014subscription\030\006 \001(\0132 .apache.rock" +
-      "etmq.v2.SubscriptionH\000\022*\n\nuser_agent\030\007 \001" +
-      "(\0132\026.apache.rocketmq.v2.UAB\t\n\007pub_subB\016\n" +
-      "\014_client_typeB\017\n\r_access_pointB\021\n\017_backo" +
-      "ff_policyB\022\n\020_request_timeout\"\252\004\n\020Teleme" +
-      "tryCommand\022/\n\006status\030\001 \001(\0132\032.apache.rock" +
-      "etmq.v2.StatusH\001\210\001\001\0220\n\010settings\030\002 
\001(\0132\034." +
-      "apache.rocketmq.v2.SettingsH\000\022B\n\022thread_" +
-      "stack_trace\030\003 \001(\0132$.apache.rocketmq.v2.T" +
-      "hreadStackTraceH\000\022H\n\025verify_message_resu" +
-      "lt\030\004 \001(\0132\'.apache.rocketmq.v2.VerifyMess" +
-      "ageResultH\000\022e\n$recover_orphaned_transact" +
-      "ion_command\030\005 \001(\01325.apache.rocketmq.v2.R" +
-      "ecoverOrphanedTransactionCommandH\000\022\\\n pr" +
-      "int_thread_stack_trace_command\030\006 \001(\01320.a" +
-      "pache.rocketmq.v2.PrintThreadStackTraceC" +
-      "ommandH\000\022J\n\026verify_message_command\030\007 \001(\013" +
-      "2(.apache.rocketmq.v2.VerifyMessageComma" +
-      "ndH\000B\t\n\007commandB\t\n\007_status\"\\\n\036NotifyClie" +
-      "ntTerminationRequest\0220\n\005group\030\001 \001(\0132\034.ap" +
-      "ache.rocketmq.v2.ResourceH\000\210\001\001B\010\n\006_group" +
-      "\"M\n\037NotifyClientTerminationResponse\022*\n\006s" +
-      "tatus\030\001 \001(\0132\032.apache.rocketmq.v2.Status\"" +
-      "\335\001\n\036ChangeInvisibleDurationRequest\022+\n\005gr" +
-      "oup\030\001 \001(\0132\034.apache.rocketmq.v2.Resource\022" +
-      "+\n\005topic\030\002 \001(\0132\034.apache.rocketmq.v2.Reso" +
-      "urce\022\026\n\016receipt_handle\030\003 \001(\t\0225\n\022invisibl" +
-      "e_duration\030\004 \001(\0132\031.google.protobuf.Durat" +
-      "ion\022\022\n\nmessage_id\030\005 \001(\t\"e\n\037ChangeInvisib" +
-      "leDurationResponse\022*\n\006status\030\001 \001(\0132\032.apa" +
-      "che.rocketmq.v2.Status\022\026\n\016receipt_handle" +
-      "\030\002 \001(\t2\340\t\n\020MessagingService\022]\n\nQueryRout" +
-      "e\022%.apache.rocketmq.v2.QueryRouteRequest" +
-      "\032&.apache.rocketmq.v2.QueryRouteResponse" +
-      "\"\000\022Z\n\tHeartbeat\022$.apache.rocketmq.v2.Hea" +
-      "rtbeatRequest\032%.apache.rocketmq.v2.Heart" +
-      "beatResponse\"\000\022`\n\013SendMessage\022&.apache.r" +
-      "ocketmq.v2.SendMessageRequest\032\'.apache.r" +
-      "ocketmq.v2.SendMessageResponse\"\000\022l\n\017Quer" +
-      "yAssignment\022*.apache.rocketmq.v2.QueryAs" +
-      "signmentRequest\032+.apache.rocketmq.v2.Que" +
-      "ryAssignmentResponse\"\000\022k\n\016ReceiveMessage" +
-      "\022).apache.rocketmq.v2.ReceiveMessageRequ" +
-      "est\032*.apache.rocketmq.v2.ReceiveMessageR" +
-      "esponse\"\0000\001\022]\n\nAckMessage\022%.apache.rocke" +
-      "tmq.v2.AckMessageRequest\032&.apache.rocket" +
-      "mq.v2.AckMessageResponse\"\000\022\234\001\n\037ForwardMe" +
-      "ssageToDeadLetterQueue\022:.apache.rocketmq" +
-      ".v2.ForwardMessageToDeadLetterQueueReque" +
-      "st\032;.apache.rocketmq.v2.ForwardMessageTo" +
-      "DeadLetterQueueResponse\"\000\022i\n\016EndTransact" +
-      "ion\022).apache.rocketmq.v2.EndTransactionR" +
-      "equest\032*.apache.rocketmq.v2.EndTransacti" +
-      "onResponse\"\000\022]\n\tTelemetry\022$.apache.rocke" +
-      "tmq.v2.TelemetryCommand\032$.apache.rocketm" +
-      "q.v2.TelemetryCommand\"\000(\0010\001\022\204\001\n\027NotifyCl" +
-      "ientTermination\0222.apache.rocketmq.v2.Not" +
-      "ifyClientTerminationRequest\0323.apache.roc" +
-      "ketmq.v2.NotifyClientTerminationResponse" +
-      "\"\000\022\204\001\n\027ChangeInvisibleDuration\0222.apache." +
-      "rocketmq.v2.ChangeInvisibleDurationReque" +
-      "st\0323.apache.rocketmq.v2.ChangeInvisibleD" +
-      "urationResponse\"\000B<\n\022apache.rocketmq.v2B" +
-      
"\tMQServiceP\001\240\001\001\330\001\001\252\002\022Apache.Rocketmq.V2b" +
-      "\006proto3"
+      "\025_long_polling_timeout\"g\n\006Metric\022\n\n\002on\030\001" +
+      " \001(\010\022<\n\020metric_endpoints\030\002 \001(\0132\035.apache." +
+      "rocketmq.v2.EndpointsH\000\210\001\001B\023\n\021_metric_en" +
+      "dpoints\"\220\004\n\010Settings\0228\n\013client_type\030\001 \001(" +
+      "\0162\036.apache.rocketmq.v2.ClientTypeH\001\210\001\001\0228" +
+      "\n\014access_point\030\002 \001(\0132\035.apache.rocketmq.v" +
+      "2.EndpointsH\002\210\001\001\022<\n\016backoff_policy\030\003 
\001(\013" +
+      "2\037.apache.rocketmq.v2.RetryPolicyH\003\210\001\001\0227" +
+      "\n\017request_timeout\030\004 \001(\0132\031.google.protobu" +
+      "f.DurationH\004\210\001\001\0224\n\npublishing\030\005 
\001(\0132\036.ap" +
+      "ache.rocketmq.v2.PublishingH\000\0228\n\014subscri" +
+      "ption\030\006 \001(\0132 .apache.rocketmq.v2.Subscri" +
+      "ptionH\000\022*\n\nuser_agent\030\007 \001(\0132\026.apache.roc" +
+      "ketmq.v2.UA\022*\n\006metric\030\010 \001(\0132\032.apache.roc" +
+      "ketmq.v2.MetricB\t\n\007pub_subB\016\n\014_client_ty" +
+      "peB\017\n\r_access_pointB\021\n\017_backoff_policyB\022" +
+      "\n\020_request_timeout\"\252\004\n\020TelemetryCommand\022" +
+      "/\n\006status\030\001 \001(\0132\032.apache.rocketmq.v2.Sta" +
+      "tusH\001\210\001\001\0220\n\010settings\030\002 
\001(\0132\034.apache.rock" +
+      "etmq.v2.SettingsH\000\022B\n\022thread_stack_trace" +
+      "\030\003 \001(\0132$.apache.rocketmq.v2.ThreadStackT" +
+      "raceH\000\022H\n\025verify_message_result\030\004 \001(\0132\'." +
+      "apache.rocketmq.v2.VerifyMessageResultH\000" +
+      "\022e\n$recover_orphaned_transaction_command" +
+      "\030\005 \001(\01325.apache.rocketmq.v2.RecoverOrpha" +
+      "nedTransactionCommandH\000\022\\\n print_thread_" +
+      "stack_trace_command\030\006 \001(\01320.apache.rocke" +
+      "tmq.v2.PrintThreadStackTraceCommandH\000\022J\n" +
+      "\026verify_message_command\030\007 \001(\0132(.apache.r" +
+      "ocketmq.v2.VerifyMessageCommandH\000B\t\n\007com" +
+      "mandB\t\n\007_status\"\\\n\036NotifyClientTerminati" +
+      "onRequest\0220\n\005group\030\001 \001(\0132\034.apache.rocket" +
+      "mq.v2.ResourceH\000\210\001\001B\010\n\006_group\"M\n\037NotifyC" +
+      "lientTerminationResponse\022*\n\006status\030\001 \001(\013" +
+      "2\032.apache.rocketmq.v2.Status\"\335\001\n\036ChangeI" +
+      "nvisibleDurationRequest\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\016rec" +
+      "eipt_handle\030\003 \001(\t\0225\n\022invisible_duration\030" +
+      "\004 \001(\0132\031.google.protobuf.Duration\022\022\n\nmess" +
+      "age_id\030\005 \001(\t\"e\n\037ChangeInvisibleDurationR" +
+      "esponse\022*\n\006status\030\001 \001(\0132\032.apache.rocketm" +
+      "q.v2.Status\022\026\n\016receipt_handle\030\002 \001(\t2\340\t\n\020" +
+      "MessagingService\022]\n\nQueryRoute\022%.apache." +
+      "rocketmq.v2.QueryRouteRequest\032&.apache.r" +
+      "ocketmq.v2.QueryRouteResponse\"\000\022Z\n\tHeart" +
+      "beat\022$.apache.rocketmq.v2.HeartbeatReque" +
+      "st\032%.apache.rocketmq.v2.HeartbeatRespons" +
+      "e\"\000\022`\n\013SendMessage\022&.apache.rocketmq.v2." +
+      "SendMessageRequest\032\'.apache.rocketmq.v2." +
+      "SendMessageResponse\"\000\022l\n\017QueryAssignment" +
+      "\022*.apache.rocketmq.v2.QueryAssignmentReq" +
+      "uest\032+.apache.rocketmq.v2.QueryAssignmen" +
+      "tResponse\"\000\022k\n\016ReceiveMessage\022).apache.r" +
+      "ocketmq.v2.ReceiveMessageRequest\032*.apach" +
+      "e.rocketmq.v2.ReceiveMessageResponse\"\0000\001" +
+      "\022]\n\nAckMessage\022%.apache.rocketmq.v2.AckM" +
+      "essageRequest\032&.apache.rocketmq.v2.AckMe" +
+      "ssageResponse\"\000\022\234\001\n\037ForwardMessageToDead" +
+      "LetterQueue\022:.apache.rocketmq.v2.Forward" +
+      "MessageToDeadLetterQueueRequest\032;.apache" +
+      ".rocketmq.v2.ForwardMessageToDeadLetterQ" +
+      "ueueResponse\"\000\022i\n\016EndTransaction\022).apach" +
+      "e.rocketmq.v2.EndTransactionRequest\032*.ap" +
+      "ache.rocketmq.v2.EndTransactionResponse\"" +
+      "\000\022]\n\tTelemetry\022$.apache.rocketmq.v2.Tele" +
+      "metryCommand\032$.apache.rocketmq.v2.Teleme" +
+      "tryCommand\"\000(\0010\001\022\204\001\n\027NotifyClientTermina" +
+      "tion\0222.apache.rocketmq.v2.NotifyClientTe" +
+      "rminationRequest\0323.apache.rocketmq.v2.No" +
+      "tifyClientTerminationResponse\"\000\022\204\001\n\027Chan" +
+      "geInvisibleDuration\0222.apache.rocketmq.v2" +
+      ".ChangeInvisibleDurationRequest\0323.apache" +
+      ".rocketmq.v2.ChangeInvisibleDurationResp" +
+      "onse\"\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,
@@ -510,38 +518,44 @@ public final class MQService {
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_Subscription_descriptor,
         new java.lang.String[] { "Group", "Subscriptions", "Fifo", 
"ReceiveBatchSize", "LongPollingTimeout", "Group", "Fifo", "ReceiveBatchSize", 
"LongPollingTimeout", });
-    internal_static_apache_rocketmq_v2_Settings_descriptor =
+    internal_static_apache_rocketmq_v2_Metric_descriptor =
       getDescriptor().getMessageTypes().get(26);
+    internal_static_apache_rocketmq_v2_Metric_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_apache_rocketmq_v2_Metric_descriptor,
+        new java.lang.String[] { "On", "MetricEndpoints", "MetricEndpoints", 
});
+    internal_static_apache_rocketmq_v2_Settings_descriptor =
+      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[] { "ClientType", "AccessPoint", "BackoffPolicy", 
"RequestTimeout", "Publishing", "Subscription", "UserAgent", "PubSub", 
"ClientType", "AccessPoint", "BackoffPolicy", "RequestTimeout", });
+        new java.lang.String[] { "ClientType", "AccessPoint", "BackoffPolicy", 
"RequestTimeout", "Publishing", "Subscription", "UserAgent", "Metric", 
"PubSub", "ClientType", "AccessPoint", "BackoffPolicy", "RequestTimeout", });
     internal_static_apache_rocketmq_v2_TelemetryCommand_descriptor =
-      getDescriptor().getMessageTypes().get(27);
+      getDescriptor().getMessageTypes().get(28);
     internal_static_apache_rocketmq_v2_TelemetryCommand_fieldAccessorTable = 
new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_TelemetryCommand_descriptor,
         new java.lang.String[] { "Status", "Settings", "ThreadStackTrace", 
"VerifyMessageResult", "RecoverOrphanedTransactionCommand", 
"PrintThreadStackTraceCommand", "VerifyMessageCommand", "Command", "Status", });
     
internal_static_apache_rocketmq_v2_NotifyClientTerminationRequest_descriptor =
-      getDescriptor().getMessageTypes().get(28);
+      getDescriptor().getMessageTypes().get(29);
     
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", "Group", });
     
internal_static_apache_rocketmq_v2_NotifyClientTerminationResponse_descriptor =
-      getDescriptor().getMessageTypes().get(29);
+      getDescriptor().getMessageTypes().get(30);
     
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(31);
     
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", "MessageId", });
     
internal_static_apache_rocketmq_v2_ChangeInvisibleDurationResponse_descriptor =
-      getDescriptor().getMessageTypes().get(31);
+      getDescriptor().getMessageTypes().get(32);
     
internal_static_apache_rocketmq_v2_ChangeInvisibleDurationResponse_fieldAccessorTable
 = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         
internal_static_apache_rocketmq_v2_ChangeInvisibleDurationResponse_descriptor,
diff --git a/src/main/java/apache/rocketmq/v2/Metric.java 
b/src/main/java/apache/rocketmq/v2/Metric.java
new file mode 100644
index 0000000..4fed424
--- /dev/null
+++ b/src/main/java/apache/rocketmq/v2/Metric.java
@@ -0,0 +1,747 @@
+// 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.Metric}
+ */
+public final class Metric extends
+    com.google.protobuf.GeneratedMessageV3 implements
+    // @@protoc_insertion_point(message_implements:apache.rocketmq.v2.Metric)
+    MetricOrBuilder {
+private static final long serialVersionUID = 0L;
+  // Use Metric.newBuilder() to construct.
+  private Metric(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    super(builder);
+  }
+  private Metric() {
+  }
+
+  @java.lang.Override
+  @SuppressWarnings({"unused"})
+  protected java.lang.Object newInstance(
+      UnusedPrivateParameter unused) {
+    return new Metric();
+  }
+
+  @java.lang.Override
+  public final com.google.protobuf.UnknownFieldSet
+  getUnknownFields() {
+    return this.unknownFields;
+  }
+  private Metric(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    this();
+    if (extensionRegistry == null) {
+      throw new java.lang.NullPointerException();
+    }
+    int mutable_bitField0_ = 0;
+    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: {
+
+            on_ = input.readBool();
+            break;
+          }
+          case 18: {
+            apache.rocketmq.v2.Endpoints.Builder subBuilder = null;
+            if (((bitField0_ & 0x00000001) != 0)) {
+              subBuilder = metricEndpoints_.toBuilder();
+            }
+            metricEndpoints_ = 
input.readMessage(apache.rocketmq.v2.Endpoints.parser(), extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(metricEndpoints_);
+              metricEndpoints_ = subBuilder.buildPartial();
+            }
+            bitField0_ |= 0x00000001;
+            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_Metric_descriptor;
+  }
+
+  @java.lang.Override
+  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internalGetFieldAccessorTable() {
+    return 
apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_Metric_fieldAccessorTable
+        .ensureFieldAccessorsInitialized(
+            apache.rocketmq.v2.Metric.class, 
apache.rocketmq.v2.Metric.Builder.class);
+  }
+
+  private int bitField0_;
+  public static final int ON_FIELD_NUMBER = 1;
+  private boolean on_;
+  /**
+   * <pre>
+   * Indicates that if client should export local metrics to server.
+   * </pre>
+   *
+   * <code>bool on = 1;</code>
+   * @return The on.
+   */
+  @java.lang.Override
+  public boolean getOn() {
+    return on_;
+  }
+
+  public static final int METRIC_ENDPOINTS_FIELD_NUMBER = 2;
+  private apache.rocketmq.v2.Endpoints metricEndpoints_;
+  /**
+   * <pre>
+   * The endpoint that client metrics should be exported to, which is required 
if the switch is on.
+   * </pre>
+   *
+   * <code>optional .apache.rocketmq.v2.Endpoints metric_endpoints = 2;</code>
+   * @return Whether the metricEndpoints field is set.
+   */
+  @java.lang.Override
+  public boolean hasMetricEndpoints() {
+    return ((bitField0_ & 0x00000001) != 0);
+  }
+  /**
+   * <pre>
+   * The endpoint that client metrics should be exported to, which is required 
if the switch is on.
+   * </pre>
+   *
+   * <code>optional .apache.rocketmq.v2.Endpoints metric_endpoints = 2;</code>
+   * @return The metricEndpoints.
+   */
+  @java.lang.Override
+  public apache.rocketmq.v2.Endpoints getMetricEndpoints() {
+    return metricEndpoints_ == null ? 
apache.rocketmq.v2.Endpoints.getDefaultInstance() : metricEndpoints_;
+  }
+  /**
+   * <pre>
+   * The endpoint that client metrics should be exported to, which is required 
if the switch is on.
+   * </pre>
+   *
+   * <code>optional .apache.rocketmq.v2.Endpoints metric_endpoints = 2;</code>
+   */
+  @java.lang.Override
+  public apache.rocketmq.v2.EndpointsOrBuilder getMetricEndpointsOrBuilder() {
+    return metricEndpoints_ == null ? 
apache.rocketmq.v2.Endpoints.getDefaultInstance() : metricEndpoints_;
+  }
+
+  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 (on_ != false) {
+      output.writeBool(1, on_);
+    }
+    if (((bitField0_ & 0x00000001) != 0)) {
+      output.writeMessage(2, getMetricEndpoints());
+    }
+    unknownFields.writeTo(output);
+  }
+
+  @java.lang.Override
+  public int getSerializedSize() {
+    int size = memoizedSize;
+    if (size != -1) return size;
+
+    size = 0;
+    if (on_ != false) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeBoolSize(1, on_);
+    }
+    if (((bitField0_ & 0x00000001) != 0)) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(2, getMetricEndpoints());
+    }
+    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.Metric)) {
+      return super.equals(obj);
+    }
+    apache.rocketmq.v2.Metric other = (apache.rocketmq.v2.Metric) obj;
+
+    if (getOn()
+        != other.getOn()) return false;
+    if (hasMetricEndpoints() != other.hasMetricEndpoints()) return false;
+    if (hasMetricEndpoints()) {
+      if (!getMetricEndpoints()
+          .equals(other.getMetricEndpoints())) 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) + ON_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+        getOn());
+    if (hasMetricEndpoints()) {
+      hash = (37 * hash) + METRIC_ENDPOINTS_FIELD_NUMBER;
+      hash = (53 * hash) + getMetricEndpoints().hashCode();
+    }
+    hash = (29 * hash) + unknownFields.hashCode();
+    memoizedHashCode = hash;
+    return hash;
+  }
+
+  public static apache.rocketmq.v2.Metric parseFrom(
+      java.nio.ByteBuffer data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static apache.rocketmq.v2.Metric 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.Metric parseFrom(
+      com.google.protobuf.ByteString data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static apache.rocketmq.v2.Metric 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.Metric parseFrom(byte[] data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static apache.rocketmq.v2.Metric parseFrom(
+      byte[] data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static apache.rocketmq.v2.Metric parseFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static apache.rocketmq.v2.Metric 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.Metric 
parseDelimitedFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input);
+  }
+  public static apache.rocketmq.v2.Metric 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.Metric parseFrom(
+      com.google.protobuf.CodedInputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static apache.rocketmq.v2.Metric 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.Metric 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.Metric}
+   */
+  public static final class Builder extends
+      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+      // @@protoc_insertion_point(builder_implements:apache.rocketmq.v2.Metric)
+      apache.rocketmq.v2.MetricOrBuilder {
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return 
apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_Metric_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return 
apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_Metric_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              apache.rocketmq.v2.Metric.class, 
apache.rocketmq.v2.Metric.Builder.class);
+    }
+
+    // Construct using apache.rocketmq.v2.Metric.newBuilder()
+    private Builder() {
+      maybeForceBuilderInitialization();
+    }
+
+    private Builder(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      super(parent);
+      maybeForceBuilderInitialization();
+    }
+    private void maybeForceBuilderInitialization() {
+      if (com.google.protobuf.GeneratedMessageV3
+              .alwaysUseFieldBuilders) {
+        getMetricEndpointsFieldBuilder();
+      }
+    }
+    @java.lang.Override
+    public Builder clear() {
+      super.clear();
+      on_ = false;
+
+      if (metricEndpointsBuilder_ == null) {
+        metricEndpoints_ = null;
+      } else {
+        metricEndpointsBuilder_.clear();
+      }
+      bitField0_ = (bitField0_ & ~0x00000001);
+      return this;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.Descriptor
+        getDescriptorForType() {
+      return 
apache.rocketmq.v2.MQService.internal_static_apache_rocketmq_v2_Metric_descriptor;
+    }
+
+    @java.lang.Override
+    public apache.rocketmq.v2.Metric getDefaultInstanceForType() {
+      return apache.rocketmq.v2.Metric.getDefaultInstance();
+    }
+
+    @java.lang.Override
+    public apache.rocketmq.v2.Metric build() {
+      apache.rocketmq.v2.Metric result = buildPartial();
+      if (!result.isInitialized()) {
+        throw newUninitializedMessageException(result);
+      }
+      return result;
+    }
+
+    @java.lang.Override
+    public apache.rocketmq.v2.Metric buildPartial() {
+      apache.rocketmq.v2.Metric result = new apache.rocketmq.v2.Metric(this);
+      int from_bitField0_ = bitField0_;
+      int to_bitField0_ = 0;
+      result.on_ = on_;
+      if (((from_bitField0_ & 0x00000001) != 0)) {
+        if (metricEndpointsBuilder_ == null) {
+          result.metricEndpoints_ = metricEndpoints_;
+        } else {
+          result.metricEndpoints_ = metricEndpointsBuilder_.build();
+        }
+        to_bitField0_ |= 0x00000001;
+      }
+      result.bitField0_ = to_bitField0_;
+      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.Metric) {
+        return mergeFrom((apache.rocketmq.v2.Metric)other);
+      } else {
+        super.mergeFrom(other);
+        return this;
+      }
+    }
+
+    public Builder mergeFrom(apache.rocketmq.v2.Metric other) {
+      if (other == apache.rocketmq.v2.Metric.getDefaultInstance()) return this;
+      if (other.getOn() != false) {
+        setOn(other.getOn());
+      }
+      if (other.hasMetricEndpoints()) {
+        mergeMetricEndpoints(other.getMetricEndpoints());
+      }
+      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.Metric parsedMessage = null;
+      try {
+        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        parsedMessage = (apache.rocketmq.v2.Metric) e.getUnfinishedMessage();
+        throw e.unwrapIOException();
+      } finally {
+        if (parsedMessage != null) {
+          mergeFrom(parsedMessage);
+        }
+      }
+      return this;
+    }
+    private int bitField0_;
+
+    private boolean on_ ;
+    /**
+     * <pre>
+     * Indicates that if client should export local metrics to server.
+     * </pre>
+     *
+     * <code>bool on = 1;</code>
+     * @return The on.
+     */
+    @java.lang.Override
+    public boolean getOn() {
+      return on_;
+    }
+    /**
+     * <pre>
+     * Indicates that if client should export local metrics to server.
+     * </pre>
+     *
+     * <code>bool on = 1;</code>
+     * @param value The on to set.
+     * @return This builder for chaining.
+     */
+    public Builder setOn(boolean value) {
+      
+      on_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * Indicates that if client should export local metrics to server.
+     * </pre>
+     *
+     * <code>bool on = 1;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearOn() {
+      
+      on_ = false;
+      onChanged();
+      return this;
+    }
+
+    private apache.rocketmq.v2.Endpoints metricEndpoints_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        apache.rocketmq.v2.Endpoints, apache.rocketmq.v2.Endpoints.Builder, 
apache.rocketmq.v2.EndpointsOrBuilder> metricEndpointsBuilder_;
+    /**
+     * <pre>
+     * The endpoint that client metrics should be exported to, which is 
required if the switch is on.
+     * </pre>
+     *
+     * <code>optional .apache.rocketmq.v2.Endpoints metric_endpoints = 
2;</code>
+     * @return Whether the metricEndpoints field is set.
+     */
+    public boolean hasMetricEndpoints() {
+      return ((bitField0_ & 0x00000001) != 0);
+    }
+    /**
+     * <pre>
+     * The endpoint that client metrics should be exported to, which is 
required if the switch is on.
+     * </pre>
+     *
+     * <code>optional .apache.rocketmq.v2.Endpoints metric_endpoints = 
2;</code>
+     * @return The metricEndpoints.
+     */
+    public apache.rocketmq.v2.Endpoints getMetricEndpoints() {
+      if (metricEndpointsBuilder_ == null) {
+        return metricEndpoints_ == null ? 
apache.rocketmq.v2.Endpoints.getDefaultInstance() : metricEndpoints_;
+      } else {
+        return metricEndpointsBuilder_.getMessage();
+      }
+    }
+    /**
+     * <pre>
+     * The endpoint that client metrics should be exported to, which is 
required if the switch is on.
+     * </pre>
+     *
+     * <code>optional .apache.rocketmq.v2.Endpoints metric_endpoints = 
2;</code>
+     */
+    public Builder setMetricEndpoints(apache.rocketmq.v2.Endpoints value) {
+      if (metricEndpointsBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        metricEndpoints_ = value;
+        onChanged();
+      } else {
+        metricEndpointsBuilder_.setMessage(value);
+      }
+      bitField0_ |= 0x00000001;
+      return this;
+    }
+    /**
+     * <pre>
+     * The endpoint that client metrics should be exported to, which is 
required if the switch is on.
+     * </pre>
+     *
+     * <code>optional .apache.rocketmq.v2.Endpoints metric_endpoints = 
2;</code>
+     */
+    public Builder setMetricEndpoints(
+        apache.rocketmq.v2.Endpoints.Builder builderForValue) {
+      if (metricEndpointsBuilder_ == null) {
+        metricEndpoints_ = builderForValue.build();
+        onChanged();
+      } else {
+        metricEndpointsBuilder_.setMessage(builderForValue.build());
+      }
+      bitField0_ |= 0x00000001;
+      return this;
+    }
+    /**
+     * <pre>
+     * The endpoint that client metrics should be exported to, which is 
required if the switch is on.
+     * </pre>
+     *
+     * <code>optional .apache.rocketmq.v2.Endpoints metric_endpoints = 
2;</code>
+     */
+    public Builder mergeMetricEndpoints(apache.rocketmq.v2.Endpoints value) {
+      if (metricEndpointsBuilder_ == null) {
+        if (((bitField0_ & 0x00000001) != 0) &&
+            metricEndpoints_ != null &&
+            metricEndpoints_ != 
apache.rocketmq.v2.Endpoints.getDefaultInstance()) {
+          metricEndpoints_ =
+            
apache.rocketmq.v2.Endpoints.newBuilder(metricEndpoints_).mergeFrom(value).buildPartial();
+        } else {
+          metricEndpoints_ = value;
+        }
+        onChanged();
+      } else {
+        metricEndpointsBuilder_.mergeFrom(value);
+      }
+      bitField0_ |= 0x00000001;
+      return this;
+    }
+    /**
+     * <pre>
+     * The endpoint that client metrics should be exported to, which is 
required if the switch is on.
+     * </pre>
+     *
+     * <code>optional .apache.rocketmq.v2.Endpoints metric_endpoints = 
2;</code>
+     */
+    public Builder clearMetricEndpoints() {
+      if (metricEndpointsBuilder_ == null) {
+        metricEndpoints_ = null;
+        onChanged();
+      } else {
+        metricEndpointsBuilder_.clear();
+      }
+      bitField0_ = (bitField0_ & ~0x00000001);
+      return this;
+    }
+    /**
+     * <pre>
+     * The endpoint that client metrics should be exported to, which is 
required if the switch is on.
+     * </pre>
+     *
+     * <code>optional .apache.rocketmq.v2.Endpoints metric_endpoints = 
2;</code>
+     */
+    public apache.rocketmq.v2.Endpoints.Builder getMetricEndpointsBuilder() {
+      bitField0_ |= 0x00000001;
+      onChanged();
+      return getMetricEndpointsFieldBuilder().getBuilder();
+    }
+    /**
+     * <pre>
+     * The endpoint that client metrics should be exported to, which is 
required if the switch is on.
+     * </pre>
+     *
+     * <code>optional .apache.rocketmq.v2.Endpoints metric_endpoints = 
2;</code>
+     */
+    public apache.rocketmq.v2.EndpointsOrBuilder getMetricEndpointsOrBuilder() 
{
+      if (metricEndpointsBuilder_ != null) {
+        return metricEndpointsBuilder_.getMessageOrBuilder();
+      } else {
+        return metricEndpoints_ == null ?
+            apache.rocketmq.v2.Endpoints.getDefaultInstance() : 
metricEndpoints_;
+      }
+    }
+    /**
+     * <pre>
+     * The endpoint that client metrics should be exported to, which is 
required if the switch is on.
+     * </pre>
+     *
+     * <code>optional .apache.rocketmq.v2.Endpoints metric_endpoints = 
2;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+        apache.rocketmq.v2.Endpoints, apache.rocketmq.v2.Endpoints.Builder, 
apache.rocketmq.v2.EndpointsOrBuilder> 
+        getMetricEndpointsFieldBuilder() {
+      if (metricEndpointsBuilder_ == null) {
+        metricEndpointsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            apache.rocketmq.v2.Endpoints, 
apache.rocketmq.v2.Endpoints.Builder, apache.rocketmq.v2.EndpointsOrBuilder>(
+                getMetricEndpoints(),
+                getParentForChildren(),
+                isClean());
+        metricEndpoints_ = null;
+      }
+      return metricEndpointsBuilder_;
+    }
+    @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.Metric)
+  }
+
+  // @@protoc_insertion_point(class_scope:apache.rocketmq.v2.Metric)
+  private static final apache.rocketmq.v2.Metric DEFAULT_INSTANCE;
+  static {
+    DEFAULT_INSTANCE = new apache.rocketmq.v2.Metric();
+  }
+
+  public static apache.rocketmq.v2.Metric getDefaultInstance() {
+    return DEFAULT_INSTANCE;
+  }
+
+  private static final com.google.protobuf.Parser<Metric>
+      PARSER = new com.google.protobuf.AbstractParser<Metric>() {
+    @java.lang.Override
+    public Metric parsePartialFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return new Metric(input, extensionRegistry);
+    }
+  };
+
+  public static com.google.protobuf.Parser<Metric> parser() {
+    return PARSER;
+  }
+
+  @java.lang.Override
+  public com.google.protobuf.Parser<Metric> getParserForType() {
+    return PARSER;
+  }
+
+  @java.lang.Override
+  public apache.rocketmq.v2.Metric getDefaultInstanceForType() {
+    return DEFAULT_INSTANCE;
+  }
+
+}
+
diff --git a/src/main/java/apache/rocketmq/v2/MetricOrBuilder.java 
b/src/main/java/apache/rocketmq/v2/MetricOrBuilder.java
new file mode 100644
index 0000000..5e2e185
--- /dev/null
+++ b/src/main/java/apache/rocketmq/v2/MetricOrBuilder.java
@@ -0,0 +1,46 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: apache/rocketmq/v2/service.proto
+
+package apache.rocketmq.v2;
+
+public interface MetricOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:apache.rocketmq.v2.Metric)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <pre>
+   * Indicates that if client should export local metrics to server.
+   * </pre>
+   *
+   * <code>bool on = 1;</code>
+   * @return The on.
+   */
+  boolean getOn();
+
+  /**
+   * <pre>
+   * The endpoint that client metrics should be exported to, which is required 
if the switch is on.
+   * </pre>
+   *
+   * <code>optional .apache.rocketmq.v2.Endpoints metric_endpoints = 2;</code>
+   * @return Whether the metricEndpoints field is set.
+   */
+  boolean hasMetricEndpoints();
+  /**
+   * <pre>
+   * The endpoint that client metrics should be exported to, which is required 
if the switch is on.
+   * </pre>
+   *
+   * <code>optional .apache.rocketmq.v2.Endpoints metric_endpoints = 2;</code>
+   * @return The metricEndpoints.
+   */
+  apache.rocketmq.v2.Endpoints getMetricEndpoints();
+  /**
+   * <pre>
+   * The endpoint that client metrics should be exported to, which is required 
if the switch is on.
+   * </pre>
+   *
+   * <code>optional .apache.rocketmq.v2.Endpoints metric_endpoints = 2;</code>
+   */
+  apache.rocketmq.v2.EndpointsOrBuilder getMetricEndpointsOrBuilder();
+}
diff --git a/src/main/java/apache/rocketmq/v2/Settings.java 
b/src/main/java/apache/rocketmq/v2/Settings.java
index 83234df..9229f97 100644
--- a/src/main/java/apache/rocketmq/v2/Settings.java
+++ b/src/main/java/apache/rocketmq/v2/Settings.java
@@ -136,6 +136,19 @@ private static final long serialVersionUID = 0L;
 
             break;
           }
+          case 66: {
+            apache.rocketmq.v2.Metric.Builder subBuilder = null;
+            if (metric_ != null) {
+              subBuilder = metric_.toBuilder();
+            }
+            metric_ = input.readMessage(apache.rocketmq.v2.Metric.parser(), 
extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(metric_);
+              metric_ = subBuilder.buildPartial();
+            }
+
+            break;
+          }
           default: {
             if (!parseUnknownField(
                 input, unknownFields, extensionRegistry, tag)) {
@@ -471,6 +484,32 @@ private static final long serialVersionUID = 0L;
     return getUserAgent();
   }
 
+  public static final int METRIC_FIELD_NUMBER = 8;
+  private apache.rocketmq.v2.Metric metric_;
+  /**
+   * <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+   * @return Whether the metric field is set.
+   */
+  @java.lang.Override
+  public boolean hasMetric() {
+    return metric_ != null;
+  }
+  /**
+   * <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+   * @return The metric.
+   */
+  @java.lang.Override
+  public apache.rocketmq.v2.Metric getMetric() {
+    return metric_ == null ? apache.rocketmq.v2.Metric.getDefaultInstance() : 
metric_;
+  }
+  /**
+   * <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+   */
+  @java.lang.Override
+  public apache.rocketmq.v2.MetricOrBuilder getMetricOrBuilder() {
+    return getMetric();
+  }
+
   private byte memoizedIsInitialized = -1;
   @java.lang.Override
   public final boolean isInitialized() {
@@ -506,6 +545,9 @@ private static final long serialVersionUID = 0L;
     if (userAgent_ != null) {
       output.writeMessage(7, getUserAgent());
     }
+    if (metric_ != null) {
+      output.writeMessage(8, getMetric());
+    }
     unknownFields.writeTo(output);
   }
 
@@ -543,6 +585,10 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(7, getUserAgent());
     }
+    if (metric_ != null) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(8, getMetric());
+    }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
     return size;
@@ -582,6 +628,11 @@ private static final long serialVersionUID = 0L;
       if (!getUserAgent()
           .equals(other.getUserAgent())) return false;
     }
+    if (hasMetric() != other.hasMetric()) return false;
+    if (hasMetric()) {
+      if (!getMetric()
+          .equals(other.getMetric())) return false;
+    }
     if (!getPubSubCase().equals(other.getPubSubCase())) return false;
     switch (pubSubCase_) {
       case 5:
@@ -626,6 +677,10 @@ private static final long serialVersionUID = 0L;
       hash = (37 * hash) + USER_AGENT_FIELD_NUMBER;
       hash = (53 * hash) + getUserAgent().hashCode();
     }
+    if (hasMetric()) {
+      hash = (37 * hash) + METRIC_FIELD_NUMBER;
+      hash = (53 * hash) + getMetric().hashCode();
+    }
     switch (pubSubCase_) {
       case 5:
         hash = (37 * hash) + PUBLISHING_FIELD_NUMBER;
@@ -800,6 +855,12 @@ private static final long serialVersionUID = 0L;
         userAgent_ = null;
         userAgentBuilder_ = null;
       }
+      if (metricBuilder_ == null) {
+        metric_ = null;
+      } else {
+        metric_ = null;
+        metricBuilder_ = null;
+      }
       pubSubCase_ = 0;
       pubSub_ = null;
       return this;
@@ -877,6 +938,11 @@ private static final long serialVersionUID = 0L;
       } else {
         result.userAgent_ = userAgentBuilder_.build();
       }
+      if (metricBuilder_ == null) {
+        result.metric_ = metric_;
+      } else {
+        result.metric_ = metricBuilder_.build();
+      }
       result.bitField0_ = to_bitField0_;
       result.pubSubCase_ = pubSubCase_;
       onBuilt();
@@ -942,6 +1008,9 @@ private static final long serialVersionUID = 0L;
       if (other.hasUserAgent()) {
         mergeUserAgent(other.getUserAgent());
       }
+      if (other.hasMetric()) {
+        mergeMetric(other.getMetric());
+      }
       switch (other.getPubSubCase()) {
         case PUBLISHING: {
           mergePublishing(other.getPublishing());
@@ -2016,6 +2085,125 @@ private static final long serialVersionUID = 0L;
       }
       return userAgentBuilder_;
     }
+
+    private apache.rocketmq.v2.Metric metric_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        apache.rocketmq.v2.Metric, apache.rocketmq.v2.Metric.Builder, 
apache.rocketmq.v2.MetricOrBuilder> metricBuilder_;
+    /**
+     * <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+     * @return Whether the metric field is set.
+     */
+    public boolean hasMetric() {
+      return metricBuilder_ != null || metric_ != null;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+     * @return The metric.
+     */
+    public apache.rocketmq.v2.Metric getMetric() {
+      if (metricBuilder_ == null) {
+        return metric_ == null ? 
apache.rocketmq.v2.Metric.getDefaultInstance() : metric_;
+      } else {
+        return metricBuilder_.getMessage();
+      }
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+     */
+    public Builder setMetric(apache.rocketmq.v2.Metric value) {
+      if (metricBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        metric_ = value;
+        onChanged();
+      } else {
+        metricBuilder_.setMessage(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+     */
+    public Builder setMetric(
+        apache.rocketmq.v2.Metric.Builder builderForValue) {
+      if (metricBuilder_ == null) {
+        metric_ = builderForValue.build();
+        onChanged();
+      } else {
+        metricBuilder_.setMessage(builderForValue.build());
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+     */
+    public Builder mergeMetric(apache.rocketmq.v2.Metric value) {
+      if (metricBuilder_ == null) {
+        if (metric_ != null) {
+          metric_ =
+            
apache.rocketmq.v2.Metric.newBuilder(metric_).mergeFrom(value).buildPartial();
+        } else {
+          metric_ = value;
+        }
+        onChanged();
+      } else {
+        metricBuilder_.mergeFrom(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+     */
+    public Builder clearMetric() {
+      if (metricBuilder_ == null) {
+        metric_ = null;
+        onChanged();
+      } else {
+        metric_ = null;
+        metricBuilder_ = null;
+      }
+
+      return this;
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+     */
+    public apache.rocketmq.v2.Metric.Builder getMetricBuilder() {
+      
+      onChanged();
+      return getMetricFieldBuilder().getBuilder();
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+     */
+    public apache.rocketmq.v2.MetricOrBuilder getMetricOrBuilder() {
+      if (metricBuilder_ != null) {
+        return metricBuilder_.getMessageOrBuilder();
+      } else {
+        return metric_ == null ?
+            apache.rocketmq.v2.Metric.getDefaultInstance() : metric_;
+      }
+    }
+    /**
+     * <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+        apache.rocketmq.v2.Metric, apache.rocketmq.v2.Metric.Builder, 
apache.rocketmq.v2.MetricOrBuilder> 
+        getMetricFieldBuilder() {
+      if (metricBuilder_ == null) {
+        metricBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            apache.rocketmq.v2.Metric, apache.rocketmq.v2.Metric.Builder, 
apache.rocketmq.v2.MetricOrBuilder>(
+                getMetric(),
+                getParentForChildren(),
+                isClean());
+        metric_ = null;
+      }
+      return metricBuilder_;
+    }
     @java.lang.Override
     public final Builder setUnknownFields(
         final com.google.protobuf.UnknownFieldSet unknownFields) {
diff --git a/src/main/java/apache/rocketmq/v2/SettingsOrBuilder.java 
b/src/main/java/apache/rocketmq/v2/SettingsOrBuilder.java
index ae7c8b1..8c955a7 100644
--- a/src/main/java/apache/rocketmq/v2/SettingsOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v2/SettingsOrBuilder.java
@@ -182,5 +182,20 @@ public interface SettingsOrBuilder extends
    */
   apache.rocketmq.v2.UAOrBuilder getUserAgentOrBuilder();
 
+  /**
+   * <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+   * @return Whether the metric field is set.
+   */
+  boolean hasMetric();
+  /**
+   * <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+   * @return The metric.
+   */
+  apache.rocketmq.v2.Metric getMetric();
+  /**
+   * <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+   */
+  apache.rocketmq.v2.MetricOrBuilder getMetricOrBuilder();
+
   public apache.rocketmq.v2.Settings.PubSubCase getPubSubCase();
 }
diff --git a/src/main/resources/proto/apache/rocketmq/v2/service.proto 
b/src/main/resources/proto/apache/rocketmq/v2/service.proto
index 35cf3a1..63fcb5d 100644
--- a/src/main/resources/proto/apache/rocketmq/v2/service.proto
+++ b/src/main/resources/proto/apache/rocketmq/v2/service.proto
@@ -234,6 +234,13 @@ message Subscription {
   optional google.protobuf.Duration long_polling_timeout = 5;
 }
 
+message Metric {
+  // Indicates that if client should export local metrics to server.
+  bool on = 1;
+  // The endpoint that client metrics should be exported to, which is required 
if the switch is on.
+  optional Endpoints metric_endpoints = 2;
+}
+
 message Settings {
   // Configurations for all clients.
   optional ClientType client_type = 1;
@@ -263,6 +270,8 @@ message Settings {
 
   // User agent details
   UA user_agent = 7;
+
+  Metric metric = 8;
 }
 
 message TelemetryCommand {

Reply via email to