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 4624e9c9f38e5e43927984a7f4aad12cdbec8422
Author: 凌楚 <[email protected]>
AuthorDate: Sun Apr 24 14:40:23 2022 +0800

    Apply IDL update
---
 .../apache/rocketmq/v2/ExponentialBackoff.java     | 476 ++++++++++++++++-----
 .../rocketmq/v2/ExponentialBackoffOrBuilder.java   |  36 +-
 src/main/java/apache/rocketmq/v2/MQDomain.java     | 209 ++++-----
 .../proto/apache/rocketmq/v2/definition.proto      |   7 +-
 4 files changed, 500 insertions(+), 228 deletions(-)

diff --git a/src/main/java/apache/rocketmq/v2/ExponentialBackoff.java 
b/src/main/java/apache/rocketmq/v2/ExponentialBackoff.java
index d03bf1e..9bc0756 100644
--- a/src/main/java/apache/rocketmq/v2/ExponentialBackoff.java
+++ b/src/main/java/apache/rocketmq/v2/ExponentialBackoff.java
@@ -4,6 +4,10 @@
 package apache.rocketmq.v2;
 
 /**
+ * <pre>
+ * https://en.wikipedia.org/wiki/Exponential_backoff
+ * </pre>
+ *
  * Protobuf type {@code apache.rocketmq.v2.ExponentialBackoff}
  */
 public final class ExponentialBackoff extends
@@ -48,19 +52,35 @@ private static final long serialVersionUID = 0L;
           case 0:
             done = true;
             break;
-          case 13: {
+          case 10: {
+            com.google.protobuf.Duration.Builder subBuilder = null;
+            if (initial_ != null) {
+              subBuilder = initial_.toBuilder();
+            }
+            initial_ = 
input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(initial_);
+              initial_ = subBuilder.buildPartial();
+            }
 
-            initialBackoff_ = input.readFloat();
             break;
           }
-          case 21: {
+          case 18: {
+            com.google.protobuf.Duration.Builder subBuilder = null;
+            if (max_ != null) {
+              subBuilder = max_.toBuilder();
+            }
+            max_ = input.readMessage(com.google.protobuf.Duration.parser(), 
extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(max_);
+              max_ = subBuilder.buildPartial();
+            }
 
-            maxBackoff_ = input.readFloat();
             break;
           }
           case 29: {
 
-            backoffMultiplier_ = input.readFloat();
+            multiplier_ = input.readFloat();
             break;
           }
           default: {
@@ -95,37 +115,67 @@ private static final long serialVersionUID = 0L;
             apache.rocketmq.v2.ExponentialBackoff.class, 
apache.rocketmq.v2.ExponentialBackoff.Builder.class);
   }
 
-  public static final int INITIAL_BACKOFF_FIELD_NUMBER = 1;
-  private float initialBackoff_;
+  public static final int INITIAL_FIELD_NUMBER = 1;
+  private com.google.protobuf.Duration initial_;
+  /**
+   * <code>.google.protobuf.Duration initial = 1;</code>
+   * @return Whether the initial field is set.
+   */
+  @java.lang.Override
+  public boolean hasInitial() {
+    return initial_ != null;
+  }
   /**
-   * <code>float initial_backoff = 1;</code>
-   * @return The initialBackoff.
+   * <code>.google.protobuf.Duration initial = 1;</code>
+   * @return The initial.
    */
   @java.lang.Override
-  public float getInitialBackoff() {
-    return initialBackoff_;
+  public com.google.protobuf.Duration getInitial() {
+    return initial_ == null ? 
com.google.protobuf.Duration.getDefaultInstance() : initial_;
+  }
+  /**
+   * <code>.google.protobuf.Duration initial = 1;</code>
+   */
+  @java.lang.Override
+  public com.google.protobuf.DurationOrBuilder getInitialOrBuilder() {
+    return getInitial();
   }
 
-  public static final int MAX_BACKOFF_FIELD_NUMBER = 2;
-  private float maxBackoff_;
+  public static final int MAX_FIELD_NUMBER = 2;
+  private com.google.protobuf.Duration max_;
+  /**
+   * <code>.google.protobuf.Duration max = 2;</code>
+   * @return Whether the max field is set.
+   */
+  @java.lang.Override
+  public boolean hasMax() {
+    return max_ != null;
+  }
   /**
-   * <code>float max_backoff = 2;</code>
-   * @return The maxBackoff.
+   * <code>.google.protobuf.Duration max = 2;</code>
+   * @return The max.
    */
   @java.lang.Override
-  public float getMaxBackoff() {
-    return maxBackoff_;
+  public com.google.protobuf.Duration getMax() {
+    return max_ == null ? com.google.protobuf.Duration.getDefaultInstance() : 
max_;
+  }
+  /**
+   * <code>.google.protobuf.Duration max = 2;</code>
+   */
+  @java.lang.Override
+  public com.google.protobuf.DurationOrBuilder getMaxOrBuilder() {
+    return getMax();
   }
 
-  public static final int BACKOFF_MULTIPLIER_FIELD_NUMBER = 3;
-  private float backoffMultiplier_;
+  public static final int MULTIPLIER_FIELD_NUMBER = 3;
+  private float multiplier_;
   /**
-   * <code>float backoff_multiplier = 3;</code>
-   * @return The backoffMultiplier.
+   * <code>float multiplier = 3;</code>
+   * @return The multiplier.
    */
   @java.lang.Override
-  public float getBackoffMultiplier() {
-    return backoffMultiplier_;
+  public float getMultiplier() {
+    return multiplier_;
   }
 
   private byte memoizedIsInitialized = -1;
@@ -142,14 +192,14 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (java.lang.Float.floatToRawIntBits(initialBackoff_) != 0) {
-      output.writeFloat(1, initialBackoff_);
+    if (initial_ != null) {
+      output.writeMessage(1, getInitial());
     }
-    if (java.lang.Float.floatToRawIntBits(maxBackoff_) != 0) {
-      output.writeFloat(2, maxBackoff_);
+    if (max_ != null) {
+      output.writeMessage(2, getMax());
     }
-    if (java.lang.Float.floatToRawIntBits(backoffMultiplier_) != 0) {
-      output.writeFloat(3, backoffMultiplier_);
+    if (java.lang.Float.floatToRawIntBits(multiplier_) != 0) {
+      output.writeFloat(3, multiplier_);
     }
     unknownFields.writeTo(output);
   }
@@ -160,17 +210,17 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (java.lang.Float.floatToRawIntBits(initialBackoff_) != 0) {
+    if (initial_ != null) {
       size += com.google.protobuf.CodedOutputStream
-        .computeFloatSize(1, initialBackoff_);
+        .computeMessageSize(1, getInitial());
     }
-    if (java.lang.Float.floatToRawIntBits(maxBackoff_) != 0) {
+    if (max_ != null) {
       size += com.google.protobuf.CodedOutputStream
-        .computeFloatSize(2, maxBackoff_);
+        .computeMessageSize(2, getMax());
     }
-    if (java.lang.Float.floatToRawIntBits(backoffMultiplier_) != 0) {
+    if (java.lang.Float.floatToRawIntBits(multiplier_) != 0) {
       size += com.google.protobuf.CodedOutputStream
-        .computeFloatSize(3, backoffMultiplier_);
+        .computeFloatSize(3, multiplier_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -187,15 +237,19 @@ private static final long serialVersionUID = 0L;
     }
     apache.rocketmq.v2.ExponentialBackoff other = 
(apache.rocketmq.v2.ExponentialBackoff) obj;
 
-    if (java.lang.Float.floatToIntBits(getInitialBackoff())
-        != java.lang.Float.floatToIntBits(
-            other.getInitialBackoff())) return false;
-    if (java.lang.Float.floatToIntBits(getMaxBackoff())
-        != java.lang.Float.floatToIntBits(
-            other.getMaxBackoff())) return false;
-    if (java.lang.Float.floatToIntBits(getBackoffMultiplier())
+    if (hasInitial() != other.hasInitial()) return false;
+    if (hasInitial()) {
+      if (!getInitial()
+          .equals(other.getInitial())) return false;
+    }
+    if (hasMax() != other.hasMax()) return false;
+    if (hasMax()) {
+      if (!getMax()
+          .equals(other.getMax())) return false;
+    }
+    if (java.lang.Float.floatToIntBits(getMultiplier())
         != java.lang.Float.floatToIntBits(
-            other.getBackoffMultiplier())) return false;
+            other.getMultiplier())) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -207,15 +261,17 @@ private static final long serialVersionUID = 0L;
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + INITIAL_BACKOFF_FIELD_NUMBER;
-    hash = (53 * hash) + java.lang.Float.floatToIntBits(
-        getInitialBackoff());
-    hash = (37 * hash) + MAX_BACKOFF_FIELD_NUMBER;
-    hash = (53 * hash) + java.lang.Float.floatToIntBits(
-        getMaxBackoff());
-    hash = (37 * hash) + BACKOFF_MULTIPLIER_FIELD_NUMBER;
+    if (hasInitial()) {
+      hash = (37 * hash) + INITIAL_FIELD_NUMBER;
+      hash = (53 * hash) + getInitial().hashCode();
+    }
+    if (hasMax()) {
+      hash = (37 * hash) + MAX_FIELD_NUMBER;
+      hash = (53 * hash) + getMax().hashCode();
+    }
+    hash = (37 * hash) + MULTIPLIER_FIELD_NUMBER;
     hash = (53 * hash) + java.lang.Float.floatToIntBits(
-        getBackoffMultiplier());
+        getMultiplier());
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
@@ -312,6 +368,10 @@ private static final long serialVersionUID = 0L;
     return builder;
   }
   /**
+   * <pre>
+   * https://en.wikipedia.org/wiki/Exponential_backoff
+   * </pre>
+   *
    * Protobuf type {@code apache.rocketmq.v2.ExponentialBackoff}
    */
   public static final class Builder extends
@@ -349,11 +409,19 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      initialBackoff_ = 0F;
-
-      maxBackoff_ = 0F;
-
-      backoffMultiplier_ = 0F;
+      if (initialBuilder_ == null) {
+        initial_ = null;
+      } else {
+        initial_ = null;
+        initialBuilder_ = null;
+      }
+      if (maxBuilder_ == null) {
+        max_ = null;
+      } else {
+        max_ = null;
+        maxBuilder_ = null;
+      }
+      multiplier_ = 0F;
 
       return this;
     }
@@ -381,9 +449,17 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public apache.rocketmq.v2.ExponentialBackoff buildPartial() {
       apache.rocketmq.v2.ExponentialBackoff result = new 
apache.rocketmq.v2.ExponentialBackoff(this);
-      result.initialBackoff_ = initialBackoff_;
-      result.maxBackoff_ = maxBackoff_;
-      result.backoffMultiplier_ = backoffMultiplier_;
+      if (initialBuilder_ == null) {
+        result.initial_ = initial_;
+      } else {
+        result.initial_ = initialBuilder_.build();
+      }
+      if (maxBuilder_ == null) {
+        result.max_ = max_;
+      } else {
+        result.max_ = maxBuilder_.build();
+      }
+      result.multiplier_ = multiplier_;
       onBuilt();
       return result;
     }
@@ -432,14 +508,14 @@ private static final long serialVersionUID = 0L;
 
     public Builder mergeFrom(apache.rocketmq.v2.ExponentialBackoff other) {
       if (other == apache.rocketmq.v2.ExponentialBackoff.getDefaultInstance()) 
return this;
-      if (other.getInitialBackoff() != 0F) {
-        setInitialBackoff(other.getInitialBackoff());
+      if (other.hasInitial()) {
+        mergeInitial(other.getInitial());
       }
-      if (other.getMaxBackoff() != 0F) {
-        setMaxBackoff(other.getMaxBackoff());
+      if (other.hasMax()) {
+        mergeMax(other.getMax());
       }
-      if (other.getBackoffMultiplier() != 0F) {
-        setBackoffMultiplier(other.getBackoffMultiplier());
+      if (other.getMultiplier() != 0F) {
+        setMultiplier(other.getMultiplier());
       }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
@@ -470,95 +546,271 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
-    private float initialBackoff_ ;
+    private com.google.protobuf.Duration initial_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, 
com.google.protobuf.DurationOrBuilder> initialBuilder_;
     /**
-     * <code>float initial_backoff = 1;</code>
-     * @return The initialBackoff.
+     * <code>.google.protobuf.Duration initial = 1;</code>
+     * @return Whether the initial field is set.
      */
-    @java.lang.Override
-    public float getInitialBackoff() {
-      return initialBackoff_;
+    public boolean hasInitial() {
+      return initialBuilder_ != null || initial_ != null;
     }
     /**
-     * <code>float initial_backoff = 1;</code>
-     * @param value The initialBackoff to set.
-     * @return This builder for chaining.
+     * <code>.google.protobuf.Duration initial = 1;</code>
+     * @return The initial.
      */
-    public Builder setInitialBackoff(float value) {
-      
-      initialBackoff_ = value;
-      onChanged();
+    public com.google.protobuf.Duration getInitial() {
+      if (initialBuilder_ == null) {
+        return initial_ == null ? 
com.google.protobuf.Duration.getDefaultInstance() : initial_;
+      } else {
+        return initialBuilder_.getMessage();
+      }
+    }
+    /**
+     * <code>.google.protobuf.Duration initial = 1;</code>
+     */
+    public Builder setInitial(com.google.protobuf.Duration value) {
+      if (initialBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        initial_ = value;
+        onChanged();
+      } else {
+        initialBuilder_.setMessage(value);
+      }
+
       return this;
     }
     /**
-     * <code>float initial_backoff = 1;</code>
-     * @return This builder for chaining.
+     * <code>.google.protobuf.Duration initial = 1;</code>
      */
-    public Builder clearInitialBackoff() {
-      
-      initialBackoff_ = 0F;
-      onChanged();
+    public Builder setInitial(
+        com.google.protobuf.Duration.Builder builderForValue) {
+      if (initialBuilder_ == null) {
+        initial_ = builderForValue.build();
+        onChanged();
+      } else {
+        initialBuilder_.setMessage(builderForValue.build());
+      }
+
       return this;
     }
+    /**
+     * <code>.google.protobuf.Duration initial = 1;</code>
+     */
+    public Builder mergeInitial(com.google.protobuf.Duration value) {
+      if (initialBuilder_ == null) {
+        if (initial_ != null) {
+          initial_ =
+            
com.google.protobuf.Duration.newBuilder(initial_).mergeFrom(value).buildPartial();
+        } else {
+          initial_ = value;
+        }
+        onChanged();
+      } else {
+        initialBuilder_.mergeFrom(value);
+      }
 
-    private float maxBackoff_ ;
+      return this;
+    }
     /**
-     * <code>float max_backoff = 2;</code>
-     * @return The maxBackoff.
+     * <code>.google.protobuf.Duration initial = 1;</code>
      */
-    @java.lang.Override
-    public float getMaxBackoff() {
-      return maxBackoff_;
+    public Builder clearInitial() {
+      if (initialBuilder_ == null) {
+        initial_ = null;
+        onChanged();
+      } else {
+        initial_ = null;
+        initialBuilder_ = null;
+      }
+
+      return this;
     }
     /**
-     * <code>float max_backoff = 2;</code>
-     * @param value The maxBackoff to set.
-     * @return This builder for chaining.
+     * <code>.google.protobuf.Duration initial = 1;</code>
      */
-    public Builder setMaxBackoff(float value) {
+    public com.google.protobuf.Duration.Builder getInitialBuilder() {
       
-      maxBackoff_ = value;
       onChanged();
+      return getInitialFieldBuilder().getBuilder();
+    }
+    /**
+     * <code>.google.protobuf.Duration initial = 1;</code>
+     */
+    public com.google.protobuf.DurationOrBuilder getInitialOrBuilder() {
+      if (initialBuilder_ != null) {
+        return initialBuilder_.getMessageOrBuilder();
+      } else {
+        return initial_ == null ?
+            com.google.protobuf.Duration.getDefaultInstance() : initial_;
+      }
+    }
+    /**
+     * <code>.google.protobuf.Duration initial = 1;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, 
com.google.protobuf.DurationOrBuilder> 
+        getInitialFieldBuilder() {
+      if (initialBuilder_ == null) {
+        initialBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            com.google.protobuf.Duration, 
com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
+                getInitial(),
+                getParentForChildren(),
+                isClean());
+        initial_ = null;
+      }
+      return initialBuilder_;
+    }
+
+    private com.google.protobuf.Duration max_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, 
com.google.protobuf.DurationOrBuilder> maxBuilder_;
+    /**
+     * <code>.google.protobuf.Duration max = 2;</code>
+     * @return Whether the max field is set.
+     */
+    public boolean hasMax() {
+      return maxBuilder_ != null || max_ != null;
+    }
+    /**
+     * <code>.google.protobuf.Duration max = 2;</code>
+     * @return The max.
+     */
+    public com.google.protobuf.Duration getMax() {
+      if (maxBuilder_ == null) {
+        return max_ == null ? 
com.google.protobuf.Duration.getDefaultInstance() : max_;
+      } else {
+        return maxBuilder_.getMessage();
+      }
+    }
+    /**
+     * <code>.google.protobuf.Duration max = 2;</code>
+     */
+    public Builder setMax(com.google.protobuf.Duration value) {
+      if (maxBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        max_ = value;
+        onChanged();
+      } else {
+        maxBuilder_.setMessage(value);
+      }
+
       return this;
     }
     /**
-     * <code>float max_backoff = 2;</code>
-     * @return This builder for chaining.
+     * <code>.google.protobuf.Duration max = 2;</code>
      */
-    public Builder clearMaxBackoff() {
+    public Builder setMax(
+        com.google.protobuf.Duration.Builder builderForValue) {
+      if (maxBuilder_ == null) {
+        max_ = builderForValue.build();
+        onChanged();
+      } else {
+        maxBuilder_.setMessage(builderForValue.build());
+      }
+
+      return this;
+    }
+    /**
+     * <code>.google.protobuf.Duration max = 2;</code>
+     */
+    public Builder mergeMax(com.google.protobuf.Duration value) {
+      if (maxBuilder_ == null) {
+        if (max_ != null) {
+          max_ =
+            
com.google.protobuf.Duration.newBuilder(max_).mergeFrom(value).buildPartial();
+        } else {
+          max_ = value;
+        }
+        onChanged();
+      } else {
+        maxBuilder_.mergeFrom(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.google.protobuf.Duration max = 2;</code>
+     */
+    public Builder clearMax() {
+      if (maxBuilder_ == null) {
+        max_ = null;
+        onChanged();
+      } else {
+        max_ = null;
+        maxBuilder_ = null;
+      }
+
+      return this;
+    }
+    /**
+     * <code>.google.protobuf.Duration max = 2;</code>
+     */
+    public com.google.protobuf.Duration.Builder getMaxBuilder() {
       
-      maxBackoff_ = 0F;
       onChanged();
-      return this;
+      return getMaxFieldBuilder().getBuilder();
+    }
+    /**
+     * <code>.google.protobuf.Duration max = 2;</code>
+     */
+    public com.google.protobuf.DurationOrBuilder getMaxOrBuilder() {
+      if (maxBuilder_ != null) {
+        return maxBuilder_.getMessageOrBuilder();
+      } else {
+        return max_ == null ?
+            com.google.protobuf.Duration.getDefaultInstance() : max_;
+      }
+    }
+    /**
+     * <code>.google.protobuf.Duration max = 2;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, 
com.google.protobuf.DurationOrBuilder> 
+        getMaxFieldBuilder() {
+      if (maxBuilder_ == null) {
+        maxBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            com.google.protobuf.Duration, 
com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
+                getMax(),
+                getParentForChildren(),
+                isClean());
+        max_ = null;
+      }
+      return maxBuilder_;
     }
 
-    private float backoffMultiplier_ ;
+    private float multiplier_ ;
     /**
-     * <code>float backoff_multiplier = 3;</code>
-     * @return The backoffMultiplier.
+     * <code>float multiplier = 3;</code>
+     * @return The multiplier.
      */
     @java.lang.Override
-    public float getBackoffMultiplier() {
-      return backoffMultiplier_;
+    public float getMultiplier() {
+      return multiplier_;
     }
     /**
-     * <code>float backoff_multiplier = 3;</code>
-     * @param value The backoffMultiplier to set.
+     * <code>float multiplier = 3;</code>
+     * @param value The multiplier to set.
      * @return This builder for chaining.
      */
-    public Builder setBackoffMultiplier(float value) {
+    public Builder setMultiplier(float value) {
       
-      backoffMultiplier_ = value;
+      multiplier_ = value;
       onChanged();
       return this;
     }
     /**
-     * <code>float backoff_multiplier = 3;</code>
+     * <code>float multiplier = 3;</code>
      * @return This builder for chaining.
      */
-    public Builder clearBackoffMultiplier() {
+    public Builder clearMultiplier() {
       
-      backoffMultiplier_ = 0F;
+      multiplier_ = 0F;
       onChanged();
       return this;
     }
diff --git a/src/main/java/apache/rocketmq/v2/ExponentialBackoffOrBuilder.java 
b/src/main/java/apache/rocketmq/v2/ExponentialBackoffOrBuilder.java
index a864d6d..83ba49a 100644
--- a/src/main/java/apache/rocketmq/v2/ExponentialBackoffOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v2/ExponentialBackoffOrBuilder.java
@@ -8,20 +8,38 @@ public interface ExponentialBackoffOrBuilder extends
     com.google.protobuf.MessageOrBuilder {
 
   /**
-   * <code>float initial_backoff = 1;</code>
-   * @return The initialBackoff.
+   * <code>.google.protobuf.Duration initial = 1;</code>
+   * @return Whether the initial field is set.
    */
-  float getInitialBackoff();
+  boolean hasInitial();
+  /**
+   * <code>.google.protobuf.Duration initial = 1;</code>
+   * @return The initial.
+   */
+  com.google.protobuf.Duration getInitial();
+  /**
+   * <code>.google.protobuf.Duration initial = 1;</code>
+   */
+  com.google.protobuf.DurationOrBuilder getInitialOrBuilder();
 
   /**
-   * <code>float max_backoff = 2;</code>
-   * @return The maxBackoff.
+   * <code>.google.protobuf.Duration max = 2;</code>
+   * @return Whether the max field is set.
+   */
+  boolean hasMax();
+  /**
+   * <code>.google.protobuf.Duration max = 2;</code>
+   * @return The max.
+   */
+  com.google.protobuf.Duration getMax();
+  /**
+   * <code>.google.protobuf.Duration max = 2;</code>
    */
-  float getMaxBackoff();
+  com.google.protobuf.DurationOrBuilder getMaxOrBuilder();
 
   /**
-   * <code>float backoff_multiplier = 3;</code>
-   * @return The backoffMultiplier.
+   * <code>float multiplier = 3;</code>
+   * @return The multiplier.
    */
-  float getBackoffMultiplier();
+  float getMultiplier();
 }
diff --git a/src/main/java/apache/rocketmq/v2/MQDomain.java 
b/src/main/java/apache/rocketmq/v2/MQDomain.java
index ab2def2..bbcbce2 100644
--- a/src/main/java/apache/rocketmq/v2/MQDomain.java
+++ b/src/main/java/apache/rocketmq/v2/MQDomain.java
@@ -117,109 +117,110 @@ public final class MQDomain {
       "\030\001 \001(\005\022E\n\023exponential_backoff\030\002 
\001(\0132&.ap" +
       "ache.rocketmq.v2.ExponentialBackoffH\000\022C\n" +
       "\022customized_backoff\030\003 \001(\0132%.apache.rocke" +
-      "tmq.v2.CustomizedBackoffH\000B\n\n\010strategy\"^" +
-      "\n\022ExponentialBackoff\022\027\n\017initial_backoff\030" +
-      "\001 \001(\002\022\023\n\013max_backoff\030\002 
\001(\002\022\032\n\022backoff_mu" +
-      "ltiplier\030\003 \001(\002\"<\n\021CustomizedBackoff\022\'\n\004n" +
-      "ext\030\001 \003(\0132\031.google.protobuf.Duration\"4\n\010" +
-      "Resource\022\032\n\022resource_namespace\030\001 \001(\t\022\014\n\004" 
+
-      "name\030\002 \001(\t\"z\n\021SubscriptionEntry\022+\n\005topic" +
-      "\030\001 \001(\0132\034.apache.rocketmq.v2.Resource\0228\n\n" +
-      "expression\030\002 \001(\0132$.apache.rocketmq.v2.Fi" +
-      "lterExpression\"%\n\007Address\022\014\n\004host\030\001 \001(\t\022" +
-      "\014\n\004port\030\002 
\001(\005\"n\n\tEndpoints\0221\n\006scheme\030\001 \001" +
-      "(\0162!.apache.rocketmq.v2.AddressScheme\022.\n" +
-      "\taddresses\030\002 \003(\0132\033.apache.rocketmq.v2.Ad" +
-      "dress\"T\n\006Broker\022\014\n\004name\030\001 
\001(\t\022\n\n\002id\030\002 \001(" +
-      "\005\0220\n\tendpoints\030\003 \001(\0132\035.apache.rocketmq.v" +
-      "2.Endpoints\"\346\001\n\014MessageQueue\022+\n\005topic\030\001 " +
-      "\001(\0132\034.apache.rocketmq.v2.Resource\022\n\n\002id\030" +
-      "\002 \001(\005\0222\n\npermission\030\003 \001(\0162\036.apache.rocke" +
-      "tmq.v2.Permission\022*\n\006broker\030\004 \001(\0132\032.apac" +
-      "he.rocketmq.v2.Broker\022=\n\024accept_message_" +
-      "types\030\005 \003(\0162\037.apache.rocketmq.v2.Message" +
-      "Type\"H\n\006Digest\022,\n\004type\030\001 \001(\0162\036.apache.ro" +
-      "cketmq.v2.DigestType\022\020\n\010checksum\030\002 \001(\t\"\264" +
-      "\007\n\020SystemProperties\022\020\n\003tag\030\001 
\001(\tH\000\210\001\001\022\014\n" +
-      "\004keys\030\002 \003(\t\022\022\n\nmessage_id\030\003 
\001(\t\022/\n\013body_" +
-      "digest\030\004 \001(\0132\032.apache.rocketmq.v2.Digest" +
-      "\0223\n\rbody_encoding\030\005 \001(\0162\034.apache.rocketm" +
-      "q.v2.Encoding\0225\n\014message_type\030\006 \001(\0162\037.ap" +
-      "ache.rocketmq.v2.MessageType\0222\n\016born_tim" +
-      "estamp\030\007 \001(\0132\032.google.protobuf.Timestamp" +
-      "\022\021\n\tborn_host\030\010 \001(\t\0228\n\017store_timestamp\030\t" +
-      " \001(\0132\032.google.protobuf.TimestampH\001\210\001\001\022\022\n" +
-      "\nstore_host\030\n \001(\t\022;\n\022delivery_timestamp\030" +
-      "\013 \001(\0132\032.google.protobuf.TimestampH\002\210\001\001\022\033" 
+
-      "\n\016receipt_handle\030\014 
\001(\tH\003\210\001\001\022\020\n\010queue_id\030" +
-      "\r \001(\005\022\031\n\014queue_offset\030\016 
\001(\003H\004\210\001\001\022:\n\022invi" +
-      "sible_duration\030\017 \001(\0132\031.google.protobuf.D" +
-      "urationH\005\210\001\001\022\035\n\020delivery_attempt\030\020 
\001(\005H\006" +
-      "\210\001\001\022\032\n\rmessage_group\030\021 
\001(\tH\007\210\001\001\022\032\n\rtrace" +
-      "_context\030\022 \001(\tH\010\210\001\001\022N\n&orphaned_transact" +
-      "ion_recovery_duration\030\023 \001(\0132\031.google.pro" +
-      "tobuf.DurationH\t\210\001\001B\006\n\004_tagB\022\n\020_store_ti" +
-      "mestampB\025\n\023_delivery_timestampB\021\n\017_recei" +
-      "pt_handleB\017\n\r_queue_offsetB\025\n\023_invisible" +
-      "_durationB\023\n\021_delivery_attemptB\020\n\016_messa" +
-      "ge_groupB\020\n\016_trace_contextB)\n\'_orphaned_" +
-      "transaction_recovery_duration\"\206\002\n\007Messag" +
-      "e\022+\n\005topic\030\001 \001(\0132\034.apache.rocketmq.v2.Re" +
-      "source\022H\n\017user_properties\030\002 \003(\0132/.apache" +
-      ".rocketmq.v2.Message.UserPropertiesEntry" +
-      "\022?\n\021system_properties\030\003 \001(\0132$.apache.roc" +
-      "ketmq.v2.SystemProperties\022\014\n\004body\030\004 \001(\014\032" +
-      "5\n\023UserPropertiesEntry\022\013\n\003key\030\001 
\001(\t\022\r\n\005v" +
-      "alue\030\002 \001(\t:\0028\001\"E\n\nAssignment\0227\n\rmessage_" +
-      "queue\030\001 \001(\0132 .apache.rocketmq.v2.Message" +
-      "Queue\"I\n\013SendReceipt\022\022\n\nmessage_id\030\001 \001(\t" +
-      "\022\026\n\016transaction_id\030\002 
\001(\t\022\016\n\006offset\030\003 \001(\003" +
-      "\"A\n\006Status\022&\n\004code\030\001 \001(\0162\030.apache.rocket" +
-      "mq.v2.Code\022\017\n\007message\030\002 \001(\t*Y\n\025Transacti" +
-      "onResolution\022&\n\"TRANSACTION_RESOLUTION_U" +
-      
"NSPECIFIED\020\000\022\n\n\006COMMIT\020\001\022\014\n\010ROLLBACK\020\002*W" +
-      "\n\021TransactionSource\022\026\n\022SOURCE_UNSPECIFIE" +
-      "D\020\000\022\021\n\rSOURCE_CLIENT\020\001\022\027\n\023SOURCE_SERVER_" 
+
-      "CHECK\020\002*W\n\nPermission\022\032\n\026PERMISSION_UNSP" +
-      
"ECIFIED\020\000\022\010\n\004NONE\020\001\022\010\n\004READ\020\002\022\t\n\005WRITE\020\003"
 +
-      "\022\016\n\nREAD_WRITE\020\004*;\n\nFilterType\022\033\n\027FILTER" +
-      
"_TYPE_UNSPECIFIED\020\000\022\007\n\003TAG\020\001\022\007\n\003SQL\020\002*T\n"
 +
-      "\rAddressScheme\022\036\n\032ADDRESS_SCHEME_UNSPECI" +
-      
"FIED\020\000\022\010\n\004IPv4\020\001\022\010\n\004IPv6\020\002\022\017\n\013DOMAIN_NAM"
 +
-      "E\020\003*]\n\013MessageType\022\034\n\030MESSAGE_TYPE_UNSPE" +
-      
"CIFIED\020\000\022\n\n\006NORMAL\020\001\022\010\n\004FIFO\020\002\022\t\n\005DELAY\020"
 +
-      
"\003\022\017\n\013TRANSACTION\020\004*G\n\nDigestType\022\033\n\027DIGE" +
-      
"ST_TYPE_UNSPECIFIED\020\000\022\t\n\005CRC32\020\001\022\007\n\003MD5\020" +
-      
"\002\022\010\n\004SHA1\020\003*_\n\nClientType\022\033\n\027CLIENT_TYPE" +
-      "_UNSPECIFIED\020\000\022\014\n\010PRODUCER\020\001\022\021\n\rPUSH_CON" 
+
-      "SUMER\020\002\022\023\n\017SIMPLE_CONSUMER\020\003*<\n\010Encoding" +
-      
"\022\030\n\024ENCODING_UNSPECIFIED\020\000\022\014\n\010IDENTITY\020\001" +
-      
"\022\010\n\004GZIP\020\002*\272\007\n\004Code\022\006\n\002OK\020\000\022\030\n\024ILLEGAL_A"
 +
-      "CCESS_POINT\020\001\022\021\n\rILLEGAL_TOPIC\020\002\022\032\n\026ILLE" 
+
-      "GAL_CONSUMER_GROUP\020\003\022\027\n\023ILLEGAL_MESSAGE_" +
-      
"TAG\020\004\022\027\n\023ILLEGAL_MESSAGE_KEY\020\005\022\032\n\026MESSAG" +
-      "E_KEYS_TOO_LARGE\020\006\022\031\n\025ILLEGAL_MESSAGE_GR" +
-      "OUP\020\007\022 \n\034ILLEGAL_MESSAGE_PROPERTY_KEY\020\010\022" +
-      " \n\034MESSAGE_PROPERTIES_TOO_LARGE\020\t\022\032\n\026MES" +
-      "SAGE_BODY_TOO_LARGE\020\n\022\016\n\tFORBIDDEN\020\223\003\022\021\n" +
-      
"\014UNAUTHORIZED\020\221\003\022\023\n\017TOPIC_NOT_FOUND\020\r\022\034\n" +
-      "\030CONSUMER_GROUP_NOT_FOUND\020\016\022\034\n\030VERIFY_ME" +
-      "SSAGE_FORBIDDEN\020\017\022\035\n\031FAILED_TO_CONSUME_M" +
-      
"ESSAGE\020\020\022\025\n\021MESSAGE_CORRUPTED\020\021\022\025\n\021TOO_M" +
-      "ANY_REQUESTS\020\022\022\032\n\026RECEIPT_HANDLE_EXPIRED" +
-      "\020\023\0220\n,MESSAGE_PROPERTY_DOES_NOT_MATCH_ME" +
-      
"SSAGE_TYPE\020\024\022\026\n\022ILLEGAL_MESSAGE_ID\020\025\022\032\n\026" +
-      "INVALID_TRANSACTION_ID\020\026\022\035\n\031ILLEGAL_FILT" +
-      "ER_EXPRESSION\020\027\022\032\n\026INVALID_RECEIPT_HANDL" +
-      
"E\020\030\022\036\n\032MASTER_PERSISTENCE_TIMEOUT\020\031\022\035\n\031S" +
-      "LAVE_PERSISTENCE_TIMEOUT\020\032\022\024\n\020HA_NOT_AVA" +
-      
"ILABLE\020\033\022\027\n\023VERSION_UNSUPPORTED\020\034\022\025\n\021MES" +
-      "SAGE_NOT_FOUND\020\035\022\032\n\026ILLEGAL_MESSAGE_OFFS" +
-      
"ET\020\036\022\023\n\017ILLEGAL_MESSAGE\020\037\022\034\n\030UNRECOGNIZE" +
-      "D_CLIENT_TYPE\020 \022\032\n\025INTERNAL_SERVER_ERROR" +
-      
"\020\364\003\022\024\n\017NOT_IMPLEMENTED\020\365\003\022\024\n\017GATEWAY_TIM"
 +
-      "EOUT\020\370\003B;\n\022apache.rocketmq.v2B\010MQDomainP" +
-      "\001\240\001\001\330\001\001\252\002\022Apache.Rocketmq.V2b\006proto3"
+      "tmq.v2.CustomizedBackoffH\000B\n\n\010strategy\"|" +
+      "\n\022ExponentialBackoff\022*\n\007initial\030\001 \001(\0132\031." +
+      "google.protobuf.Duration\022&\n\003max\030\002 \001(\0132\031." +
+      "google.protobuf.Duration\022\022\n\nmultiplier\030\003" +
+      " \001(\002\"<\n\021CustomizedBackoff\022\'\n\004next\030\001 
\003(\0132" +
+      "\031.google.protobuf.Duration\"4\n\010Resource\022\032" +
+      "\n\022resource_namespace\030\001 \001(\t\022\014\n\004name\030\002 
\001(\t" +
+      "\"z\n\021SubscriptionEntry\022+\n\005topic\030\001 \001(\0132\034.a" +
+      "pache.rocketmq.v2.Resource\0228\n\nexpression" +
+      "\030\002 \001(\0132$.apache.rocketmq.v2.FilterExpres" +
+      "sion\"%\n\007Address\022\014\n\004host\030\001 
\001(\t\022\014\n\004port\030\002 " +
+      "\001(\005\"n\n\tEndpoints\0221\n\006scheme\030\001 \001(\0162!.apach" +
+      "e.rocketmq.v2.AddressScheme\022.\n\taddresses" +
+      "\030\002 \003(\0132\033.apache.rocketmq.v2.Address\"T\n\006B" +
+      "roker\022\014\n\004name\030\001 \001(\t\022\n\n\002id\030\002 
\001(\005\0220\n\tendpo" +
+      "ints\030\003 \001(\0132\035.apache.rocketmq.v2.Endpoint" +
+      "s\"\346\001\n\014MessageQueue\022+\n\005topic\030\001 
\001(\0132\034.apac" +
+      "he.rocketmq.v2.Resource\022\n\n\002id\030\002 \001(\005\0222\n\np" +
+      "ermission\030\003 \001(\0162\036.apache.rocketmq.v2.Per" +
+      "mission\022*\n\006broker\030\004 \001(\0132\032.apache.rocketm" +
+      "q.v2.Broker\022=\n\024accept_message_types\030\005 \003(" +
+      "\0162\037.apache.rocketmq.v2.MessageType\"H\n\006Di" +
+      "gest\022,\n\004type\030\001 \001(\0162\036.apache.rocketmq.v2." +
+      "DigestType\022\020\n\010checksum\030\002 
\001(\t\"\264\007\n\020SystemP" +
+      "roperties\022\020\n\003tag\030\001 
\001(\tH\000\210\001\001\022\014\n\004keys\030\002 \003(" +
+      "\t\022\022\n\nmessage_id\030\003 \001(\t\022/\n\013body_digest\030\004 
\001" +
+      "(\0132\032.apache.rocketmq.v2.Digest\0223\n\rbody_e" +
+      "ncoding\030\005 \001(\0162\034.apache.rocketmq.v2.Encod" +
+      "ing\0225\n\014message_type\030\006 \001(\0162\037.apache.rocke" +
+      "tmq.v2.MessageType\0222\n\016born_timestamp\030\007 \001" +
+      "(\0132\032.google.protobuf.Timestamp\022\021\n\tborn_h" +
+      "ost\030\010 \001(\t\0228\n\017store_timestamp\030\t \001(\0132\032.goo" 
+
+      "gle.protobuf.TimestampH\001\210\001\001\022\022\n\nstore_hos" +
+      "t\030\n \001(\t\022;\n\022delivery_timestamp\030\013 \001(\0132\032.go" 
+
+      "ogle.protobuf.TimestampH\002\210\001\001\022\033\n\016receipt_" +
+      "handle\030\014 \001(\tH\003\210\001\001\022\020\n\010queue_id\030\r 
\001(\005\022\031\n\014q" +
+      "ueue_offset\030\016 
\001(\003H\004\210\001\001\022:\n\022invisible_dura" +
+      "tion\030\017 \001(\0132\031.google.protobuf.DurationH\005\210" +
+      "\001\001\022\035\n\020delivery_attempt\030\020 
\001(\005H\006\210\001\001\022\032\n\rmes" +
+      "sage_group\030\021 
\001(\tH\007\210\001\001\022\032\n\rtrace_context\030\022" +
+      " \001(\tH\010\210\001\001\022N\n&orphaned_transaction_recove" +
+      "ry_duration\030\023 \001(\0132\031.google.protobuf.Dura" +
+      "tionH\t\210\001\001B\006\n\004_tagB\022\n\020_store_timestampB\025\n" +
+      "\023_delivery_timestampB\021\n\017_receipt_handleB" +
+      "\017\n\r_queue_offsetB\025\n\023_invisible_durationB" +
+      "\023\n\021_delivery_attemptB\020\n\016_message_groupB\020" +
+      "\n\016_trace_contextB)\n\'_orphaned_transactio" +
+      "n_recovery_duration\"\206\002\n\007Message\022+\n\005topic" +
+      "\030\001 \001(\0132\034.apache.rocketmq.v2.Resource\022H\n\017" +
+      "user_properties\030\002 \003(\0132/.apache.rocketmq." +
+      "v2.Message.UserPropertiesEntry\022?\n\021system" +
+      "_properties\030\003 \001(\0132$.apache.rocketmq.v2.S" +
+      "ystemProperties\022\014\n\004body\030\004 \001(\014\0325\n\023UserPro" +
+      "pertiesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 
\001(\t" +
+      ":\0028\001\"E\n\nAssignment\0227\n\rmessage_queue\030\001 \001(" +
+      "\0132 .apache.rocketmq.v2.MessageQueue\"I\n\013S" +
+      "endReceipt\022\022\n\nmessage_id\030\001 \001(\t\022\026\n\016transa" +
+      "ction_id\030\002 \001(\t\022\016\n\006offset\030\003 
\001(\003\"A\n\006Status" +
+      "\022&\n\004code\030\001 \001(\0162\030.apache.rocketmq.v2.Code" +
+      "\022\017\n\007message\030\002 \001(\t*Y\n\025TransactionResoluti" +
+      "on\022&\n\"TRANSACTION_RESOLUTION_UNSPECIFIED" +
+      
"\020\000\022\n\n\006COMMIT\020\001\022\014\n\010ROLLBACK\020\002*W\n\021Transact"
 +
+      "ionSource\022\026\n\022SOURCE_UNSPECIFIED\020\000\022\021\n\rSOU" +
+      "RCE_CLIENT\020\001\022\027\n\023SOURCE_SERVER_CHECK\020\002*W\n" +
+      "\nPermission\022\032\n\026PERMISSION_UNSPECIFIED\020\000\022" +
+      
"\010\n\004NONE\020\001\022\010\n\004READ\020\002\022\t\n\005WRITE\020\003\022\016\n\nREAD_W"
 +
+      "RITE\020\004*;\n\nFilterType\022\033\n\027FILTER_TYPE_UNSP" +
+      
"ECIFIED\020\000\022\007\n\003TAG\020\001\022\007\n\003SQL\020\002*T\n\rAddressSc"
 +
+      "heme\022\036\n\032ADDRESS_SCHEME_UNSPECIFIED\020\000\022\010\n\004" +
+      
"IPv4\020\001\022\010\n\004IPv6\020\002\022\017\n\013DOMAIN_NAME\020\003*]\n\013Mes"
 +
+      "sageType\022\034\n\030MESSAGE_TYPE_UNSPECIFIED\020\000\022\n" +
+      
"\n\006NORMAL\020\001\022\010\n\004FIFO\020\002\022\t\n\005DELAY\020\003\022\017\n\013TRANS"
 +
+      "ACTION\020\004*G\n\nDigestType\022\033\n\027DIGEST_TYPE_UN" +
+      
"SPECIFIED\020\000\022\t\n\005CRC32\020\001\022\007\n\003MD5\020\002\022\010\n\004SHA1\020"
 +
+      "\003*_\n\nClientType\022\033\n\027CLIENT_TYPE_UNSPECIFI" +
+      
"ED\020\000\022\014\n\010PRODUCER\020\001\022\021\n\rPUSH_CONSUMER\020\002\022\023\n"
 +
+      "\017SIMPLE_CONSUMER\020\003*<\n\010Encoding\022\030\n\024ENCODI" +
+      
"NG_UNSPECIFIED\020\000\022\014\n\010IDENTITY\020\001\022\010\n\004GZIP\020\002"
 +
+      
"*\272\007\n\004Code\022\006\n\002OK\020\000\022\030\n\024ILLEGAL_ACCESS_POIN" +
+      "T\020\001\022\021\n\rILLEGAL_TOPIC\020\002\022\032\n\026ILLEGAL_CONSUM" 
+
+      
"ER_GROUP\020\003\022\027\n\023ILLEGAL_MESSAGE_TAG\020\004\022\027\n\023I" +
+      "LLEGAL_MESSAGE_KEY\020\005\022\032\n\026MESSAGE_KEYS_TOO" +
+      "_LARGE\020\006\022\031\n\025ILLEGAL_MESSAGE_GROUP\020\007\022 \n\034I" +
+      "LLEGAL_MESSAGE_PROPERTY_KEY\020\010\022 \n\034MESSAGE" +
+      "_PROPERTIES_TOO_LARGE\020\t\022\032\n\026MESSAGE_BODY_" +
+      
"TOO_LARGE\020\n\022\016\n\tFORBIDDEN\020\223\003\022\021\n\014UNAUTHORI" +
+      
"ZED\020\221\003\022\023\n\017TOPIC_NOT_FOUND\020\r\022\034\n\030CONSUMER_" +
+      "GROUP_NOT_FOUND\020\016\022\034\n\030VERIFY_MESSAGE_FORB" +
+      "IDDEN\020\017\022\035\n\031FAILED_TO_CONSUME_MESSAGE\020\020\022\025" +
+      "\n\021MESSAGE_CORRUPTED\020\021\022\025\n\021TOO_MANY_REQUES" +
+      "TS\020\022\022\032\n\026RECEIPT_HANDLE_EXPIRED\020\023\0220\n,MESS" +
+      "AGE_PROPERTY_DOES_NOT_MATCH_MESSAGE_TYPE" +
+      
"\020\024\022\026\n\022ILLEGAL_MESSAGE_ID\020\025\022\032\n\026INVALID_TR" +
+      "ANSACTION_ID\020\026\022\035\n\031ILLEGAL_FILTER_EXPRESS" +
+      
"ION\020\027\022\032\n\026INVALID_RECEIPT_HANDLE\020\030\022\036\n\032MAS" +
+      "TER_PERSISTENCE_TIMEOUT\020\031\022\035\n\031SLAVE_PERSI" +
+      "STENCE_TIMEOUT\020\032\022\024\n\020HA_NOT_AVAILABLE\020\033\022\027" +
+      "\n\023VERSION_UNSUPPORTED\020\034\022\025\n\021MESSAGE_NOT_F" +
+      
"OUND\020\035\022\032\n\026ILLEGAL_MESSAGE_OFFSET\020\036\022\023\n\017IL" +
+      "LEGAL_MESSAGE\020\037\022\034\n\030UNRECOGNIZED_CLIENT_T" +
+      "YPE\020 
\022\032\n\025INTERNAL_SERVER_ERROR\020\364\003\022\024\n\017NOT" +
+      "_IMPLEMENTED\020\365\003\022\024\n\017GATEWAY_TIMEOUT\020\370\003B;\n" +
+      
"\022apache.rocketmq.v2B\010MQDomainP\001\240\001\001\330\001\001\252\002\022" +
+      "Apache.Rocketmq.V2b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -244,7 +245,7 @@ public final class MQDomain {
     internal_static_apache_rocketmq_v2_ExponentialBackoff_fieldAccessorTable = 
new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_ExponentialBackoff_descriptor,
-        new java.lang.String[] { "InitialBackoff", "MaxBackoff", 
"BackoffMultiplier", });
+        new java.lang.String[] { "Initial", "Max", "Multiplier", });
     internal_static_apache_rocketmq_v2_CustomizedBackoff_descriptor =
       getDescriptor().getMessageTypes().get(3);
     internal_static_apache_rocketmq_v2_CustomizedBackoff_fieldAccessorTable = 
new
diff --git a/src/main/resources/proto/apache/rocketmq/v2/definition.proto 
b/src/main/resources/proto/apache/rocketmq/v2/definition.proto
index 5775028..ad3af70 100644
--- a/src/main/resources/proto/apache/rocketmq/v2/definition.proto
+++ b/src/main/resources/proto/apache/rocketmq/v2/definition.proto
@@ -66,10 +66,11 @@ message RetryPolicy {
   }
 }
 
+// https://en.wikipedia.org/wiki/Exponential_backoff
 message ExponentialBackoff {
-  float initial_backoff = 1;
-  float max_backoff = 2;
-  float backoff_multiplier = 3;
+  google.protobuf.Duration initial = 1;
+  google.protobuf.Duration max = 2;
+  float multiplier = 3;
 }
 
 message CustomizedBackoff {

Reply via email to