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

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

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

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

commit fa6db78788b6da7aa7d7e1dbac932b7c0c3b1a36
Author: 凌楚 <ya...@alibaba-inc.com>
AuthorDate: Thu Apr 21 21:07:19 2022 +0800

    Apply IDL update
---
 src/main/java/apache/rocketmq/v2/MQDomain.java     | 203 ++++++++---------
 src/main/java/apache/rocketmq/v2/MQService.java    | 159 +++++++------
 src/main/java/apache/rocketmq/v2/RetryPolicy.java  |  65 ++++++
 .../apache/rocketmq/v2/RetryPolicyOrBuilder.java   |   6 +
 src/main/java/apache/rocketmq/v2/Subscription.java | 246 ++++++---------------
 .../apache/rocketmq/v2/SubscriptionOrBuilder.java  |  35 +--
 .../proto/apache/rocketmq/v2/definition.proto      |   1 +
 .../proto/apache/rocketmq/v2/service.proto         |   9 +-
 8 files changed, 331 insertions(+), 393 deletions(-)

diff --git a/src/main/java/apache/rocketmq/v2/MQDomain.java b/src/main/java/apache/rocketmq/v2/MQDomain.java
index 4c64eef..5774f45 100644
--- a/src/main/java/apache/rocketmq/v2/MQDomain.java
+++ b/src/main/java/apache/rocketmq/v2/MQDomain.java
@@ -103,107 +103,108 @@ public final class MQDomain {
       "tamp.proto\032\036google/protobuf/duration.pro" +
       "to\"T\n\020FilterExpression\022,\n\004type\030\001 \001(\0162\036.a" +
       "pache.rocketmq.v2.FilterType\022\022\n\nexpressi" +
-      "on\030\002 \001(\t\"m\n\013RetryPolicy\022\024\n\014max_attempts\030" +
+      "on\030\002 \001(\t\"}\n\013RetryPolicy\022\024\n\014max_attempts\030" +
       "\001 \001(\005\022\027\n\017initial_backoff\030\002 \001(\002\022\023\n\013max_ba" +
-      "ckoff\030\003 \001(\002\022\032\n\022backoff_multiplier\030\004 \001(\002\"" +
-      "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\005to" +
-      "pic\030\001 \001(\0132\034.apache.rocketmq.v2.Resource\022" +
-      "8\n\nexpression\030\002 \001(\0132$.apache.rocketmq.v2" +
-      ".FilterExpression\"%\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" +
-      ".Address\"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.rocketm" +
-      "q.v2.Endpoints\"\346\001\n\014MessageQueue\022+\n\005topic" +
-      "\030\001 \001(\0132\034.apache.rocketmq.v2.Resource\022\n\n\002" +
-      "id\030\002 \001(\005\0222\n\npermission\030\003 \001(\0162\036.apache.ro" +
-      "cketmq.v2.Permission\022*\n\006broker\030\004 \001(\0132\032.a" +
-      "pache.rocketmq.v2.Broker\022=\n\024accept_messa" +
-      "ge_types\030\005 \003(\0162\037.apache.rocketmq.v2.Mess" +
-      "ageType\"H\n\006Digest\022,\n\004type\030\001 \001(\0162\036.apache" +
-      ".rocketmq.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\013bo" +
-      "dy_digest\030\004 \001(\0132\032.apache.rocketmq.v2.Dig" +
-      "est\0223\n\rbody_encoding\030\005 \001(\0162\034.apache.rock" +
-      "etmq.v2.Encoding\0225\n\014message_type\030\006 \001(\0162\037" +
-      ".apache.rocketmq.v2.MessageType\0222\n\016born_" +
-      "timestamp\030\007 \001(\0132\032.google.protobuf.Timest" +
-      "amp\022\021\n\tborn_host\030\010 \001(\t\0228\n\017store_timestam" +
-      "p\030\t \001(\0132\032.google.protobuf.TimestampH\001\210\001\001" +
-      "\022\022\n\nstore_host\030\n \001(\t\022;\n\022delivery_timesta" +
-      "mp\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\022i" +
-      "nvisible_duration\030\017 \001(\0132\031.google.protobu" +
-      "f.DurationH\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\rtr" +
-      "ace_context\030\022 \001(\tH\010\210\001\001\022N\n&orphaned_trans" +
-      "action_recovery_duration\030\023 \001(\0132\031.google." +
-      "protobuf.DurationH\t\210\001\001B\006\n\004_tagB\022\n\020_store" +
-      "_timestampB\025\n\023_delivery_timestampB\021\n\017_re" +
-      "ceipt_handleB\017\n\r_queue_offsetB\025\n\023_invisi" +
-      "ble_durationB\023\n\021_delivery_attemptB\020\n\016_me" +
-      "ssage_groupB\020\n\016_trace_contextB)\n\'_orphan" +
-      "ed_transaction_recovery_duration\"\206\002\n\007Mes" +
-      "sage\022+\n\005topic\030\001 \001(\0132\034.apache.rocketmq.v2" +
-      ".Resource\022H\n\017user_properties\030\002 \003(\0132/.apa" +
-      "che.rocketmq.v2.Message.UserPropertiesEn" +
-      "try\022?\n\021system_properties\030\003 \001(\0132$.apache." +
-      "rocketmq.v2.SystemProperties\022\014\n\004body\030\004 \001" +
-      "(\014\0325\n\023UserPropertiesEntry\022\013\n\003key\030\001 \001(\t\022\r" +
-      "\n\005value\030\002 \001(\t:\0028\001\"E\n\nAssignment\0227\n\rmessa" +
-      "ge_queue\030\001 \001(\0132 .apache.rocketmq.v2.Mess" +
-      "ageQueue\"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.roc" +
-      "ketmq.v2.Code\022\017\n\007message\030\002 \001(\t*Y\n\025Transa" +
-      "ctionResolution\022&\n\"TRANSACTION_RESOLUTIO" +
-      "N_UNSPECIFIED\020\000\022\n\n\006COMMIT\020\001\022\014\n\010ROLLBACK\020" +
-      "\002*W\n\021TransactionSource\022\026\n\022SOURCE_UNSPECI" +
-      "FIED\020\000\022\021\n\rSOURCE_CLIENT\020\001\022\027\n\023SOURCE_SERV" +
-      "ER_CHECK\020\002*W\n\nPermission\022\032\n\026PERMISSION_U" +
-      "NSPECIFIED\020\000\022\010\n\004NONE\020\001\022\010\n\004READ\020\002\022\t\n\005WRIT" +
-      "E\020\003\022\016\n\nREAD_WRITE\020\004*;\n\nFilterType\022\033\n\027FIL" +
-      "TER_TYPE_UNSPECIFIED\020\000\022\007\n\003TAG\020\001\022\007\n\003SQL\020\002" +
-      "*T\n\rAddressScheme\022\036\n\032ADDRESS_SCHEME_UNSP" +
-      "ECIFIED\020\000\022\010\n\004IPv4\020\001\022\010\n\004IPv6\020\002\022\017\n\013DOMAIN_" +
-      "NAME\020\003*]\n\013MessageType\022\034\n\030MESSAGE_TYPE_UN" +
-      "SPECIFIED\020\000\022\n\n\006NORMAL\020\001\022\010\n\004FIFO\020\002\022\t\n\005DEL" +
-      "AY\020\003\022\017\n\013TRANSACTION\020\004*G\n\nDigestType\022\033\n\027D" +
-      "IGEST_TYPE_UNSPECIFIED\020\000\022\t\n\005CRC32\020\001\022\007\n\003M" +
-      "D5\020\002\022\010\n\004SHA1\020\003*_\n\nClientType\022\033\n\027CLIENT_T" +
-      "YPE_UNSPECIFIED\020\000\022\014\n\010PRODUCER\020\001\022\021\n\rPUSH_" +
-      "CONSUMER\020\002\022\023\n\017SIMPLE_CONSUMER\020\003*<\n\010Encod" +
-      "ing\022\030\n\024ENCODING_UNSPECIFIED\020\000\022\014\n\010IDENTIT" +
-      "Y\020\001\022\010\n\004GZIP\020\002*\272\007\n\004Code\022\006\n\002OK\020\000\022\030\n\024ILLEGA" +
-      "L_ACCESS_POINT\020\001\022\021\n\rILLEGAL_TOPIC\020\002\022\032\n\026I" +
-      "LLEGAL_CONSUMER_GROUP\020\003\022\027\n\023ILLEGAL_MESSA" +
-      "GE_TAG\020\004\022\027\n\023ILLEGAL_MESSAGE_KEY\020\005\022\032\n\026MES" +
-      "SAGE_KEYS_TOO_LARGE\020\006\022\031\n\025ILLEGAL_MESSAGE" +
-      "_GROUP\020\007\022 \n\034ILLEGAL_MESSAGE_PROPERTY_KEY" +
-      "\020\010\022 \n\034MESSAGE_PROPERTIES_TOO_LARGE\020\t\022\032\n\026" +
-      "MESSAGE_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" +
-      "_MESSAGE_FORBIDDEN\020\017\022\035\n\031FAILED_TO_CONSUM" +
-      "E_MESSAGE\020\020\022\025\n\021MESSAGE_CORRUPTED\020\021\022\025\n\021TO" +
-      "O_MANY_REQUESTS\020\022\022\032\n\026RECEIPT_HANDLE_EXPI" +
-      "RED\020\023\0220\n,MESSAGE_PROPERTY_DOES_NOT_MATCH" +
-      "_MESSAGE_TYPE\020\024\022\026\n\022ILLEGAL_MESSAGE_ID\020\025\022" +
-      "\032\n\026INVALID_TRANSACTION_ID\020\026\022\035\n\031ILLEGAL_F" +
-      "ILTER_EXPRESSION\020\027\022\032\n\026INVALID_RECEIPT_HA" +
-      "NDLE\020\030\022\036\n\032MASTER_PERSISTENCE_TIMEOUT\020\031\022\035" +
-      "\n\031SLAVE_PERSISTENCE_TIMEOUT\020\032\022\024\n\020HA_NOT_" +
-      "AVAILABLE\020\033\022\027\n\023VERSION_UNSUPPORTED\020\034\022\025\n\021" +
-      "MESSAGE_NOT_FOUND\020\035\022\032\n\026ILLEGAL_MESSAGE_O" +
-      "FFSET\020\036\022\023\n\017ILLEGAL_MESSAGE\020\037\022\034\n\030UNRECOGN" +
-      "IZED_CLIENT_TYPE\020 \022\032\n\025INTERNAL_SERVER_ER" +
-      "ROR\020\364\003\022\024\n\017NOT_IMPLEMENTED\020\365\003\022\024\n\017GATEWAY_" +
-      "TIMEOUT\020\370\003B;\n\022apache.rocketmq.v2B\010MQDoma" +
-      "inP\001\240\001\001\330\001\001\252\002\022Apache.Rocketmq.V2b\006proto3"
+      "ckoff\030\003 \001(\002\022\032\n\022backoff_multiplier\030\004 \001(\002\022" +
+      "\016\n\006random\030\005 \001(\010\"4\n\010Resource\022\032\n\022resource_" +
+      "namespace\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\"z\n\021Subscri" +
+      "ptionEntry\022+\n\005topic\030\001 \001(\0132\034.apache.rocke" +
+      "tmq.v2.Resource\0228\n\nexpression\030\002 \001(\0132$.ap" +
+      "ache.rocketmq.v2.FilterExpression\"%\n\007Add" +
+      "ress\022\014\n\004host\030\001 \001(\t\022\014\n\004port\030\002 \001(\005\"n\n\tEndp" +
+      "oints\0221\n\006scheme\030\001 \001(\0162!.apache.rocketmq." +
+      "v2.AddressScheme\022.\n\taddresses\030\002 \003(\0132\033.ap" +
+      "ache.rocketmq.v2.Address\"T\n\006Broker\022\014\n\004na" +
+      "me\030\001 \001(\t\022\n\n\002id\030\002 \001(\005\0220\n\tendpoints\030\003 \001(\0132" +
+      "\035.apache.rocketmq.v2.Endpoints\"\346\001\n\014Messa" +
+      "geQueue\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.rocketmq.v2.Permission\022*\n\006" +
+      "broker\030\004 \001(\0132\032.apache.rocketmq.v2.Broker" +
+      "\022=\n\024accept_message_types\030\005 \003(\0162\037.apache." +
+      "rocketmq.v2.MessageType\"H\n\006Digest\022,\n\004typ" +
+      "e\030\001 \001(\0162\036.apache.rocketmq.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\nmessag" +
+      "e_id\030\003 \001(\t\022/\n\013body_digest\030\004 \001(\0132\032.apache" +
+      ".rocketmq.v2.Digest\0223\n\rbody_encoding\030\005 \001" +
+      "(\0162\034.apache.rocketmq.v2.Encoding\0225\n\014mess" +
+      "age_type\030\006 \001(\0162\037.apache.rocketmq.v2.Mess" +
+      "ageType\0222\n\016born_timestamp\030\007 \001(\0132\032.google" +
+      ".protobuf.Timestamp\022\021\n\tborn_host\030\010 \001(\t\0228" +
+      "\n\017store_timestamp\030\t \001(\0132\032.google.protobu" +
+      "f.TimestampH\001\210\001\001\022\022\n\nstore_host\030\n \001(\t\022;\n\022" +
+      "delivery_timestamp\030\013 \001(\0132\032.google.protob" +
+      "uf.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\022invisible_duration\030\017 \001(\0132" +
+      "\031.google.protobuf.DurationH\005\210\001\001\022\035\n\020deliv" +
+      "ery_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_transaction_recovery_duration" +
+      "\030\023 \001(\0132\031.google.protobuf.DurationH\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_o" +
+      "ffsetB\025\n\023_invisible_durationB\023\n\021_deliver" +
+      "y_attemptB\020\n\016_message_groupB\020\n\016_trace_co" +
+      "ntextB)\n\'_orphaned_transaction_recovery_" +
+      "duration\"\206\002\n\007Message\022+\n\005topic\030\001 \001(\0132\034.ap" +
+      "ache.rocketmq.v2.Resource\022H\n\017user_proper" +
+      "ties\030\002 \003(\0132/.apache.rocketmq.v2.Message." +
+      "UserPropertiesEntry\022?\n\021system_properties" +
+      "\030\003 \001(\0132$.apache.rocketmq.v2.SystemProper" +
+      "ties\022\014\n\004body\030\004 \001(\014\0325\n\023UserPropertiesEntr" +
+      "y\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"E\n\nAss" +
+      "ignment\0227\n\rmessage_queue\030\001 \001(\0132 .apache." +
+      "rocketmq.v2.MessageQueue\"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.rocketmq.v2.Code\022\017\n\007message" +
+      "\030\002 \001(\t*Y\n\025TransactionResolution\022&\n\"TRANS" +
+      "ACTION_RESOLUTION_UNSPECIFIED\020\000\022\n\n\006COMMI" +
+      "T\020\001\022\014\n\010ROLLBACK\020\002*W\n\021TransactionSource\022\026" +
+      "\n\022SOURCE_UNSPECIFIED\020\000\022\021\n\rSOURCE_CLIENT\020" +
+      "\001\022\027\n\023SOURCE_SERVER_CHECK\020\002*W\n\nPermission" +
+      "\022\032\n\026PERMISSION_UNSPECIFIED\020\000\022\010\n\004NONE\020\001\022\010" +
+      "\n\004READ\020\002\022\t\n\005WRITE\020\003\022\016\n\nREAD_WRITE\020\004*;\n\nF" +
+      "ilterType\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\032ADD" +
+      "RESS_SCHEME_UNSPECIFIED\020\000\022\010\n\004IPv4\020\001\022\010\n\004I" +
+      "Pv6\020\002\022\017\n\013DOMAIN_NAME\020\003*]\n\013MessageType\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\013TRANSACTION\020\004*G\n" +
+      "\nDigestType\022\033\n\027DIGEST_TYPE_UNSPECIFIED\020\000" +
+      "\022\t\n\005CRC32\020\001\022\007\n\003MD5\020\002\022\010\n\004SHA1\020\003*_\n\nClient" +
+      "Type\022\033\n\027CLIENT_TYPE_UNSPECIFIED\020\000\022\014\n\010PRO" +
+      "DUCER\020\001\022\021\n\rPUSH_CONSUMER\020\002\022\023\n\017SIMPLE_CON" +
+      "SUMER\020\003*<\n\010Encoding\022\030\n\024ENCODING_UNSPECIF" +
+      "IED\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_POINT\020\001\022\021\n\rILLE" +
+      "GAL_TOPIC\020\002\022\032\n\026ILLEGAL_CONSUMER_GROUP\020\003\022" +
+      "\027\n\023ILLEGAL_MESSAGE_TAG\020\004\022\027\n\023ILLEGAL_MESS" +
+      "AGE_KEY\020\005\022\032\n\026MESSAGE_KEYS_TOO_LARGE\020\006\022\031\n" +
+      "\025ILLEGAL_MESSAGE_GROUP\020\007\022 \n\034ILLEGAL_MESS" +
+      "AGE_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\014UNAUTHORIZED\020\221\003\022\023\n\017T" +
+      "OPIC_NOT_FOUND\020\r\022\034\n\030CONSUMER_GROUP_NOT_F" +
+      "OUND\020\016\022\034\n\030VERIFY_MESSAGE_FORBIDDEN\020\017\022\035\n\031" +
+      "FAILED_TO_CONSUME_MESSAGE\020\020\022\025\n\021MESSAGE_C" +
+      "ORRUPTED\020\021\022\025\n\021TOO_MANY_REQUESTS\020\022\022\032\n\026REC" +
+      "EIPT_HANDLE_EXPIRED\020\023\0220\n,MESSAGE_PROPERT" +
+      "Y_DOES_NOT_MATCH_MESSAGE_TYPE\020\024\022\026\n\022ILLEG" +
+      "AL_MESSAGE_ID\020\025\022\032\n\026INVALID_TRANSACTION_I" +
+      "D\020\026\022\035\n\031ILLEGAL_FILTER_EXPRESSION\020\027\022\032\n\026IN" +
+      "VALID_RECEIPT_HANDLE\020\030\022\036\n\032MASTER_PERSIST" +
+      "ENCE_TIMEOUT\020\031\022\035\n\031SLAVE_PERSISTENCE_TIME" +
+      "OUT\020\032\022\024\n\020HA_NOT_AVAILABLE\020\033\022\027\n\023VERSION_U" +
+      "NSUPPORTED\020\034\022\025\n\021MESSAGE_NOT_FOUND\020\035\022\032\n\026I" +
+      "LLEGAL_MESSAGE_OFFSET\020\036\022\023\n\017ILLEGAL_MESSA" +
+      "GE\020\037\022\034\n\030UNRECOGNIZED_CLIENT_TYPE\020 \022\032\n\025IN" +
+      "TERNAL_SERVER_ERROR\020\364\003\022\024\n\017NOT_IMPLEMENTE" +
+      "D\020\365\003\022\024\n\017GATEWAY_TIMEOUT\020\370\003B;\n\022apache.roc" +
+      "ketmq.v2B\010MQDomainP\001\240\001\001\330\001\001\252\002\022Apache.Rock" +
+      "etmq.V2b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -222,7 +223,7 @@ public final class MQDomain {
     internal_static_apache_rocketmq_v2_RetryPolicy_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_RetryPolicy_descriptor,
-        new java.lang.String[] { "MaxAttempts", "InitialBackoff", "MaxBackoff", "BackoffMultiplier", });
+        new java.lang.String[] { "MaxAttempts", "InitialBackoff", "MaxBackoff", "BackoffMultiplier", "Random", });
     internal_static_apache_rocketmq_v2_Resource_descriptor =
       getDescriptor().getMessageTypes().get(2);
     internal_static_apache_rocketmq_v2_Resource_fieldAccessorTable = new
diff --git a/src/main/java/apache/rocketmq/v2/MQService.java b/src/main/java/apache/rocketmq/v2/MQService.java
index d49bda9..0b262b2 100644
--- a/src/main/java/apache/rocketmq/v2/MQService.java
+++ b/src/main/java/apache/rocketmq/v2/MQService.java
@@ -275,87 +275,86 @@ public final class MQService {
       "g\022,\n\006topics\030\001 \003(\0132\034.apache.rocketmq.v2.R" +
       "esource\0225\n\014retry_policy\030\002 \001(\0132\037.apache.r" +
       "ocketmq.v2.RetryPolicy\022\037\n\027compress_body_" +
-      "threshold\030\003 \001(\005\022\025\n\rmax_body_size\030\004 \001(\005\"\252" +
-      "\003\n\014Subscription\0220\n\005group\030\001 \001(\0132\034.apache." +
+      "threshold\030\003 \001(\005\022\025\n\rmax_body_size\030\004 \001(\005\"\354" +
+      "\002\n\014Subscription\0220\n\005group\030\001 \001(\0132\034.apache." +
       "rocketmq.v2.ResourceH\000\210\001\001\022<\n\rsubscriptio" +
       "ns\030\002 \003(\0132%.apache.rocketmq.v2.Subscripti" +
-      "onEntry\022\021\n\004fifo\030\003 \001(\010H\001\210\001\001\022\"\n\025max_delive" +
-      "ry_attempts\030\004 \001(\005H\002\210\001\001\0227\n\016backoff_policy" +
-      "\030\005 \001(\0132\037.apache.rocketmq.v2.RetryPolicy\022" +
-      "\037\n\022receive_batch_size\030\006 \001(\005H\003\210\001\001\022<\n\024long" +
-      "_polling_timeout\030\007 \001(\0132\031.google.protobuf" +
-      ".DurationH\004\210\001\001B\010\n\006_groupB\007\n\005_fifoB\030\n\026_ma" +
-      "x_delivery_attemptsB\025\n\023_receive_batch_si" +
-      "zeB\027\n\025_long_polling_timeout\"\347\002\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(\013" +
-      "2\035.apache.rocketmq.v2.EndpointsH\002\210\001\001\0227\n\017" +
-      "request_timeout\030\003 \001(\0132\031.google.protobuf." +
-      "DurationH\003\210\001\001\0224\n\npublishing\030\004 \001(\0132\036.apac" +
-      "he.rocketmq.v2.PublishingH\000\0228\n\014subscript" +
-      "ion\030\005 \001(\0132 .apache.rocketmq.v2.Subscript" +
-      "ionH\000B\t\n\007pub_subB\016\n\014_client_typeB\017\n\r_acc" +
-      "ess_pointB\022\n\020_request_timeout\"\356\003\n\020Teleme" +
-      "tryCommand\0220\n\010settings\030\001 \001(\0132\034.apache.ro" +
-      "cketmq.v2.SettingsH\000\022B\n\022thread_stack_tra" +
-      "ce\030\002 \001(\0132$.apache.rocketmq.v2.ThreadStac" +
-      "kTraceH\000\022H\n\025verify_message_result\030\003 \001(\0132" +
-      "\'.apache.rocketmq.v2.VerifyMessageResult" +
-      "H\000\022e\n$recover_orphaned_transaction_comma" +
-      "nd\030\004 \001(\01325.apache.rocketmq.v2.RecoverOrp" +
-      "hanedTransactionCommandH\000\022\\\n print_threa" +
-      "d_stack_trace_command\030\005 \001(\01320.apache.roc" +
-      "ketmq.v2.PrintThreadStackTraceCommandH\000\022" +
-      "J\n\026verify_message_command\030\006 \001(\0132(.apache" +
-      ".rocketmq.v2.VerifyMessageCommandH\000B\t\n\007c" +
-      "ommand\"\\\n\036NotifyClientTerminationRequest" +
-      "\0220\n\005group\030\001 \001(\0132\034.apache.rocketmq.v2.Res" +
-      "ourceH\000\210\001\001B\010\n\006_group\"M\n\037NotifyClientTerm" +
-      "inationResponse\022*\n\006status\030\001 \001(\0132\032.apache" +
-      ".rocketmq.v2.Status\"\311\001\n\036ChangeInvisibleD" +
-      "urationRequest\022+\n\005group\030\001 \001(\0132\034.apache.r" +
-      "ocketmq.v2.Resource\022+\n\005topic\030\002 \001(\0132\034.apa" +
-      "che.rocketmq.v2.Resource\022\026\n\016receipt_hand" +
-      "le\030\003 \001(\t\0225\n\022invisible_duration\030\004 \001(\0132\031.g" +
-      "oogle.protobuf.Duration\"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\302\n\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`\n\013NackMessag" +
-      "e\022&.apache.rocketmq.v2.NackMessageReques" +
-      "t\032\'.apache.rocketmq.v2.NackMessageRespon" +
-      "se\"\000\022\234\001\n\037ForwardMessageToDeadLetterQueue" +
-      "\022:.apache.rocketmq.v2.ForwardMessageToDe" +
-      "adLetterQueueRequest\032;.apache.rocketmq.v" +
-      "2.ForwardMessageToDeadLetterQueueRespons" +
-      "e\"\000\022i\n\016EndTransaction\022).apache.rocketmq." +
-      "v2.EndTransactionRequest\032*.apache.rocket" +
-      "mq.v2.EndTransactionResponse\"\000\022]\n\tTeleme" +
-      "try\022$.apache.rocketmq.v2.TelemetryComman" +
-      "d\032$.apache.rocketmq.v2.TelemetryCommand\"" +
-      "\000(\0010\001\022\204\001\n\027NotifyClientTermination\0222.apac" +
-      "he.rocketmq.v2.NotifyClientTerminationRe" +
-      "quest\0323.apache.rocketmq.v2.NotifyClientT" +
-      "erminationResponse\"\000\022\204\001\n\027ChangeInvisible" +
-      "Duration\0222.apache.rocketmq.v2.ChangeInvi" +
-      "sibleDurationRequest\0323.apache.rocketmq.v" +
-      "2.ChangeInvisibleDurationResponse\"\000B<\n\022a" +
-      "pache.rocketmq.v2B\tMQServiceP\001\240\001\001\330\001\001\252\002\022A" +
-      "pache.Rocketmq.V2b\006proto3"
+      "onEntry\022\021\n\004fifo\030\003 \001(\010H\001\210\001\001\0227\n\016backoff_po" +
+      "licy\030\004 \001(\0132\037.apache.rocketmq.v2.RetryPol" +
+      "icy\022\037\n\022receive_batch_size\030\005 \001(\005H\002\210\001\001\022<\n\024" +
+      "long_polling_timeout\030\006 \001(\0132\031.google.prot" +
+      "obuf.DurationH\003\210\001\001B\010\n\006_groupB\007\n\005_fifoB\025\n" +
+      "\023_receive_batch_sizeB\027\n\025_long_polling_ti" +
+      "meout\"\347\002\n\010Settings\0228\n\013client_type\030\001 \001(\0162" +
+      "\036.apache.rocketmq.v2.ClientTypeH\001\210\001\001\0228\n\014" +
+      "access_point\030\002 \001(\0132\035.apache.rocketmq.v2." +
+      "EndpointsH\002\210\001\001\0227\n\017request_timeout\030\003 \001(\0132" +
+      "\031.google.protobuf.DurationH\003\210\001\001\0224\n\npubli" +
+      "shing\030\004 \001(\0132\036.apache.rocketmq.v2.Publish" +
+      "ingH\000\0228\n\014subscription\030\005 \001(\0132 .apache.roc" +
+      "ketmq.v2.SubscriptionH\000B\t\n\007pub_subB\016\n\014_c" +
+      "lient_typeB\017\n\r_access_pointB\022\n\020_request_" +
+      "timeout\"\356\003\n\020TelemetryCommand\0220\n\010settings" +
+      "\030\001 \001(\0132\034.apache.rocketmq.v2.SettingsH\000\022B" +
+      "\n\022thread_stack_trace\030\002 \001(\0132$.apache.rock" +
+      "etmq.v2.ThreadStackTraceH\000\022H\n\025verify_mes" +
+      "sage_result\030\003 \001(\0132\'.apache.rocketmq.v2.V" +
+      "erifyMessageResultH\000\022e\n$recover_orphaned" +
+      "_transaction_command\030\004 \001(\01325.apache.rock" +
+      "etmq.v2.RecoverOrphanedTransactionComman" +
+      "dH\000\022\\\n print_thread_stack_trace_command\030" +
+      "\005 \001(\01320.apache.rocketmq.v2.PrintThreadSt" +
+      "ackTraceCommandH\000\022J\n\026verify_message_comm" +
+      "and\030\006 \001(\0132(.apache.rocketmq.v2.VerifyMes" +
+      "sageCommandH\000B\t\n\007command\"\\\n\036NotifyClient" +
+      "TerminationRequest\0220\n\005group\030\001 \001(\0132\034.apac" +
+      "he.rocketmq.v2.ResourceH\000\210\001\001B\010\n\006_group\"M" +
+      "\n\037NotifyClientTerminationResponse\022*\n\006sta" +
+      "tus\030\001 \001(\0132\032.apache.rocketmq.v2.Status\"\311\001" +
+      "\n\036ChangeInvisibleDurationRequest\022+\n\005grou" +
+      "p\030\001 \001(\0132\034.apache.rocketmq.v2.Resource\022+\n" +
+      "\005topic\030\002 \001(\0132\034.apache.rocketmq.v2.Resour" +
+      "ce\022\026\n\016receipt_handle\030\003 \001(\t\0225\n\022invisible_" +
+      "duration\030\004 \001(\0132\031.google.protobuf.Duratio" +
+      "n\"e\n\037ChangeInvisibleDurationResponse\022*\n\006" +
+      "status\030\001 \001(\0132\032.apache.rocketmq.v2.Status" +
+      "\022\026\n\016receipt_handle\030\002 \001(\t2\302\n\n\020MessagingSe" +
+      "rvice\022]\n\nQueryRoute\022%.apache.rocketmq.v2" +
+      ".QueryRouteRequest\032&.apache.rocketmq.v2." +
+      "QueryRouteResponse\"\000\022Z\n\tHeartbeat\022$.apac" +
+      "he.rocketmq.v2.HeartbeatRequest\032%.apache" +
+      ".rocketmq.v2.HeartbeatResponse\"\000\022`\n\013Send" +
+      "Message\022&.apache.rocketmq.v2.SendMessage" +
+      "Request\032\'.apache.rocketmq.v2.SendMessage" +
+      "Response\"\000\022l\n\017QueryAssignment\022*.apache.r" +
+      "ocketmq.v2.QueryAssignmentRequest\032+.apac" +
+      "he.rocketmq.v2.QueryAssignmentResponse\"\000" +
+      "\022k\n\016ReceiveMessage\022).apache.rocketmq.v2." +
+      "ReceiveMessageRequest\032*.apache.rocketmq." +
+      "v2.ReceiveMessageResponse\"\0000\001\022]\n\nAckMess" +
+      "age\022%.apache.rocketmq.v2.AckMessageReque" +
+      "st\032&.apache.rocketmq.v2.AckMessageRespon" +
+      "se\"\000\022`\n\013NackMessage\022&.apache.rocketmq.v2" +
+      ".NackMessageRequest\032\'.apache.rocketmq.v2" +
+      ".NackMessageResponse\"\000\022\234\001\n\037ForwardMessag" +
+      "eToDeadLetterQueue\022:.apache.rocketmq.v2." +
+      "ForwardMessageToDeadLetterQueueRequest\032;" +
+      ".apache.rocketmq.v2.ForwardMessageToDead" +
+      "LetterQueueResponse\"\000\022i\n\016EndTransaction\022" +
+      ").apache.rocketmq.v2.EndTransactionReque" +
+      "st\032*.apache.rocketmq.v2.EndTransactionRe" +
+      "sponse\"\000\022]\n\tTelemetry\022$.apache.rocketmq." +
+      "v2.TelemetryCommand\032$.apache.rocketmq.v2" +
+      ".TelemetryCommand\"\000(\0010\001\022\204\001\n\027NotifyClient" +
+      "Termination\0222.apache.rocketmq.v2.NotifyC" +
+      "lientTerminationRequest\0323.apache.rocketm" +
+      "q.v2.NotifyClientTerminationResponse\"\000\022\204" +
+      "\001\n\027ChangeInvisibleDuration\0222.apache.rock" +
+      "etmq.v2.ChangeInvisibleDurationRequest\0323" +
+      ".apache.rocketmq.v2.ChangeInvisibleDurat" +
+      "ionResponse\"\000B<\n\022apache.rocketmq.v2B\tMQS" +
+      "erviceP\001\240\001\001\330\001\001\252\002\022Apache.Rocketmq.V2b\006pro" +
+      "to3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -525,7 +524,7 @@ public final class MQService {
     internal_static_apache_rocketmq_v2_Subscription_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_apache_rocketmq_v2_Subscription_descriptor,
-        new java.lang.String[] { "Group", "Subscriptions", "Fifo", "MaxDeliveryAttempts", "BackoffPolicy", "ReceiveBatchSize", "LongPollingTimeout", "Group", "Fifo", "MaxDeliveryAttempts", "ReceiveBatchSize", "LongPollingTimeout", });
+        new java.lang.String[] { "Group", "Subscriptions", "Fifo", "BackoffPolicy", "ReceiveBatchSize", "LongPollingTimeout", "Group", "Fifo", "ReceiveBatchSize", "LongPollingTimeout", });
     internal_static_apache_rocketmq_v2_Settings_descriptor =
       getDescriptor().getMessageTypes().get(27);
     internal_static_apache_rocketmq_v2_Settings_fieldAccessorTable = new
diff --git a/src/main/java/apache/rocketmq/v2/RetryPolicy.java b/src/main/java/apache/rocketmq/v2/RetryPolicy.java
index d8a049e..75cf0be 100644
--- a/src/main/java/apache/rocketmq/v2/RetryPolicy.java
+++ b/src/main/java/apache/rocketmq/v2/RetryPolicy.java
@@ -68,6 +68,11 @@ private static final long serialVersionUID = 0L;
             backoffMultiplier_ = input.readFloat();
             break;
           }
+          case 40: {
+
+            random_ = input.readBool();
+            break;
+          }
           default: {
             if (!parseUnknownField(
                 input, unknownFields, extensionRegistry, tag)) {
@@ -144,6 +149,17 @@ private static final long serialVersionUID = 0L;
     return backoffMultiplier_;
   }
 
+  public static final int RANDOM_FIELD_NUMBER = 5;
+  private boolean random_;
+  /**
+   * <code>bool random = 5;</code>
+   * @return The random.
+   */
+  @java.lang.Override
+  public boolean getRandom() {
+    return random_;
+  }
+
   private byte memoizedIsInitialized = -1;
   @java.lang.Override
   public final boolean isInitialized() {
@@ -170,6 +186,9 @@ private static final long serialVersionUID = 0L;
     if (java.lang.Float.floatToRawIntBits(backoffMultiplier_) != 0) {
       output.writeFloat(4, backoffMultiplier_);
     }
+    if (random_ != false) {
+      output.writeBool(5, random_);
+    }
     unknownFields.writeTo(output);
   }
 
@@ -195,6 +214,10 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeFloatSize(4, backoffMultiplier_);
     }
+    if (random_ != false) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeBoolSize(5, random_);
+    }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
     return size;
@@ -221,6 +244,8 @@ private static final long serialVersionUID = 0L;
     if (java.lang.Float.floatToIntBits(getBackoffMultiplier())
         != java.lang.Float.floatToIntBits(
             other.getBackoffMultiplier())) return false;
+    if (getRandom()
+        != other.getRandom()) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -243,6 +268,9 @@ private static final long serialVersionUID = 0L;
     hash = (37 * hash) + BACKOFF_MULTIPLIER_FIELD_NUMBER;
     hash = (53 * hash) + java.lang.Float.floatToIntBits(
         getBackoffMultiplier());
+    hash = (37 * hash) + RANDOM_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+        getRandom());
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
@@ -384,6 +412,8 @@ private static final long serialVersionUID = 0L;
 
       backoffMultiplier_ = 0F;
 
+      random_ = false;
+
       return this;
     }
 
@@ -414,6 +444,7 @@ private static final long serialVersionUID = 0L;
       result.initialBackoff_ = initialBackoff_;
       result.maxBackoff_ = maxBackoff_;
       result.backoffMultiplier_ = backoffMultiplier_;
+      result.random_ = random_;
       onBuilt();
       return result;
     }
@@ -474,6 +505,9 @@ private static final long serialVersionUID = 0L;
       if (other.getBackoffMultiplier() != 0F) {
         setBackoffMultiplier(other.getBackoffMultiplier());
       }
+      if (other.getRandom() != false) {
+        setRandom(other.getRandom());
+      }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
       return this;
@@ -626,6 +660,37 @@ private static final long serialVersionUID = 0L;
       onChanged();
       return this;
     }
+
+    private boolean random_ ;
+    /**
+     * <code>bool random = 5;</code>
+     * @return The random.
+     */
+    @java.lang.Override
+    public boolean getRandom() {
+      return random_;
+    }
+    /**
+     * <code>bool random = 5;</code>
+     * @param value The random to set.
+     * @return This builder for chaining.
+     */
+    public Builder setRandom(boolean value) {
+      
+      random_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>bool random = 5;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearRandom() {
+      
+      random_ = false;
+      onChanged();
+      return this;
+    }
     @java.lang.Override
     public final Builder setUnknownFields(
         final com.google.protobuf.UnknownFieldSet unknownFields) {
diff --git a/src/main/java/apache/rocketmq/v2/RetryPolicyOrBuilder.java b/src/main/java/apache/rocketmq/v2/RetryPolicyOrBuilder.java
index 4d69838..742e8d6 100644
--- a/src/main/java/apache/rocketmq/v2/RetryPolicyOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v2/RetryPolicyOrBuilder.java
@@ -30,4 +30,10 @@ public interface RetryPolicyOrBuilder extends
    * @return The backoffMultiplier.
    */
   float getBackoffMultiplier();
+
+  /**
+   * <code>bool random = 5;</code>
+   * @return The random.
+   */
+  boolean getRandom();
 }
diff --git a/src/main/java/apache/rocketmq/v2/Subscription.java b/src/main/java/apache/rocketmq/v2/Subscription.java
index 26f351e..13f3782 100644
--- a/src/main/java/apache/rocketmq/v2/Subscription.java
+++ b/src/main/java/apache/rocketmq/v2/Subscription.java
@@ -77,12 +77,7 @@ private static final long serialVersionUID = 0L;
             fifo_ = input.readBool();
             break;
           }
-          case 32: {
-            bitField0_ |= 0x00000004;
-            maxDeliveryAttempts_ = input.readInt32();
-            break;
-          }
-          case 42: {
+          case 34: {
             apache.rocketmq.v2.RetryPolicy.Builder subBuilder = null;
             if (backoffPolicy_ != null) {
               subBuilder = backoffPolicy_.toBuilder();
@@ -95,14 +90,14 @@ private static final long serialVersionUID = 0L;
 
             break;
           }
-          case 48: {
-            bitField0_ |= 0x00000008;
+          case 40: {
+            bitField0_ |= 0x00000004;
             receiveBatchSize_ = input.readInt32();
             break;
           }
-          case 58: {
+          case 50: {
             com.google.protobuf.Duration.Builder subBuilder = null;
-            if (((bitField0_ & 0x00000010) != 0)) {
+            if (((bitField0_ & 0x00000008) != 0)) {
               subBuilder = longPollingTimeout_.toBuilder();
             }
             longPollingTimeout_ = input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry);
@@ -110,7 +105,7 @@ private static final long serialVersionUID = 0L;
               subBuilder.mergeFrom(longPollingTimeout_);
               longPollingTimeout_ = subBuilder.buildPartial();
             }
-            bitField0_ |= 0x00000010;
+            bitField0_ |= 0x00000008;
             break;
           }
           default: {
@@ -290,34 +285,7 @@ private static final long serialVersionUID = 0L;
     return fifo_;
   }
 
-  public static final int MAX_DELIVERY_ATTEMPTS_FIELD_NUMBER = 4;
-  private int maxDeliveryAttempts_;
-  /**
-   * <pre>
-   * Max delivery attempts.
-   * </pre>
-   *
-   * <code>optional int32 max_delivery_attempts = 4;</code>
-   * @return Whether the maxDeliveryAttempts field is set.
-   */
-  @java.lang.Override
-  public boolean hasMaxDeliveryAttempts() {
-    return ((bitField0_ & 0x00000004) != 0);
-  }
-  /**
-   * <pre>
-   * Max delivery attempts.
-   * </pre>
-   *
-   * <code>optional int32 max_delivery_attempts = 4;</code>
-   * @return The maxDeliveryAttempts.
-   */
-  @java.lang.Override
-  public int getMaxDeliveryAttempts() {
-    return maxDeliveryAttempts_;
-  }
-
-  public static final int BACKOFF_POLICY_FIELD_NUMBER = 5;
+  public static final int BACKOFF_POLICY_FIELD_NUMBER = 4;
   private apache.rocketmq.v2.RetryPolicy backoffPolicy_;
   /**
    * <pre>
@@ -328,7 +296,7 @@ private static final long serialVersionUID = 0L;
    * the prior one depletes its lifecycle.
    * </pre>
    *
-   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 5;</code>
+   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 4;</code>
    * @return Whether the backoffPolicy field is set.
    */
   @java.lang.Override
@@ -344,7 +312,7 @@ private static final long serialVersionUID = 0L;
    * the prior one depletes its lifecycle.
    * </pre>
    *
-   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 5;</code>
+   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 4;</code>
    * @return The backoffPolicy.
    */
   @java.lang.Override
@@ -360,33 +328,33 @@ private static final long serialVersionUID = 0L;
    * the prior one depletes its lifecycle.
    * </pre>
    *
-   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 5;</code>
+   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 4;</code>
    */
   @java.lang.Override
   public apache.rocketmq.v2.RetryPolicyOrBuilder getBackoffPolicyOrBuilder() {
     return getBackoffPolicy();
   }
 
-  public static final int RECEIVE_BATCH_SIZE_FIELD_NUMBER = 6;
+  public static final int RECEIVE_BATCH_SIZE_FIELD_NUMBER = 5;
   private int receiveBatchSize_;
   /**
    * <pre>
    * Message receive batch size here is essential for push consumer.
    * </pre>
    *
-   * <code>optional int32 receive_batch_size = 6;</code>
+   * <code>optional int32 receive_batch_size = 5;</code>
    * @return Whether the receiveBatchSize field is set.
    */
   @java.lang.Override
   public boolean hasReceiveBatchSize() {
-    return ((bitField0_ & 0x00000008) != 0);
+    return ((bitField0_ & 0x00000004) != 0);
   }
   /**
    * <pre>
    * Message receive batch size here is essential for push consumer.
    * </pre>
    *
-   * <code>optional int32 receive_batch_size = 6;</code>
+   * <code>optional int32 receive_batch_size = 5;</code>
    * @return The receiveBatchSize.
    */
   @java.lang.Override
@@ -394,7 +362,7 @@ private static final long serialVersionUID = 0L;
     return receiveBatchSize_;
   }
 
-  public static final int LONG_POLLING_TIMEOUT_FIELD_NUMBER = 7;
+  public static final int LONG_POLLING_TIMEOUT_FIELD_NUMBER = 6;
   private com.google.protobuf.Duration longPollingTimeout_;
   /**
    * <pre>
@@ -402,12 +370,12 @@ private static final long serialVersionUID = 0L;
    * push consumer.
    * </pre>
    *
-   * <code>optional .google.protobuf.Duration long_polling_timeout = 7;</code>
+   * <code>optional .google.protobuf.Duration long_polling_timeout = 6;</code>
    * @return Whether the longPollingTimeout field is set.
    */
   @java.lang.Override
   public boolean hasLongPollingTimeout() {
-    return ((bitField0_ & 0x00000010) != 0);
+    return ((bitField0_ & 0x00000008) != 0);
   }
   /**
    * <pre>
@@ -415,7 +383,7 @@ private static final long serialVersionUID = 0L;
    * push consumer.
    * </pre>
    *
-   * <code>optional .google.protobuf.Duration long_polling_timeout = 7;</code>
+   * <code>optional .google.protobuf.Duration long_polling_timeout = 6;</code>
    * @return The longPollingTimeout.
    */
   @java.lang.Override
@@ -428,7 +396,7 @@ private static final long serialVersionUID = 0L;
    * push consumer.
    * </pre>
    *
-   * <code>optional .google.protobuf.Duration long_polling_timeout = 7;</code>
+   * <code>optional .google.protobuf.Duration long_polling_timeout = 6;</code>
    */
   @java.lang.Override
   public com.google.protobuf.DurationOrBuilder getLongPollingTimeoutOrBuilder() {
@@ -458,17 +426,14 @@ private static final long serialVersionUID = 0L;
     if (((bitField0_ & 0x00000002) != 0)) {
       output.writeBool(3, fifo_);
     }
-    if (((bitField0_ & 0x00000004) != 0)) {
-      output.writeInt32(4, maxDeliveryAttempts_);
-    }
     if (backoffPolicy_ != null) {
-      output.writeMessage(5, getBackoffPolicy());
+      output.writeMessage(4, getBackoffPolicy());
     }
-    if (((bitField0_ & 0x00000008) != 0)) {
-      output.writeInt32(6, receiveBatchSize_);
+    if (((bitField0_ & 0x00000004) != 0)) {
+      output.writeInt32(5, receiveBatchSize_);
     }
-    if (((bitField0_ & 0x00000010) != 0)) {
-      output.writeMessage(7, getLongPollingTimeout());
+    if (((bitField0_ & 0x00000008) != 0)) {
+      output.writeMessage(6, getLongPollingTimeout());
     }
     unknownFields.writeTo(output);
   }
@@ -491,21 +456,17 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeBoolSize(3, fifo_);
     }
-    if (((bitField0_ & 0x00000004) != 0)) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(4, maxDeliveryAttempts_);
-    }
     if (backoffPolicy_ != null) {
       size += com.google.protobuf.CodedOutputStream
-        .computeMessageSize(5, getBackoffPolicy());
+        .computeMessageSize(4, getBackoffPolicy());
     }
-    if (((bitField0_ & 0x00000008) != 0)) {
+    if (((bitField0_ & 0x00000004) != 0)) {
       size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(6, receiveBatchSize_);
+        .computeInt32Size(5, receiveBatchSize_);
     }
-    if (((bitField0_ & 0x00000010) != 0)) {
+    if (((bitField0_ & 0x00000008) != 0)) {
       size += com.google.protobuf.CodedOutputStream
-        .computeMessageSize(7, getLongPollingTimeout());
+        .computeMessageSize(6, getLongPollingTimeout());
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -534,11 +495,6 @@ private static final long serialVersionUID = 0L;
       if (getFifo()
           != other.getFifo()) return false;
     }
-    if (hasMaxDeliveryAttempts() != other.hasMaxDeliveryAttempts()) return false;
-    if (hasMaxDeliveryAttempts()) {
-      if (getMaxDeliveryAttempts()
-          != other.getMaxDeliveryAttempts()) return false;
-    }
     if (hasBackoffPolicy() != other.hasBackoffPolicy()) return false;
     if (hasBackoffPolicy()) {
       if (!getBackoffPolicy()
@@ -578,10 +534,6 @@ private static final long serialVersionUID = 0L;
       hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
           getFifo());
     }
-    if (hasMaxDeliveryAttempts()) {
-      hash = (37 * hash) + MAX_DELIVERY_ATTEMPTS_FIELD_NUMBER;
-      hash = (53 * hash) + getMaxDeliveryAttempts();
-    }
     if (hasBackoffPolicy()) {
       hash = (37 * hash) + BACKOFF_POLICY_FIELD_NUMBER;
       hash = (53 * hash) + getBackoffPolicy().hashCode();
@@ -744,8 +696,6 @@ private static final long serialVersionUID = 0L;
       }
       fifo_ = false;
       bitField0_ = (bitField0_ & ~0x00000004);
-      maxDeliveryAttempts_ = 0;
-      bitField0_ = (bitField0_ & ~0x00000008);
       if (backoffPolicyBuilder_ == null) {
         backoffPolicy_ = null;
       } else {
@@ -753,13 +703,13 @@ private static final long serialVersionUID = 0L;
         backoffPolicyBuilder_ = null;
       }
       receiveBatchSize_ = 0;
-      bitField0_ = (bitField0_ & ~0x00000010);
+      bitField0_ = (bitField0_ & ~0x00000008);
       if (longPollingTimeoutBuilder_ == null) {
         longPollingTimeout_ = null;
       } else {
         longPollingTimeoutBuilder_.clear();
       }
-      bitField0_ = (bitField0_ & ~0x00000020);
+      bitField0_ = (bitField0_ & ~0x00000010);
       return this;
     }
 
@@ -809,26 +759,22 @@ private static final long serialVersionUID = 0L;
         result.fifo_ = fifo_;
         to_bitField0_ |= 0x00000002;
       }
-      if (((from_bitField0_ & 0x00000008) != 0)) {
-        result.maxDeliveryAttempts_ = maxDeliveryAttempts_;
-        to_bitField0_ |= 0x00000004;
-      }
       if (backoffPolicyBuilder_ == null) {
         result.backoffPolicy_ = backoffPolicy_;
       } else {
         result.backoffPolicy_ = backoffPolicyBuilder_.build();
       }
-      if (((from_bitField0_ & 0x00000010) != 0)) {
+      if (((from_bitField0_ & 0x00000008) != 0)) {
         result.receiveBatchSize_ = receiveBatchSize_;
-        to_bitField0_ |= 0x00000008;
+        to_bitField0_ |= 0x00000004;
       }
-      if (((from_bitField0_ & 0x00000020) != 0)) {
+      if (((from_bitField0_ & 0x00000010) != 0)) {
         if (longPollingTimeoutBuilder_ == null) {
           result.longPollingTimeout_ = longPollingTimeout_;
         } else {
           result.longPollingTimeout_ = longPollingTimeoutBuilder_.build();
         }
-        to_bitField0_ |= 0x00000010;
+        to_bitField0_ |= 0x00000008;
       }
       result.bitField0_ = to_bitField0_;
       onBuilt();
@@ -911,9 +857,6 @@ private static final long serialVersionUID = 0L;
       if (other.hasFifo()) {
         setFifo(other.getFifo());
       }
-      if (other.hasMaxDeliveryAttempts()) {
-        setMaxDeliveryAttempts(other.getMaxDeliveryAttempts());
-      }
       if (other.hasBackoffPolicy()) {
         mergeBackoffPolicy(other.getBackoffPolicy());
       }
@@ -1514,61 +1457,6 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
-    private int maxDeliveryAttempts_ ;
-    /**
-     * <pre>
-     * Max delivery attempts.
-     * </pre>
-     *
-     * <code>optional int32 max_delivery_attempts = 4;</code>
-     * @return Whether the maxDeliveryAttempts field is set.
-     */
-    @java.lang.Override
-    public boolean hasMaxDeliveryAttempts() {
-      return ((bitField0_ & 0x00000008) != 0);
-    }
-    /**
-     * <pre>
-     * Max delivery attempts.
-     * </pre>
-     *
-     * <code>optional int32 max_delivery_attempts = 4;</code>
-     * @return The maxDeliveryAttempts.
-     */
-    @java.lang.Override
-    public int getMaxDeliveryAttempts() {
-      return maxDeliveryAttempts_;
-    }
-    /**
-     * <pre>
-     * Max delivery attempts.
-     * </pre>
-     *
-     * <code>optional int32 max_delivery_attempts = 4;</code>
-     * @param value The maxDeliveryAttempts to set.
-     * @return This builder for chaining.
-     */
-    public Builder setMaxDeliveryAttempts(int value) {
-      bitField0_ |= 0x00000008;
-      maxDeliveryAttempts_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <pre>
-     * Max delivery attempts.
-     * </pre>
-     *
-     * <code>optional int32 max_delivery_attempts = 4;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearMaxDeliveryAttempts() {
-      bitField0_ = (bitField0_ & ~0x00000008);
-      maxDeliveryAttempts_ = 0;
-      onChanged();
-      return this;
-    }
-
     private apache.rocketmq.v2.RetryPolicy backoffPolicy_;
     private com.google.protobuf.SingleFieldBuilderV3<
         apache.rocketmq.v2.RetryPolicy, apache.rocketmq.v2.RetryPolicy.Builder, apache.rocketmq.v2.RetryPolicyOrBuilder> backoffPolicyBuilder_;
@@ -1581,7 +1469,7 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 5;</code>
+     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 4;</code>
      * @return Whether the backoffPolicy field is set.
      */
     public boolean hasBackoffPolicy() {
@@ -1596,7 +1484,7 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 5;</code>
+     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 4;</code>
      * @return The backoffPolicy.
      */
     public apache.rocketmq.v2.RetryPolicy getBackoffPolicy() {
@@ -1615,7 +1503,7 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 5;</code>
+     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 4;</code>
      */
     public Builder setBackoffPolicy(apache.rocketmq.v2.RetryPolicy value) {
       if (backoffPolicyBuilder_ == null) {
@@ -1639,7 +1527,7 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 5;</code>
+     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 4;</code>
      */
     public Builder setBackoffPolicy(
         apache.rocketmq.v2.RetryPolicy.Builder builderForValue) {
@@ -1661,7 +1549,7 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 5;</code>
+     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 4;</code>
      */
     public Builder mergeBackoffPolicy(apache.rocketmq.v2.RetryPolicy value) {
       if (backoffPolicyBuilder_ == null) {
@@ -1687,7 +1575,7 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 5;</code>
+     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 4;</code>
      */
     public Builder clearBackoffPolicy() {
       if (backoffPolicyBuilder_ == null) {
@@ -1709,7 +1597,7 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 5;</code>
+     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 4;</code>
      */
     public apache.rocketmq.v2.RetryPolicy.Builder getBackoffPolicyBuilder() {
       
@@ -1725,7 +1613,7 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 5;</code>
+     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 4;</code>
      */
     public apache.rocketmq.v2.RetryPolicyOrBuilder getBackoffPolicyOrBuilder() {
       if (backoffPolicyBuilder_ != null) {
@@ -1744,7 +1632,7 @@ private static final long serialVersionUID = 0L;
      * the prior one depletes its lifecycle.
      * </pre>
      *
-     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 5;</code>
+     * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 4;</code>
      */
     private com.google.protobuf.SingleFieldBuilderV3<
         apache.rocketmq.v2.RetryPolicy, apache.rocketmq.v2.RetryPolicy.Builder, apache.rocketmq.v2.RetryPolicyOrBuilder> 
@@ -1766,19 +1654,19 @@ private static final long serialVersionUID = 0L;
      * Message receive batch size here is essential for push consumer.
      * </pre>
      *
-     * <code>optional int32 receive_batch_size = 6;</code>
+     * <code>optional int32 receive_batch_size = 5;</code>
      * @return Whether the receiveBatchSize field is set.
      */
     @java.lang.Override
     public boolean hasReceiveBatchSize() {
-      return ((bitField0_ & 0x00000010) != 0);
+      return ((bitField0_ & 0x00000008) != 0);
     }
     /**
      * <pre>
      * Message receive batch size here is essential for push consumer.
      * </pre>
      *
-     * <code>optional int32 receive_batch_size = 6;</code>
+     * <code>optional int32 receive_batch_size = 5;</code>
      * @return The receiveBatchSize.
      */
     @java.lang.Override
@@ -1790,12 +1678,12 @@ private static final long serialVersionUID = 0L;
      * Message receive batch size here is essential for push consumer.
      * </pre>
      *
-     * <code>optional int32 receive_batch_size = 6;</code>
+     * <code>optional int32 receive_batch_size = 5;</code>
      * @param value The receiveBatchSize to set.
      * @return This builder for chaining.
      */
     public Builder setReceiveBatchSize(int value) {
-      bitField0_ |= 0x00000010;
+      bitField0_ |= 0x00000008;
       receiveBatchSize_ = value;
       onChanged();
       return this;
@@ -1805,11 +1693,11 @@ private static final long serialVersionUID = 0L;
      * Message receive batch size here is essential for push consumer.
      * </pre>
      *
-     * <code>optional int32 receive_batch_size = 6;</code>
+     * <code>optional int32 receive_batch_size = 5;</code>
      * @return This builder for chaining.
      */
     public Builder clearReceiveBatchSize() {
-      bitField0_ = (bitField0_ & ~0x00000010);
+      bitField0_ = (bitField0_ & ~0x00000008);
       receiveBatchSize_ = 0;
       onChanged();
       return this;
@@ -1824,11 +1712,11 @@ private static final long serialVersionUID = 0L;
      * push consumer.
      * </pre>
      *
-     * <code>optional .google.protobuf.Duration long_polling_timeout = 7;</code>
+     * <code>optional .google.protobuf.Duration long_polling_timeout = 6;</code>
      * @return Whether the longPollingTimeout field is set.
      */
     public boolean hasLongPollingTimeout() {
-      return ((bitField0_ & 0x00000020) != 0);
+      return ((bitField0_ & 0x00000010) != 0);
     }
     /**
      * <pre>
@@ -1836,7 +1724,7 @@ private static final long serialVersionUID = 0L;
      * push consumer.
      * </pre>
      *
-     * <code>optional .google.protobuf.Duration long_polling_timeout = 7;</code>
+     * <code>optional .google.protobuf.Duration long_polling_timeout = 6;</code>
      * @return The longPollingTimeout.
      */
     public com.google.protobuf.Duration getLongPollingTimeout() {
@@ -1852,7 +1740,7 @@ private static final long serialVersionUID = 0L;
      * push consumer.
      * </pre>
      *
-     * <code>optional .google.protobuf.Duration long_polling_timeout = 7;</code>
+     * <code>optional .google.protobuf.Duration long_polling_timeout = 6;</code>
      */
     public Builder setLongPollingTimeout(com.google.protobuf.Duration value) {
       if (longPollingTimeoutBuilder_ == null) {
@@ -1864,7 +1752,7 @@ private static final long serialVersionUID = 0L;
       } else {
         longPollingTimeoutBuilder_.setMessage(value);
       }
-      bitField0_ |= 0x00000020;
+      bitField0_ |= 0x00000010;
       return this;
     }
     /**
@@ -1873,7 +1761,7 @@ private static final long serialVersionUID = 0L;
      * push consumer.
      * </pre>
      *
-     * <code>optional .google.protobuf.Duration long_polling_timeout = 7;</code>
+     * <code>optional .google.protobuf.Duration long_polling_timeout = 6;</code>
      */
     public Builder setLongPollingTimeout(
         com.google.protobuf.Duration.Builder builderForValue) {
@@ -1883,7 +1771,7 @@ private static final long serialVersionUID = 0L;
       } else {
         longPollingTimeoutBuilder_.setMessage(builderForValue.build());
       }
-      bitField0_ |= 0x00000020;
+      bitField0_ |= 0x00000010;
       return this;
     }
     /**
@@ -1892,11 +1780,11 @@ private static final long serialVersionUID = 0L;
      * push consumer.
      * </pre>
      *
-     * <code>optional .google.protobuf.Duration long_polling_timeout = 7;</code>
+     * <code>optional .google.protobuf.Duration long_polling_timeout = 6;</code>
      */
     public Builder mergeLongPollingTimeout(com.google.protobuf.Duration value) {
       if (longPollingTimeoutBuilder_ == null) {
-        if (((bitField0_ & 0x00000020) != 0) &&
+        if (((bitField0_ & 0x00000010) != 0) &&
             longPollingTimeout_ != null &&
             longPollingTimeout_ != com.google.protobuf.Duration.getDefaultInstance()) {
           longPollingTimeout_ =
@@ -1908,7 +1796,7 @@ private static final long serialVersionUID = 0L;
       } else {
         longPollingTimeoutBuilder_.mergeFrom(value);
       }
-      bitField0_ |= 0x00000020;
+      bitField0_ |= 0x00000010;
       return this;
     }
     /**
@@ -1917,7 +1805,7 @@ private static final long serialVersionUID = 0L;
      * push consumer.
      * </pre>
      *
-     * <code>optional .google.protobuf.Duration long_polling_timeout = 7;</code>
+     * <code>optional .google.protobuf.Duration long_polling_timeout = 6;</code>
      */
     public Builder clearLongPollingTimeout() {
       if (longPollingTimeoutBuilder_ == null) {
@@ -1926,7 +1814,7 @@ private static final long serialVersionUID = 0L;
       } else {
         longPollingTimeoutBuilder_.clear();
       }
-      bitField0_ = (bitField0_ & ~0x00000020);
+      bitField0_ = (bitField0_ & ~0x00000010);
       return this;
     }
     /**
@@ -1935,10 +1823,10 @@ private static final long serialVersionUID = 0L;
      * push consumer.
      * </pre>
      *
-     * <code>optional .google.protobuf.Duration long_polling_timeout = 7;</code>
+     * <code>optional .google.protobuf.Duration long_polling_timeout = 6;</code>
      */
     public com.google.protobuf.Duration.Builder getLongPollingTimeoutBuilder() {
-      bitField0_ |= 0x00000020;
+      bitField0_ |= 0x00000010;
       onChanged();
       return getLongPollingTimeoutFieldBuilder().getBuilder();
     }
@@ -1948,7 +1836,7 @@ private static final long serialVersionUID = 0L;
      * push consumer.
      * </pre>
      *
-     * <code>optional .google.protobuf.Duration long_polling_timeout = 7;</code>
+     * <code>optional .google.protobuf.Duration long_polling_timeout = 6;</code>
      */
     public com.google.protobuf.DurationOrBuilder getLongPollingTimeoutOrBuilder() {
       if (longPollingTimeoutBuilder_ != null) {
@@ -1964,7 +1852,7 @@ private static final long serialVersionUID = 0L;
      * push consumer.
      * </pre>
      *
-     * <code>optional .google.protobuf.Duration long_polling_timeout = 7;</code>
+     * <code>optional .google.protobuf.Duration long_polling_timeout = 6;</code>
      */
     private com.google.protobuf.SingleFieldBuilderV3<
         com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> 
diff --git a/src/main/java/apache/rocketmq/v2/SubscriptionOrBuilder.java b/src/main/java/apache/rocketmq/v2/SubscriptionOrBuilder.java
index 5766c78..5ddbeb2 100644
--- a/src/main/java/apache/rocketmq/v2/SubscriptionOrBuilder.java
+++ b/src/main/java/apache/rocketmq/v2/SubscriptionOrBuilder.java
@@ -113,25 +113,6 @@ public interface SubscriptionOrBuilder extends
    */
   boolean getFifo();
 
-  /**
-   * <pre>
-   * Max delivery attempts.
-   * </pre>
-   *
-   * <code>optional int32 max_delivery_attempts = 4;</code>
-   * @return Whether the maxDeliveryAttempts field is set.
-   */
-  boolean hasMaxDeliveryAttempts();
-  /**
-   * <pre>
-   * Max delivery attempts.
-   * </pre>
-   *
-   * <code>optional int32 max_delivery_attempts = 4;</code>
-   * @return The maxDeliveryAttempts.
-   */
-  int getMaxDeliveryAttempts();
-
   /**
    * <pre>
    * When processing message fails, `backoff_policy` describes an interval
@@ -141,7 +122,7 @@ public interface SubscriptionOrBuilder extends
    * the prior one depletes its lifecycle.
    * </pre>
    *
-   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 5;</code>
+   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 4;</code>
    * @return Whether the backoffPolicy field is set.
    */
   boolean hasBackoffPolicy();
@@ -154,7 +135,7 @@ public interface SubscriptionOrBuilder extends
    * the prior one depletes its lifecycle.
    * </pre>
    *
-   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 5;</code>
+   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 4;</code>
    * @return The backoffPolicy.
    */
   apache.rocketmq.v2.RetryPolicy getBackoffPolicy();
@@ -167,7 +148,7 @@ public interface SubscriptionOrBuilder extends
    * the prior one depletes its lifecycle.
    * </pre>
    *
-   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 5;</code>
+   * <code>.apache.rocketmq.v2.RetryPolicy backoff_policy = 4;</code>
    */
   apache.rocketmq.v2.RetryPolicyOrBuilder getBackoffPolicyOrBuilder();
 
@@ -176,7 +157,7 @@ public interface SubscriptionOrBuilder extends
    * Message receive batch size here is essential for push consumer.
    * </pre>
    *
-   * <code>optional int32 receive_batch_size = 6;</code>
+   * <code>optional int32 receive_batch_size = 5;</code>
    * @return Whether the receiveBatchSize field is set.
    */
   boolean hasReceiveBatchSize();
@@ -185,7 +166,7 @@ public interface SubscriptionOrBuilder extends
    * Message receive batch size here is essential for push consumer.
    * </pre>
    *
-   * <code>optional int32 receive_batch_size = 6;</code>
+   * <code>optional int32 receive_batch_size = 5;</code>
    * @return The receiveBatchSize.
    */
   int getReceiveBatchSize();
@@ -196,7 +177,7 @@ public interface SubscriptionOrBuilder extends
    * push consumer.
    * </pre>
    *
-   * <code>optional .google.protobuf.Duration long_polling_timeout = 7;</code>
+   * <code>optional .google.protobuf.Duration long_polling_timeout = 6;</code>
    * @return Whether the longPollingTimeout field is set.
    */
   boolean hasLongPollingTimeout();
@@ -206,7 +187,7 @@ public interface SubscriptionOrBuilder extends
    * push consumer.
    * </pre>
    *
-   * <code>optional .google.protobuf.Duration long_polling_timeout = 7;</code>
+   * <code>optional .google.protobuf.Duration long_polling_timeout = 6;</code>
    * @return The longPollingTimeout.
    */
   com.google.protobuf.Duration getLongPollingTimeout();
@@ -216,7 +197,7 @@ public interface SubscriptionOrBuilder extends
    * push consumer.
    * </pre>
    *
-   * <code>optional .google.protobuf.Duration long_polling_timeout = 7;</code>
+   * <code>optional .google.protobuf.Duration long_polling_timeout = 6;</code>
    */
   com.google.protobuf.DurationOrBuilder getLongPollingTimeoutOrBuilder();
 }
diff --git a/src/main/resources/proto/apache/rocketmq/v2/definition.proto b/src/main/resources/proto/apache/rocketmq/v2/definition.proto
index 94c64b4..aa12be1 100644
--- a/src/main/resources/proto/apache/rocketmq/v2/definition.proto
+++ b/src/main/resources/proto/apache/rocketmq/v2/definition.proto
@@ -63,6 +63,7 @@ message RetryPolicy {
   float initial_backoff = 2;
   float max_backoff = 3;
   float backoff_multiplier = 4;
+  bool random = 5;
 }
 
 message Resource {
diff --git a/src/main/resources/proto/apache/rocketmq/v2/service.proto b/src/main/resources/proto/apache/rocketmq/v2/service.proto
index 3093a60..3a73f0f 100644
--- a/src/main/resources/proto/apache/rocketmq/v2/service.proto
+++ b/src/main/resources/proto/apache/rocketmq/v2/service.proto
@@ -223,23 +223,20 @@ message Subscription {
   // ones are completely acknowledged.
   optional bool fifo = 3;
 
-  // Max delivery attempts.
-  optional int32 max_delivery_attempts = 4;
-
   // When processing message fails, `backoff_policy` describes an interval
   // after which the message is ready to consume again.
   //
   // For FIFO messages, the interval should be relatively small because
   // messages of the same message group would not be readily available utill
   // the prior one depletes its lifecycle.
-  RetryPolicy backoff_policy = 5;
+  RetryPolicy backoff_policy = 4;
 
   // Message receive batch size here is essential for push consumer.
-  optional int32 receive_batch_size = 6;
+  optional int32 receive_batch_size = 5;
 
   // Long-polling timeout for `ReceiveMessageRequest`, which is essential for
   // push consumer.
-  optional google.protobuf.Duration long_polling_timeout = 7;
+  optional google.protobuf.Duration long_polling_timeout = 6;
 }
 
 message Settings {