You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by li...@apache.org on 2022/11/09 09:58:08 UTC
[rocketmq-clients] branch master updated: Implement native php client #255 (#278)
This is an automated email from the ASF dual-hosted git repository.
lizhanhui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-clients.git
The following commit(s) were added to refs/heads/master by this push:
new 74c5637 Implement native php client #255 (#278)
74c5637 is described below
commit 74c56378627b3f1a65b6bfec615cf5157db4e345
Author: kevin_ <xi...@gmail.com>
AuthorDate: Wed Nov 9 17:58:02 2022 +0800
Implement native php client #255 (#278)
* init
* Fix copyright issue
* fix chinese comments
* Update license check configuration file as 'php/composer.lock' was removed
* Polish comment
Co-authored-by: Li Zhanhui <li...@gmail.com>
---
.licenserc.yaml | 2 +
php/.gitignore | 4 +
php/Consumer.php | 48 ++
php/Producer.php | 73 ++
php/composer.json | 13 +
php/grpc/Apache/Rocketmq/V2/AckMessageEntry.php | 85 ++
php/grpc/Apache/Rocketmq/V2/AckMessageRequest.php | 132 ++++
php/grpc/Apache/Rocketmq/V2/AckMessageResponse.php | 106 +++
.../Apache/Rocketmq/V2/AckMessageResultEntry.php | 137 ++++
php/grpc/Apache/Rocketmq/V2/Address.php | 85 ++
php/grpc/Apache/Rocketmq/V2/AddressScheme.php | 58 ++
php/grpc/Apache/Rocketmq/V2/AdminClient.php | 49 ++
php/grpc/Apache/Rocketmq/V2/Assignment.php | 68 ++
php/grpc/Apache/Rocketmq/V2/Broker.php | 159 ++++
.../Rocketmq/V2/ChangeInvisibleDurationRequest.php | 217 ++++++
.../V2/ChangeInvisibleDurationResponse.php | 102 +++
.../Apache/Rocketmq/V2/ChangeLogLevelRequest.php | 58 ++
.../Rocketmq/V2/ChangeLogLevelRequest/Level.php | 66 ++
.../Rocketmq/V2/ChangeLogLevelRequest_Level.php | 16 +
.../Apache/Rocketmq/V2/ChangeLogLevelResponse.php | 58 ++
php/grpc/Apache/Rocketmq/V2/ClientType.php | 58 ++
php/grpc/Apache/Rocketmq/V2/Code.php | 375 +++++++++
php/grpc/Apache/Rocketmq/V2/CustomizedBackoff.php | 69 ++
php/grpc/Apache/Rocketmq/V2/Digest.php | 98 +++
php/grpc/Apache/Rocketmq/V2/DigestType.php | 67 ++
php/grpc/Apache/Rocketmq/V2/Encoding.php | 53 ++
.../Apache/Rocketmq/V2/EndTransactionRequest.php | 203 +++++
.../Apache/Rocketmq/V2/EndTransactionResponse.php | 68 ++
php/grpc/Apache/Rocketmq/V2/Endpoints.php | 85 ++
php/grpc/Apache/Rocketmq/V2/ExponentialBackoff.php | 134 ++++
php/grpc/Apache/Rocketmq/V2/FilterExpression.php | 85 ++
php/grpc/Apache/Rocketmq/V2/FilterType.php | 53 ++
.../V2/ForwardMessageToDeadLetterQueueRequest.php | 213 +++++
.../V2/ForwardMessageToDeadLetterQueueResponse.php | 68 ++
php/grpc/Apache/Rocketmq/V2/HeartbeatRequest.php | 95 +++
php/grpc/Apache/Rocketmq/V2/HeartbeatResponse.php | 68 ++
php/grpc/Apache/Rocketmq/V2/Language.php | 68 ++
php/grpc/Apache/Rocketmq/V2/Message.php | 182 +++++
php/grpc/Apache/Rocketmq/V2/MessageQueue.php | 186 +++++
php/grpc/Apache/Rocketmq/V2/MessageType.php | 70 ++
.../Apache/Rocketmq/V2/MessagingServiceClient.php | 266 +++++++
php/grpc/Apache/Rocketmq/V2/Metric.php | 109 +++
.../Rocketmq/V2/NotifyClientTerminationRequest.php | 75 ++
.../V2/NotifyClientTerminationResponse.php | 68 ++
php/grpc/Apache/Rocketmq/V2/Permission.php | 63 ++
.../Rocketmq/V2/PrintThreadStackTraceCommand.php | 58 ++
php/grpc/Apache/Rocketmq/V2/Publishing.php | 153 ++++
.../Apache/Rocketmq/V2/QueryAssignmentRequest.php | 142 ++++
.../Apache/Rocketmq/V2/QueryAssignmentResponse.php | 95 +++
php/grpc/Apache/Rocketmq/V2/QueryRouteRequest.php | 120 +++
php/grpc/Apache/Rocketmq/V2/QueryRouteResponse.php | 95 +++
.../Apache/Rocketmq/V2/ReceiveMessageRequest.php | 247 ++++++
.../Apache/Rocketmq/V2/ReceiveMessageResponse.php | 129 ++++
.../V2/RecoverOrphanedTransactionCommand.php | 95 +++
php/grpc/Apache/Rocketmq/V2/Resource.php | 96 +++
php/grpc/Apache/Rocketmq/V2/RetryPolicy.php | 123 +++
php/grpc/Apache/Rocketmq/V2/SendMessageRequest.php | 58 ++
.../Apache/Rocketmq/V2/SendMessageResponse.php | 106 +++
php/grpc/Apache/Rocketmq/V2/SendResultEntry.php | 149 ++++
php/grpc/Apache/Rocketmq/V2/Settings.php | 374 +++++++++
php/grpc/Apache/Rocketmq/V2/Status.php | 85 ++
php/grpc/Apache/Rocketmq/V2/Subscription.php | 273 +++++++
php/grpc/Apache/Rocketmq/V2/SubscriptionEntry.php | 105 +++
php/grpc/Apache/Rocketmq/V2/SystemProperties.php | 853 +++++++++++++++++++++
php/grpc/Apache/Rocketmq/V2/TelemetryCommand.php | 281 +++++++
php/grpc/Apache/Rocketmq/V2/ThreadStackTrace.php | 95 +++
.../Apache/Rocketmq/V2/TransactionResolution.php | 53 ++
php/grpc/Apache/Rocketmq/V2/TransactionSource.php | 53 ++
php/grpc/Apache/Rocketmq/V2/UA.php | 169 ++++
.../Apache/Rocketmq/V2/VerifyMessageCommand.php | 95 +++
.../Apache/Rocketmq/V2/VerifyMessageResult.php | 58 ++
php/grpc/GPBMetadata/Apache/Rocketmq/V2/Admin.php | Bin 0 -> 961 bytes
.../GPBMetadata/Apache/Rocketmq/V2/Definition.php | Bin 0 -> 5552 bytes
.../GPBMetadata/Apache/Rocketmq/V2/Service.php | Bin 0 -> 7300 bytes
php/protocol/apache/rocketmq/v2/admin.proto | 43 ++
php/protocol/apache/rocketmq/v2/definition.proto | 450 +++++++++++
php/protocol/apache/rocketmq/v2/service.proto | 455 +++++++++++
77 files changed, 9523 insertions(+)
diff --git a/.licenserc.yaml b/.licenserc.yaml
index 62f7859..177ad72 100644
--- a/.licenserc.yaml
+++ b/.licenserc.yaml
@@ -47,5 +47,7 @@ header:
- 'cpp/.gitignore'
- 'cpp/third_party'
- 'cpp/cmake'
+ - 'php/grpc/**/*.php'
+ - 'php/composer.json'
comment: on-failure
diff --git a/php/.gitignore b/php/.gitignore
new file mode 100644
index 0000000..4e3d3c3
--- /dev/null
+++ b/php/.gitignore
@@ -0,0 +1,4 @@
+.idea
+src
+vendor
+composer.lock
diff --git a/php/Consumer.php b/php/Consumer.php
new file mode 100644
index 0000000..85a475b
--- /dev/null
+++ b/php/Consumer.php
@@ -0,0 +1,48 @@
+<?php
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache\Rocketmq;
+
+require 'vendor/autoload.php';
+
+use Apache\Rocketmq\V2\MessageQueue;
+use Apache\Rocketmq\V2\MessageType;
+use Apache\Rocketmq\V2\MessagingServiceClient;
+use Apache\Rocketmq\V2\ReceiveMessageRequest;
+use Apache\Rocketmq\V2\Resource;
+use Grpc\ChannelCredentials;
+
+class Consumer
+{
+ public function init()
+ {
+ $client = new MessagingServiceClient('rmq-cn-cs02xhf2k01.cn-hangzhou.rmq.aliyuncs.com:8080', ['credentials' => ChannelCredentials::createInsecure()]);
+ $request = new ReceiveMessageRequest();
+ $mq = new MessageQueue();
+ $resource = new Resource();
+ $resource->setName('normal_topic');
+ $mq->setAcceptMessageTypes([MessageType::NORMAL]);
+ $mq->setTopic($resource);
+ $request->setMessageQueue($mq);
+ $msg = $client->ReceiveMessage($request);
+ var_dump($msg);
+ }
+}
+
+$x = new Consumer();
+$x->init();
\ No newline at end of file
diff --git a/php/Producer.php b/php/Producer.php
new file mode 100644
index 0000000..e785deb
--- /dev/null
+++ b/php/Producer.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache\Rocketmq;
+
+require 'vendor/autoload.php';
+
+
+use Apache\Rocketmq\V2\MessageQueue;
+use Apache\Rocketmq\V2\MessagingServiceClient;
+use Apache\Rocketmq\V2\QueryRouteRequest;
+use Apache\Rocketmq\V2\ReceiveMessageRequest;
+use Apache\Rocketmq\V2\Resource;
+use Grpc\ChannelCredentials;
+use const Grpc\STATUS_OK;
+
+class Producer
+{
+
+ public function init()
+ {
+ /**
+ * Client ID is currently concatenated using a fixed host name to
+ * facilitate code debugging.
+ */
+ $clientId = 'missyourlove' . '@' . posix_getpid() . '@' . rand(0, 10) . '@' . $this->getRandStr(10);
+ $client = new MessagingServiceClient('rmq-cn-cs02xhf2k01.cn-hangzhou.rmq.aliyuncs.com:8080', [
+ 'credentials' => ChannelCredentials::createInsecure(),
+ 'update_metadata' => function ($metaData) use ($clientId) {
+ $metaData['headers'] = ['clientID' => $clientId]; // Pass the ClientID to the server through the header
+ return $metaData;
+ }
+ ]);
+
+ $qr = new QueryRouteRequest();
+ $rs = new Resource();
+ $rs->setResourceNamespace('');
+ $rs->setName('normal_topic');
+ $qr->setTopic($rs);
+ $status = $client->QueryRoute($qr)->wait();
+ var_dump($status); // This prints out the response data returned by the server
+ }
+
+ public function getRandStr($length){
+ //Character combinations
+ $str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
+ $len = strlen($str)-1;
+ $randstr = '';
+ for ($i=0;$i<$length;$i++) {
+ $num=mt_rand(0,$len);
+ $randstr .= $str[$num];
+ }
+ return $randstr;
+ }
+}
+
+$xx = new Producer();
+$xx->init();
diff --git a/php/composer.json b/php/composer.json
new file mode 100644
index 0000000..3c4904b
--- /dev/null
+++ b/php/composer.json
@@ -0,0 +1,13 @@
+{
+ "require":{
+ "google/protobuf": "^3.3",
+ "grpc/grpc": "^1.42",
+ "hanson/foundation-sdk": "^4.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "GPBMetadata\\": "grpc/GPBMetadata",
+ "Apache\\Rocketmq\\V2\\": "grpc/Apache/Rocketmq/V2"
+ }
+ }
+}
diff --git a/php/grpc/Apache/Rocketmq/V2/AckMessageEntry.php b/php/grpc/Apache/Rocketmq/V2/AckMessageEntry.php
new file mode 100644
index 0000000..2ed878d
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/AckMessageEntry.php
@@ -0,0 +1,85 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.AckMessageEntry</code>
+ */
+class AckMessageEntry extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>string message_id = 1;</code>
+ */
+ protected $message_id = '';
+ /**
+ * Generated from protobuf field <code>string receipt_handle = 2;</code>
+ */
+ protected $receipt_handle = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $message_id
+ * @type string $receipt_handle
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>string message_id = 1;</code>
+ * @return string
+ */
+ public function getMessageId()
+ {
+ return $this->message_id;
+ }
+
+ /**
+ * Generated from protobuf field <code>string message_id = 1;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setMessageId($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->message_id = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>string receipt_handle = 2;</code>
+ * @return string
+ */
+ public function getReceiptHandle()
+ {
+ return $this->receipt_handle;
+ }
+
+ /**
+ * Generated from protobuf field <code>string receipt_handle = 2;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setReceiptHandle($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->receipt_handle = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/AckMessageRequest.php b/php/grpc/Apache/Rocketmq/V2/AckMessageRequest.php
new file mode 100644
index 0000000..8468665
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/AckMessageRequest.php
@@ -0,0 +1,132 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.AckMessageRequest</code>
+ */
+class AckMessageRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource group = 1;</code>
+ */
+ protected $group = null;
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 2;</code>
+ */
+ protected $topic = null;
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.AckMessageEntry entries = 3;</code>
+ */
+ private $entries;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Resource $group
+ * @type \Apache\Rocketmq\V2\Resource $topic
+ * @type array<\Apache\Rocketmq\V2\AckMessageEntry>|\Google\Protobuf\Internal\RepeatedField $entries
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource group = 1;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getGroup()
+ {
+ return $this->group;
+ }
+
+ public function hasGroup()
+ {
+ return isset($this->group);
+ }
+
+ public function clearGroup()
+ {
+ unset($this->group);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource group = 1;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setGroup($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->group = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 2;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getTopic()
+ {
+ return $this->topic;
+ }
+
+ public function hasTopic()
+ {
+ return isset($this->topic);
+ }
+
+ public function clearTopic()
+ {
+ unset($this->topic);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 2;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setTopic($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->topic = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.AckMessageEntry entries = 3;</code>
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getEntries()
+ {
+ return $this->entries;
+ }
+
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.AckMessageEntry entries = 3;</code>
+ * @param array<\Apache\Rocketmq\V2\AckMessageEntry>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setEntries($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Apache\Rocketmq\V2\AckMessageEntry::class);
+ $this->entries = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/AckMessageResponse.php b/php/grpc/Apache/Rocketmq/V2/AckMessageResponse.php
new file mode 100644
index 0000000..e233c7c
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/AckMessageResponse.php
@@ -0,0 +1,106 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.AckMessageResponse</code>
+ */
+class AckMessageResponse extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * RPC tier status, which is used to represent RPC-level errors including
+ * authentication, authorization, throttling and other general failures.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ */
+ protected $status = null;
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.AckMessageResultEntry entries = 2;</code>
+ */
+ private $entries;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Status $status
+ * RPC tier status, which is used to represent RPC-level errors including
+ * authentication, authorization, throttling and other general failures.
+ * @type array<\Apache\Rocketmq\V2\AckMessageResultEntry>|\Google\Protobuf\Internal\RepeatedField $entries
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * RPC tier status, which is used to represent RPC-level errors including
+ * authentication, authorization, throttling and other general failures.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @return \Apache\Rocketmq\V2\Status|null
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+
+ public function hasStatus()
+ {
+ return isset($this->status);
+ }
+
+ public function clearStatus()
+ {
+ unset($this->status);
+ }
+
+ /**
+ * RPC tier status, which is used to represent RPC-level errors including
+ * authentication, authorization, throttling and other general failures.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @param \Apache\Rocketmq\V2\Status $var
+ * @return $this
+ */
+ public function setStatus($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Status::class);
+ $this->status = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.AckMessageResultEntry entries = 2;</code>
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getEntries()
+ {
+ return $this->entries;
+ }
+
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.AckMessageResultEntry entries = 2;</code>
+ * @param array<\Apache\Rocketmq\V2\AckMessageResultEntry>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setEntries($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Apache\Rocketmq\V2\AckMessageResultEntry::class);
+ $this->entries = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/AckMessageResultEntry.php b/php/grpc/Apache/Rocketmq/V2/AckMessageResultEntry.php
new file mode 100644
index 0000000..8d6a8ab
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/AckMessageResultEntry.php
@@ -0,0 +1,137 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.AckMessageResultEntry</code>
+ */
+class AckMessageResultEntry extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>string message_id = 1;</code>
+ */
+ protected $message_id = '';
+ /**
+ * Generated from protobuf field <code>string receipt_handle = 2;</code>
+ */
+ protected $receipt_handle = '';
+ /**
+ * Acknowledge result may be acquired through inspecting
+ * `status.code`; In case acknowledgement failed, `status.message`
+ * is the explanation of the failure.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 3;</code>
+ */
+ protected $status = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $message_id
+ * @type string $receipt_handle
+ * @type \Apache\Rocketmq\V2\Status $status
+ * Acknowledge result may be acquired through inspecting
+ * `status.code`; In case acknowledgement failed, `status.message`
+ * is the explanation of the failure.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>string message_id = 1;</code>
+ * @return string
+ */
+ public function getMessageId()
+ {
+ return $this->message_id;
+ }
+
+ /**
+ * Generated from protobuf field <code>string message_id = 1;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setMessageId($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->message_id = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>string receipt_handle = 2;</code>
+ * @return string
+ */
+ public function getReceiptHandle()
+ {
+ return $this->receipt_handle;
+ }
+
+ /**
+ * Generated from protobuf field <code>string receipt_handle = 2;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setReceiptHandle($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->receipt_handle = $var;
+
+ return $this;
+ }
+
+ /**
+ * Acknowledge result may be acquired through inspecting
+ * `status.code`; In case acknowledgement failed, `status.message`
+ * is the explanation of the failure.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 3;</code>
+ * @return \Apache\Rocketmq\V2\Status|null
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+
+ public function hasStatus()
+ {
+ return isset($this->status);
+ }
+
+ public function clearStatus()
+ {
+ unset($this->status);
+ }
+
+ /**
+ * Acknowledge result may be acquired through inspecting
+ * `status.code`; In case acknowledgement failed, `status.message`
+ * is the explanation of the failure.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 3;</code>
+ * @param \Apache\Rocketmq\V2\Status $var
+ * @return $this
+ */
+ public function setStatus($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Status::class);
+ $this->status = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/Address.php b/php/grpc/Apache/Rocketmq/V2/Address.php
new file mode 100644
index 0000000..1c0851d
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/Address.php
@@ -0,0 +1,85 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.Address</code>
+ */
+class Address extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>string host = 1;</code>
+ */
+ protected $host = '';
+ /**
+ * Generated from protobuf field <code>int32 port = 2;</code>
+ */
+ protected $port = 0;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $host
+ * @type int $port
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Definition::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>string host = 1;</code>
+ * @return string
+ */
+ public function getHost()
+ {
+ return $this->host;
+ }
+
+ /**
+ * Generated from protobuf field <code>string host = 1;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setHost($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->host = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>int32 port = 2;</code>
+ * @return int
+ */
+ public function getPort()
+ {
+ return $this->port;
+ }
+
+ /**
+ * Generated from protobuf field <code>int32 port = 2;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setPort($var)
+ {
+ GPBUtil::checkInt32($var);
+ $this->port = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/AddressScheme.php b/php/grpc/Apache/Rocketmq/V2/AddressScheme.php
new file mode 100644
index 0000000..58b3cd3
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/AddressScheme.php
@@ -0,0 +1,58 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use UnexpectedValueException;
+
+/**
+ * Protobuf type <code>apache.rocketmq.v2.AddressScheme</code>
+ */
+class AddressScheme
+{
+ /**
+ * Generated from protobuf enum <code>ADDRESS_SCHEME_UNSPECIFIED = 0;</code>
+ */
+ const ADDRESS_SCHEME_UNSPECIFIED = 0;
+ /**
+ * Generated from protobuf enum <code>IPv4 = 1;</code>
+ */
+ const IPv4 = 1;
+ /**
+ * Generated from protobuf enum <code>IPv6 = 2;</code>
+ */
+ const IPv6 = 2;
+ /**
+ * Generated from protobuf enum <code>DOMAIN_NAME = 3;</code>
+ */
+ const DOMAIN_NAME = 3;
+
+ private static $valueToName = [
+ self::ADDRESS_SCHEME_UNSPECIFIED => 'ADDRESS_SCHEME_UNSPECIFIED',
+ self::IPv4 => 'IPv4',
+ self::IPv6 => 'IPv6',
+ self::DOMAIN_NAME => 'DOMAIN_NAME',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/AdminClient.php b/php/grpc/Apache/Rocketmq/V2/AdminClient.php
new file mode 100644
index 0000000..88dfeea
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/AdminClient.php
@@ -0,0 +1,49 @@
+<?php
+// GENERATED CODE -- DO NOT EDIT!
+
+// Original file comments:
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+namespace Apache\Rocketmq\V2;
+
+/**
+ */
+class AdminClient extends \Grpc\BaseStub {
+
+ /**
+ * @param string $hostname hostname
+ * @param array $opts channel options
+ * @param \Grpc\Channel $channel (optional) re-use channel object
+ */
+ public function __construct($hostname, $opts, $channel = null) {
+ parent::__construct($hostname, $opts, $channel);
+ }
+
+ /**
+ * @param \Apache\Rocketmq\V2\ChangeLogLevelRequest $argument input argument
+ * @param array $metadata metadata
+ * @param array $options call options
+ * @return \Grpc\UnaryCall
+ */
+ public function ChangeLogLevel(\Apache\Rocketmq\V2\ChangeLogLevelRequest $argument,
+ $metadata = [], $options = []) {
+ return $this->_simpleRequest('/apache.rocketmq.v2.Admin/ChangeLogLevel',
+ $argument,
+ ['\Apache\Rocketmq\V2\ChangeLogLevelResponse', 'decode'],
+ $metadata, $options);
+ }
+
+}
diff --git a/php/grpc/Apache/Rocketmq/V2/Assignment.php b/php/grpc/Apache/Rocketmq/V2/Assignment.php
new file mode 100644
index 0000000..4b7fa46
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/Assignment.php
@@ -0,0 +1,68 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.Assignment</code>
+ */
+class Assignment extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.MessageQueue message_queue = 1;</code>
+ */
+ protected $message_queue = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\MessageQueue $message_queue
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Definition::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.MessageQueue message_queue = 1;</code>
+ * @return \Apache\Rocketmq\V2\MessageQueue|null
+ */
+ public function getMessageQueue()
+ {
+ return $this->message_queue;
+ }
+
+ public function hasMessageQueue()
+ {
+ return isset($this->message_queue);
+ }
+
+ public function clearMessageQueue()
+ {
+ unset($this->message_queue);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.MessageQueue message_queue = 1;</code>
+ * @param \Apache\Rocketmq\V2\MessageQueue $var
+ * @return $this
+ */
+ public function setMessageQueue($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\MessageQueue::class);
+ $this->message_queue = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/Broker.php b/php/grpc/Apache/Rocketmq/V2/Broker.php
new file mode 100644
index 0000000..8e53116
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/Broker.php
@@ -0,0 +1,159 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.Broker</code>
+ */
+class Broker extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Name of the broker
+ *
+ * Generated from protobuf field <code>string name = 1;</code>
+ */
+ protected $name = '';
+ /**
+ * Broker index. Canonically, index = 0 implies that the broker is playing
+ * leader role while brokers with index > 0 play follower role.
+ *
+ * Generated from protobuf field <code>int32 id = 2;</code>
+ */
+ protected $id = 0;
+ /**
+ * Address of the broker, complying with the following scheme
+ * 1. dns:[//authority/]host[:port]
+ * 2. ipv4:address[:port][,address[:port],...] – IPv4 addresses
+ * 3. ipv6:address[:port][,address[:port],...] – IPv6 addresses
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+ */
+ protected $endpoints = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $name
+ * Name of the broker
+ * @type int $id
+ * Broker index. Canonically, index = 0 implies that the broker is playing
+ * leader role while brokers with index > 0 play follower role.
+ * @type \Apache\Rocketmq\V2\Endpoints $endpoints
+ * Address of the broker, complying with the following scheme
+ * 1. dns:[//authority/]host[:port]
+ * 2. ipv4:address[:port][,address[:port],...] – IPv4 addresses
+ * 3. ipv6:address[:port][,address[:port],...] – IPv6 addresses
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Definition::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Name of the broker
+ *
+ * Generated from protobuf field <code>string name = 1;</code>
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Name of the broker
+ *
+ * Generated from protobuf field <code>string name = 1;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setName($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->name = $var;
+
+ return $this;
+ }
+
+ /**
+ * Broker index. Canonically, index = 0 implies that the broker is playing
+ * leader role while brokers with index > 0 play follower role.
+ *
+ * Generated from protobuf field <code>int32 id = 2;</code>
+ * @return int
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+
+ /**
+ * Broker index. Canonically, index = 0 implies that the broker is playing
+ * leader role while brokers with index > 0 play follower role.
+ *
+ * Generated from protobuf field <code>int32 id = 2;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setId($var)
+ {
+ GPBUtil::checkInt32($var);
+ $this->id = $var;
+
+ return $this;
+ }
+
+ /**
+ * Address of the broker, complying with the following scheme
+ * 1. dns:[//authority/]host[:port]
+ * 2. ipv4:address[:port][,address[:port],...] – IPv4 addresses
+ * 3. ipv6:address[:port][,address[:port],...] – IPv6 addresses
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+ * @return \Apache\Rocketmq\V2\Endpoints|null
+ */
+ public function getEndpoints()
+ {
+ return $this->endpoints;
+ }
+
+ public function hasEndpoints()
+ {
+ return isset($this->endpoints);
+ }
+
+ public function clearEndpoints()
+ {
+ unset($this->endpoints);
+ }
+
+ /**
+ * Address of the broker, complying with the following scheme
+ * 1. dns:[//authority/]host[:port]
+ * 2. ipv4:address[:port][,address[:port],...] – IPv4 addresses
+ * 3. ipv6:address[:port][,address[:port],...] – IPv6 addresses
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+ * @param \Apache\Rocketmq\V2\Endpoints $var
+ * @return $this
+ */
+ public function setEndpoints($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Endpoints::class);
+ $this->endpoints = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/ChangeInvisibleDurationRequest.php b/php/grpc/Apache/Rocketmq/V2/ChangeInvisibleDurationRequest.php
new file mode 100644
index 0000000..828df85
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/ChangeInvisibleDurationRequest.php
@@ -0,0 +1,217 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.ChangeInvisibleDurationRequest</code>
+ */
+class ChangeInvisibleDurationRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource group = 1;</code>
+ */
+ protected $group = null;
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 2;</code>
+ */
+ protected $topic = null;
+ /**
+ * Unique receipt handle to identify message to change
+ *
+ * Generated from protobuf field <code>string receipt_handle = 3;</code>
+ */
+ protected $receipt_handle = '';
+ /**
+ * New invisible duration
+ *
+ * Generated from protobuf field <code>.google.protobuf.Duration invisible_duration = 4;</code>
+ */
+ protected $invisible_duration = null;
+ /**
+ * For message tracing
+ *
+ * Generated from protobuf field <code>string message_id = 5;</code>
+ */
+ protected $message_id = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Resource $group
+ * @type \Apache\Rocketmq\V2\Resource $topic
+ * @type string $receipt_handle
+ * Unique receipt handle to identify message to change
+ * @type \Google\Protobuf\Duration $invisible_duration
+ * New invisible duration
+ * @type string $message_id
+ * For message tracing
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource group = 1;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getGroup()
+ {
+ return $this->group;
+ }
+
+ public function hasGroup()
+ {
+ return isset($this->group);
+ }
+
+ public function clearGroup()
+ {
+ unset($this->group);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource group = 1;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setGroup($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->group = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 2;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getTopic()
+ {
+ return $this->topic;
+ }
+
+ public function hasTopic()
+ {
+ return isset($this->topic);
+ }
+
+ public function clearTopic()
+ {
+ unset($this->topic);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 2;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setTopic($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->topic = $var;
+
+ return $this;
+ }
+
+ /**
+ * Unique receipt handle to identify message to change
+ *
+ * Generated from protobuf field <code>string receipt_handle = 3;</code>
+ * @return string
+ */
+ public function getReceiptHandle()
+ {
+ return $this->receipt_handle;
+ }
+
+ /**
+ * Unique receipt handle to identify message to change
+ *
+ * Generated from protobuf field <code>string receipt_handle = 3;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setReceiptHandle($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->receipt_handle = $var;
+
+ return $this;
+ }
+
+ /**
+ * New invisible duration
+ *
+ * Generated from protobuf field <code>.google.protobuf.Duration invisible_duration = 4;</code>
+ * @return \Google\Protobuf\Duration|null
+ */
+ public function getInvisibleDuration()
+ {
+ return $this->invisible_duration;
+ }
+
+ public function hasInvisibleDuration()
+ {
+ return isset($this->invisible_duration);
+ }
+
+ public function clearInvisibleDuration()
+ {
+ unset($this->invisible_duration);
+ }
+
+ /**
+ * New invisible duration
+ *
+ * Generated from protobuf field <code>.google.protobuf.Duration invisible_duration = 4;</code>
+ * @param \Google\Protobuf\Duration $var
+ * @return $this
+ */
+ public function setInvisibleDuration($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Duration::class);
+ $this->invisible_duration = $var;
+
+ return $this;
+ }
+
+ /**
+ * For message tracing
+ *
+ * Generated from protobuf field <code>string message_id = 5;</code>
+ * @return string
+ */
+ public function getMessageId()
+ {
+ return $this->message_id;
+ }
+
+ /**
+ * For message tracing
+ *
+ * Generated from protobuf field <code>string message_id = 5;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setMessageId($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->message_id = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/ChangeInvisibleDurationResponse.php b/php/grpc/Apache/Rocketmq/V2/ChangeInvisibleDurationResponse.php
new file mode 100644
index 0000000..918637b
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/ChangeInvisibleDurationResponse.php
@@ -0,0 +1,102 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.ChangeInvisibleDurationResponse</code>
+ */
+class ChangeInvisibleDurationResponse extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ */
+ protected $status = null;
+ /**
+ * Server may generate a new receipt handle for the message.
+ *
+ * Generated from protobuf field <code>string receipt_handle = 2;</code>
+ */
+ protected $receipt_handle = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Status $status
+ * @type string $receipt_handle
+ * Server may generate a new receipt handle for the message.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @return \Apache\Rocketmq\V2\Status|null
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+
+ public function hasStatus()
+ {
+ return isset($this->status);
+ }
+
+ public function clearStatus()
+ {
+ unset($this->status);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @param \Apache\Rocketmq\V2\Status $var
+ * @return $this
+ */
+ public function setStatus($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Status::class);
+ $this->status = $var;
+
+ return $this;
+ }
+
+ /**
+ * Server may generate a new receipt handle for the message.
+ *
+ * Generated from protobuf field <code>string receipt_handle = 2;</code>
+ * @return string
+ */
+ public function getReceiptHandle()
+ {
+ return $this->receipt_handle;
+ }
+
+ /**
+ * Server may generate a new receipt handle for the message.
+ *
+ * Generated from protobuf field <code>string receipt_handle = 2;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setReceiptHandle($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->receipt_handle = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/ChangeLogLevelRequest.php b/php/grpc/Apache/Rocketmq/V2/ChangeLogLevelRequest.php
new file mode 100644
index 0000000..ee24139
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/ChangeLogLevelRequest.php
@@ -0,0 +1,58 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/admin.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.ChangeLogLevelRequest</code>
+ */
+class ChangeLogLevelRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.ChangeLogLevelRequest.Level level = 1;</code>
+ */
+ protected $level = 0;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type int $level
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Admin::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.ChangeLogLevelRequest.Level level = 1;</code>
+ * @return int
+ */
+ public function getLevel()
+ {
+ return $this->level;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.ChangeLogLevelRequest.Level level = 1;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setLevel($var)
+ {
+ GPBUtil::checkEnum($var, \Apache\Rocketmq\V2\ChangeLogLevelRequest\Level::class);
+ $this->level = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/ChangeLogLevelRequest/Level.php b/php/grpc/Apache/Rocketmq/V2/ChangeLogLevelRequest/Level.php
new file mode 100644
index 0000000..4510687
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/ChangeLogLevelRequest/Level.php
@@ -0,0 +1,66 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/admin.proto
+
+namespace Apache\Rocketmq\V2\ChangeLogLevelRequest;
+
+use UnexpectedValueException;
+
+/**
+ * Protobuf type <code>apache.rocketmq.v2.ChangeLogLevelRequest.Level</code>
+ */
+class Level
+{
+ /**
+ * Generated from protobuf enum <code>TRACE = 0;</code>
+ */
+ const TRACE = 0;
+ /**
+ * Generated from protobuf enum <code>DEBUG = 1;</code>
+ */
+ const DEBUG = 1;
+ /**
+ * Generated from protobuf enum <code>INFO = 2;</code>
+ */
+ const INFO = 2;
+ /**
+ * Generated from protobuf enum <code>WARN = 3;</code>
+ */
+ const WARN = 3;
+ /**
+ * Generated from protobuf enum <code>ERROR = 4;</code>
+ */
+ const ERROR = 4;
+
+ private static $valueToName = [
+ self::TRACE => 'TRACE',
+ self::DEBUG => 'DEBUG',
+ self::INFO => 'INFO',
+ self::WARN => 'WARN',
+ self::ERROR => 'ERROR',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(Level::class, \Apache\Rocketmq\V2\ChangeLogLevelRequest_Level::class);
+
diff --git a/php/grpc/Apache/Rocketmq/V2/ChangeLogLevelRequest_Level.php b/php/grpc/Apache/Rocketmq/V2/ChangeLogLevelRequest_Level.php
new file mode 100644
index 0000000..002cff2
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/ChangeLogLevelRequest_Level.php
@@ -0,0 +1,16 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/admin.proto
+
+namespace Apache\Rocketmq\V2;
+
+if (false) {
+ /**
+ * This class is deprecated. Use Apache\Rocketmq\V2\ChangeLogLevelRequest\Level instead.
+ * @deprecated
+ */
+ class ChangeLogLevelRequest_Level {}
+}
+class_exists(ChangeLogLevelRequest\Level::class);
+@trigger_error('Apache\Rocketmq\V2\ChangeLogLevelRequest_Level is deprecated and will be removed in the next major release. Use Apache\Rocketmq\V2\ChangeLogLevelRequest\Level instead', E_USER_DEPRECATED);
+
diff --git a/php/grpc/Apache/Rocketmq/V2/ChangeLogLevelResponse.php b/php/grpc/Apache/Rocketmq/V2/ChangeLogLevelResponse.php
new file mode 100644
index 0000000..cea365d
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/ChangeLogLevelResponse.php
@@ -0,0 +1,58 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/admin.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.ChangeLogLevelResponse</code>
+ */
+class ChangeLogLevelResponse extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>string remark = 1;</code>
+ */
+ protected $remark = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $remark
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Admin::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>string remark = 1;</code>
+ * @return string
+ */
+ public function getRemark()
+ {
+ return $this->remark;
+ }
+
+ /**
+ * Generated from protobuf field <code>string remark = 1;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setRemark($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->remark = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/ClientType.php b/php/grpc/Apache/Rocketmq/V2/ClientType.php
new file mode 100644
index 0000000..8cd32f8
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/ClientType.php
@@ -0,0 +1,58 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use UnexpectedValueException;
+
+/**
+ * Protobuf type <code>apache.rocketmq.v2.ClientType</code>
+ */
+class ClientType
+{
+ /**
+ * Generated from protobuf enum <code>CLIENT_TYPE_UNSPECIFIED = 0;</code>
+ */
+ const CLIENT_TYPE_UNSPECIFIED = 0;
+ /**
+ * Generated from protobuf enum <code>PRODUCER = 1;</code>
+ */
+ const PRODUCER = 1;
+ /**
+ * Generated from protobuf enum <code>PUSH_CONSUMER = 2;</code>
+ */
+ const PUSH_CONSUMER = 2;
+ /**
+ * Generated from protobuf enum <code>SIMPLE_CONSUMER = 3;</code>
+ */
+ const SIMPLE_CONSUMER = 3;
+
+ private static $valueToName = [
+ self::CLIENT_TYPE_UNSPECIFIED => 'CLIENT_TYPE_UNSPECIFIED',
+ self::PRODUCER => 'PRODUCER',
+ self::PUSH_CONSUMER => 'PUSH_CONSUMER',
+ self::SIMPLE_CONSUMER => 'SIMPLE_CONSUMER',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/Code.php b/php/grpc/Apache/Rocketmq/V2/Code.php
new file mode 100644
index 0000000..473193a
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/Code.php
@@ -0,0 +1,375 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use UnexpectedValueException;
+
+/**
+ * Protobuf type <code>apache.rocketmq.v2.Code</code>
+ */
+class Code
+{
+ /**
+ * Generated from protobuf enum <code>CODE_UNSPECIFIED = 0;</code>
+ */
+ const CODE_UNSPECIFIED = 0;
+ /**
+ * Generic code for success.
+ *
+ * Generated from protobuf enum <code>OK = 20000;</code>
+ */
+ const OK = 20000;
+ /**
+ * Generic code for multiple return results.
+ *
+ * Generated from protobuf enum <code>MULTIPLE_RESULTS = 30000;</code>
+ */
+ const MULTIPLE_RESULTS = 30000;
+ /**
+ * Generic code for bad request, indicating that required fields or headers are missing.
+ *
+ * Generated from protobuf enum <code>BAD_REQUEST = 40000;</code>
+ */
+ const BAD_REQUEST = 40000;
+ /**
+ * Format of access point is illegal.
+ *
+ * Generated from protobuf enum <code>ILLEGAL_ACCESS_POINT = 40001;</code>
+ */
+ const ILLEGAL_ACCESS_POINT = 40001;
+ /**
+ * Format of topic is illegal.
+ *
+ * Generated from protobuf enum <code>ILLEGAL_TOPIC = 40002;</code>
+ */
+ const ILLEGAL_TOPIC = 40002;
+ /**
+ * Format of consumer group is illegal.
+ *
+ * Generated from protobuf enum <code>ILLEGAL_CONSUMER_GROUP = 40003;</code>
+ */
+ const ILLEGAL_CONSUMER_GROUP = 40003;
+ /**
+ * Format of message tag is illegal.
+ *
+ * Generated from protobuf enum <code>ILLEGAL_MESSAGE_TAG = 40004;</code>
+ */
+ const ILLEGAL_MESSAGE_TAG = 40004;
+ /**
+ * Format of message key is illegal.
+ *
+ * Generated from protobuf enum <code>ILLEGAL_MESSAGE_KEY = 40005;</code>
+ */
+ const ILLEGAL_MESSAGE_KEY = 40005;
+ /**
+ * Format of message group is illegal.
+ *
+ * Generated from protobuf enum <code>ILLEGAL_MESSAGE_GROUP = 40006;</code>
+ */
+ const ILLEGAL_MESSAGE_GROUP = 40006;
+ /**
+ * Format of message property key is illegal.
+ *
+ * Generated from protobuf enum <code>ILLEGAL_MESSAGE_PROPERTY_KEY = 40007;</code>
+ */
+ const ILLEGAL_MESSAGE_PROPERTY_KEY = 40007;
+ /**
+ * Transaction id is invalid.
+ *
+ * Generated from protobuf enum <code>INVALID_TRANSACTION_ID = 40008;</code>
+ */
+ const INVALID_TRANSACTION_ID = 40008;
+ /**
+ * Format of message id is illegal.
+ *
+ * Generated from protobuf enum <code>ILLEGAL_MESSAGE_ID = 40009;</code>
+ */
+ const ILLEGAL_MESSAGE_ID = 40009;
+ /**
+ * Format of filter expression is illegal.
+ *
+ * Generated from protobuf enum <code>ILLEGAL_FILTER_EXPRESSION = 40010;</code>
+ */
+ const ILLEGAL_FILTER_EXPRESSION = 40010;
+ /**
+ * The invisible time of request is invalid.
+ *
+ * Generated from protobuf enum <code>ILLEGAL_INVISIBLE_TIME = 40011;</code>
+ */
+ const ILLEGAL_INVISIBLE_TIME = 40011;
+ /**
+ * The delivery timestamp of message is invalid.
+ *
+ * Generated from protobuf enum <code>ILLEGAL_DELIVERY_TIME = 40012;</code>
+ */
+ const ILLEGAL_DELIVERY_TIME = 40012;
+ /**
+ * Receipt handle of message is invalid.
+ *
+ * Generated from protobuf enum <code>INVALID_RECEIPT_HANDLE = 40013;</code>
+ */
+ const INVALID_RECEIPT_HANDLE = 40013;
+ /**
+ * Message property conflicts with its type.
+ *
+ * Generated from protobuf enum <code>MESSAGE_PROPERTY_CONFLICT_WITH_TYPE = 40014;</code>
+ */
+ const MESSAGE_PROPERTY_CONFLICT_WITH_TYPE = 40014;
+ /**
+ * Client type could not be recognized.
+ *
+ * Generated from protobuf enum <code>UNRECOGNIZED_CLIENT_TYPE = 40015;</code>
+ */
+ const UNRECOGNIZED_CLIENT_TYPE = 40015;
+ /**
+ * Message is corrupted.
+ *
+ * Generated from protobuf enum <code>MESSAGE_CORRUPTED = 40016;</code>
+ */
+ const MESSAGE_CORRUPTED = 40016;
+ /**
+ * Request is rejected due to missing of x-mq-client-id header.
+ *
+ * Generated from protobuf enum <code>CLIENT_ID_REQUIRED = 40017;</code>
+ */
+ const CLIENT_ID_REQUIRED = 40017;
+ /**
+ * Generic code indicates that the client request lacks valid authentication
+ * credentials for the requested resource.
+ *
+ * Generated from protobuf enum <code>UNAUTHORIZED = 40100;</code>
+ */
+ const UNAUTHORIZED = 40100;
+ /**
+ * Generic code indicates that the account is suspended due to overdue of payment.
+ *
+ * Generated from protobuf enum <code>PAYMENT_REQUIRED = 40200;</code>
+ */
+ const PAYMENT_REQUIRED = 40200;
+ /**
+ * Generic code for the case that user does not have the permission to operate.
+ *
+ * Generated from protobuf enum <code>FORBIDDEN = 40300;</code>
+ */
+ const FORBIDDEN = 40300;
+ /**
+ * Generic code for resource not found.
+ *
+ * Generated from protobuf enum <code>NOT_FOUND = 40400;</code>
+ */
+ const NOT_FOUND = 40400;
+ /**
+ * Message not found from server.
+ *
+ * Generated from protobuf enum <code>MESSAGE_NOT_FOUND = 40401;</code>
+ */
+ const MESSAGE_NOT_FOUND = 40401;
+ /**
+ * Topic resource does not exist.
+ *
+ * Generated from protobuf enum <code>TOPIC_NOT_FOUND = 40402;</code>
+ */
+ const TOPIC_NOT_FOUND = 40402;
+ /**
+ * Consumer group resource does not exist.
+ *
+ * Generated from protobuf enum <code>CONSUMER_GROUP_NOT_FOUND = 40403;</code>
+ */
+ const CONSUMER_GROUP_NOT_FOUND = 40403;
+ /**
+ * Generic code representing client side timeout when connecting to, reading data from, or write data to server.
+ *
+ * Generated from protobuf enum <code>REQUEST_TIMEOUT = 40800;</code>
+ */
+ const REQUEST_TIMEOUT = 40800;
+ /**
+ * Generic code represents that the request entity is larger than limits defined by server.
+ *
+ * Generated from protobuf enum <code>PAYLOAD_TOO_LARGE = 41300;</code>
+ */
+ const PAYLOAD_TOO_LARGE = 41300;
+ /**
+ * Message body size exceeds the threshold.
+ *
+ * Generated from protobuf enum <code>MESSAGE_BODY_TOO_LARGE = 41301;</code>
+ */
+ const MESSAGE_BODY_TOO_LARGE = 41301;
+ /**
+ * Generic code for use cases where pre-conditions are not met.
+ * For example, if a producer instance is used to publish messages without prior start() invocation,
+ * this error code will be raised.
+ *
+ * Generated from protobuf enum <code>PRECONDITION_FAILED = 42800;</code>
+ */
+ const PRECONDITION_FAILED = 42800;
+ /**
+ * Generic code indicates that too many requests are made in short period of duration.
+ * Requests are throttled.
+ *
+ * Generated from protobuf enum <code>TOO_MANY_REQUESTS = 42900;</code>
+ */
+ const TOO_MANY_REQUESTS = 42900;
+ /**
+ * Generic code for the case that the server is unwilling to process the request because its header fields are too large.
+ * The request may be resubmitted after reducing the size of the request header fields.
+ *
+ * Generated from protobuf enum <code>REQUEST_HEADER_FIELDS_TOO_LARGE = 43100;</code>
+ */
+ const REQUEST_HEADER_FIELDS_TOO_LARGE = 43100;
+ /**
+ * Message properties total size exceeds the threshold.
+ *
+ * Generated from protobuf enum <code>MESSAGE_PROPERTIES_TOO_LARGE = 43101;</code>
+ */
+ const MESSAGE_PROPERTIES_TOO_LARGE = 43101;
+ /**
+ * Generic code indicates that server/client encountered an unexpected
+ * condition that prevented it from fulfilling the request.
+ *
+ * Generated from protobuf enum <code>INTERNAL_ERROR = 50000;</code>
+ */
+ const INTERNAL_ERROR = 50000;
+ /**
+ * Code indicates that the server encountered an unexpected condition
+ * that prevented it from fulfilling the request.
+ * This error response is a generic "catch-all" response.
+ * Usually, this indicates the server cannot find a better alternative
+ * error code to response. Sometimes, server administrators log error
+ * responses like the 500 status code with more details about the request
+ * to prevent the error from happening again in the future.
+ * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
+ *
+ * Generated from protobuf enum <code>INTERNAL_SERVER_ERROR = 50001;</code>
+ */
+ const INTERNAL_SERVER_ERROR = 50001;
+ /**
+ * The HA-mechanism is not working now.
+ *
+ * Generated from protobuf enum <code>HA_NOT_AVAILABLE = 50002;</code>
+ */
+ const HA_NOT_AVAILABLE = 50002;
+ /**
+ * Generic code means that the server or client does not support the
+ * functionality required to fulfill the request.
+ *
+ * Generated from protobuf enum <code>NOT_IMPLEMENTED = 50100;</code>
+ */
+ const NOT_IMPLEMENTED = 50100;
+ /**
+ * Generic code represents that the server, which acts as a gateway or proxy,
+ * does not get an satisfied response in time from its upstream servers.
+ * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504
+ *
+ * Generated from protobuf enum <code>PROXY_TIMEOUT = 50400;</code>
+ */
+ const PROXY_TIMEOUT = 50400;
+ /**
+ * Message persistence timeout.
+ *
+ * Generated from protobuf enum <code>MASTER_PERSISTENCE_TIMEOUT = 50401;</code>
+ */
+ const MASTER_PERSISTENCE_TIMEOUT = 50401;
+ /**
+ * Slave persistence timeout.
+ *
+ * Generated from protobuf enum <code>SLAVE_PERSISTENCE_TIMEOUT = 50402;</code>
+ */
+ const SLAVE_PERSISTENCE_TIMEOUT = 50402;
+ /**
+ * Generic code for unsupported operation.
+ *
+ * Generated from protobuf enum <code>UNSUPPORTED = 50500;</code>
+ */
+ const UNSUPPORTED = 50500;
+ /**
+ * Operation is not allowed in current version.
+ *
+ * Generated from protobuf enum <code>VERSION_UNSUPPORTED = 50501;</code>
+ */
+ const VERSION_UNSUPPORTED = 50501;
+ /**
+ * Not allowed to verify message. Chances are that you are verifying
+ * a FIFO message, as is violating FIFO semantics.
+ *
+ * Generated from protobuf enum <code>VERIFY_FIFO_MESSAGE_UNSUPPORTED = 50502;</code>
+ */
+ const VERIFY_FIFO_MESSAGE_UNSUPPORTED = 50502;
+ /**
+ * Generic code for failed message consumption.
+ *
+ * Generated from protobuf enum <code>FAILED_TO_CONSUME_MESSAGE = 60000;</code>
+ */
+ const FAILED_TO_CONSUME_MESSAGE = 60000;
+
+ private static $valueToName = [
+ self::CODE_UNSPECIFIED => 'CODE_UNSPECIFIED',
+ self::OK => 'OK',
+ self::MULTIPLE_RESULTS => 'MULTIPLE_RESULTS',
+ self::BAD_REQUEST => 'BAD_REQUEST',
+ self::ILLEGAL_ACCESS_POINT => 'ILLEGAL_ACCESS_POINT',
+ self::ILLEGAL_TOPIC => 'ILLEGAL_TOPIC',
+ self::ILLEGAL_CONSUMER_GROUP => 'ILLEGAL_CONSUMER_GROUP',
+ self::ILLEGAL_MESSAGE_TAG => 'ILLEGAL_MESSAGE_TAG',
+ self::ILLEGAL_MESSAGE_KEY => 'ILLEGAL_MESSAGE_KEY',
+ self::ILLEGAL_MESSAGE_GROUP => 'ILLEGAL_MESSAGE_GROUP',
+ self::ILLEGAL_MESSAGE_PROPERTY_KEY => 'ILLEGAL_MESSAGE_PROPERTY_KEY',
+ self::INVALID_TRANSACTION_ID => 'INVALID_TRANSACTION_ID',
+ self::ILLEGAL_MESSAGE_ID => 'ILLEGAL_MESSAGE_ID',
+ self::ILLEGAL_FILTER_EXPRESSION => 'ILLEGAL_FILTER_EXPRESSION',
+ self::ILLEGAL_INVISIBLE_TIME => 'ILLEGAL_INVISIBLE_TIME',
+ self::ILLEGAL_DELIVERY_TIME => 'ILLEGAL_DELIVERY_TIME',
+ self::INVALID_RECEIPT_HANDLE => 'INVALID_RECEIPT_HANDLE',
+ self::MESSAGE_PROPERTY_CONFLICT_WITH_TYPE => 'MESSAGE_PROPERTY_CONFLICT_WITH_TYPE',
+ self::UNRECOGNIZED_CLIENT_TYPE => 'UNRECOGNIZED_CLIENT_TYPE',
+ self::MESSAGE_CORRUPTED => 'MESSAGE_CORRUPTED',
+ self::CLIENT_ID_REQUIRED => 'CLIENT_ID_REQUIRED',
+ self::UNAUTHORIZED => 'UNAUTHORIZED',
+ self::PAYMENT_REQUIRED => 'PAYMENT_REQUIRED',
+ self::FORBIDDEN => 'FORBIDDEN',
+ self::NOT_FOUND => 'NOT_FOUND',
+ self::MESSAGE_NOT_FOUND => 'MESSAGE_NOT_FOUND',
+ self::TOPIC_NOT_FOUND => 'TOPIC_NOT_FOUND',
+ self::CONSUMER_GROUP_NOT_FOUND => 'CONSUMER_GROUP_NOT_FOUND',
+ self::REQUEST_TIMEOUT => 'REQUEST_TIMEOUT',
+ self::PAYLOAD_TOO_LARGE => 'PAYLOAD_TOO_LARGE',
+ self::MESSAGE_BODY_TOO_LARGE => 'MESSAGE_BODY_TOO_LARGE',
+ self::PRECONDITION_FAILED => 'PRECONDITION_FAILED',
+ self::TOO_MANY_REQUESTS => 'TOO_MANY_REQUESTS',
+ self::REQUEST_HEADER_FIELDS_TOO_LARGE => 'REQUEST_HEADER_FIELDS_TOO_LARGE',
+ self::MESSAGE_PROPERTIES_TOO_LARGE => 'MESSAGE_PROPERTIES_TOO_LARGE',
+ self::INTERNAL_ERROR => 'INTERNAL_ERROR',
+ self::INTERNAL_SERVER_ERROR => 'INTERNAL_SERVER_ERROR',
+ self::HA_NOT_AVAILABLE => 'HA_NOT_AVAILABLE',
+ self::NOT_IMPLEMENTED => 'NOT_IMPLEMENTED',
+ self::PROXY_TIMEOUT => 'PROXY_TIMEOUT',
+ self::MASTER_PERSISTENCE_TIMEOUT => 'MASTER_PERSISTENCE_TIMEOUT',
+ self::SLAVE_PERSISTENCE_TIMEOUT => 'SLAVE_PERSISTENCE_TIMEOUT',
+ self::UNSUPPORTED => 'UNSUPPORTED',
+ self::VERSION_UNSUPPORTED => 'VERSION_UNSUPPORTED',
+ self::VERIFY_FIFO_MESSAGE_UNSUPPORTED => 'VERIFY_FIFO_MESSAGE_UNSUPPORTED',
+ self::FAILED_TO_CONSUME_MESSAGE => 'FAILED_TO_CONSUME_MESSAGE',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/CustomizedBackoff.php b/php/grpc/Apache/Rocketmq/V2/CustomizedBackoff.php
new file mode 100644
index 0000000..44f3843
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/CustomizedBackoff.php
@@ -0,0 +1,69 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.CustomizedBackoff</code>
+ */
+class CustomizedBackoff extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * To support classic backoff strategy which is arbitrary defined by end users.
+ * Typical values are: `1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h`
+ *
+ * Generated from protobuf field <code>repeated .google.protobuf.Duration next = 1;</code>
+ */
+ private $next;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type array<\Google\Protobuf\Duration>|\Google\Protobuf\Internal\RepeatedField $next
+ * To support classic backoff strategy which is arbitrary defined by end users.
+ * Typical values are: `1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h`
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Definition::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * To support classic backoff strategy which is arbitrary defined by end users.
+ * Typical values are: `1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h`
+ *
+ * Generated from protobuf field <code>repeated .google.protobuf.Duration next = 1;</code>
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getNext()
+ {
+ return $this->next;
+ }
+
+ /**
+ * To support classic backoff strategy which is arbitrary defined by end users.
+ * Typical values are: `1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h`
+ *
+ * Generated from protobuf field <code>repeated .google.protobuf.Duration next = 1;</code>
+ * @param array<\Google\Protobuf\Duration>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setNext($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Duration::class);
+ $this->next = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/Digest.php b/php/grpc/Apache/Rocketmq/V2/Digest.php
new file mode 100644
index 0000000..8399083
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/Digest.php
@@ -0,0 +1,98 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * When publishing messages to or subscribing messages from brokers, clients
+ * shall include or validate digests of message body to ensure data integrity.
+ * For message publishing, when an invalid digest were detected, brokers need
+ * respond client with BAD_REQUEST.
+ * For messages subscription, when an invalid digest were detected, consumers
+ * need to handle this case according to message type:
+ * 1) Standard messages should be negatively acknowledged instantly, causing
+ * immediate re-delivery; 2) FIFO messages require special RPC, to re-fetch
+ * previously acquired messages batch;
+ * Message consumption model also affects how invalid digest are handled. When
+ * messages are consumed in broadcasting way,
+ * TODO: define semantics of invalid-digest-when-broadcasting.
+ *
+ * Generated from protobuf message <code>apache.rocketmq.v2.Digest</code>
+ */
+class Digest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.DigestType type = 1;</code>
+ */
+ protected $type = 0;
+ /**
+ * Generated from protobuf field <code>string checksum = 2;</code>
+ */
+ protected $checksum = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type int $type
+ * @type string $checksum
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Definition::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.DigestType type = 1;</code>
+ * @return int
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.DigestType type = 1;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setType($var)
+ {
+ GPBUtil::checkEnum($var, \Apache\Rocketmq\V2\DigestType::class);
+ $this->type = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>string checksum = 2;</code>
+ * @return string
+ */
+ public function getChecksum()
+ {
+ return $this->checksum;
+ }
+
+ /**
+ * Generated from protobuf field <code>string checksum = 2;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setChecksum($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->checksum = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/DigestType.php b/php/grpc/Apache/Rocketmq/V2/DigestType.php
new file mode 100644
index 0000000..344eae3
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/DigestType.php
@@ -0,0 +1,67 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use UnexpectedValueException;
+
+/**
+ * Protobuf type <code>apache.rocketmq.v2.DigestType</code>
+ */
+class DigestType
+{
+ /**
+ * Generated from protobuf enum <code>DIGEST_TYPE_UNSPECIFIED = 0;</code>
+ */
+ const DIGEST_TYPE_UNSPECIFIED = 0;
+ /**
+ * CRC algorithm achieves goal of detecting random data error with lowest
+ * computation overhead.
+ *
+ * Generated from protobuf enum <code>CRC32 = 1;</code>
+ */
+ const CRC32 = 1;
+ /**
+ * MD5 algorithm achieves good balance between collision rate and computation
+ * overhead.
+ *
+ * Generated from protobuf enum <code>MD5 = 2;</code>
+ */
+ const MD5 = 2;
+ /**
+ * SHA-family has substantially fewer collision with fair amount of
+ * computation.
+ *
+ * Generated from protobuf enum <code>SHA1 = 3;</code>
+ */
+ const SHA1 = 3;
+
+ private static $valueToName = [
+ self::DIGEST_TYPE_UNSPECIFIED => 'DIGEST_TYPE_UNSPECIFIED',
+ self::CRC32 => 'CRC32',
+ self::MD5 => 'MD5',
+ self::SHA1 => 'SHA1',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/Encoding.php b/php/grpc/Apache/Rocketmq/V2/Encoding.php
new file mode 100644
index 0000000..085cedc
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/Encoding.php
@@ -0,0 +1,53 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use UnexpectedValueException;
+
+/**
+ * Protobuf type <code>apache.rocketmq.v2.Encoding</code>
+ */
+class Encoding
+{
+ /**
+ * Generated from protobuf enum <code>ENCODING_UNSPECIFIED = 0;</code>
+ */
+ const ENCODING_UNSPECIFIED = 0;
+ /**
+ * Generated from protobuf enum <code>IDENTITY = 1;</code>
+ */
+ const IDENTITY = 1;
+ /**
+ * Generated from protobuf enum <code>GZIP = 2;</code>
+ */
+ const GZIP = 2;
+
+ private static $valueToName = [
+ self::ENCODING_UNSPECIFIED => 'ENCODING_UNSPECIFIED',
+ self::IDENTITY => 'IDENTITY',
+ self::GZIP => 'GZIP',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/EndTransactionRequest.php b/php/grpc/Apache/Rocketmq/V2/EndTransactionRequest.php
new file mode 100644
index 0000000..6c4cddd
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/EndTransactionRequest.php
@@ -0,0 +1,203 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.EndTransactionRequest</code>
+ */
+class EndTransactionRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ */
+ protected $topic = null;
+ /**
+ * Generated from protobuf field <code>string message_id = 2;</code>
+ */
+ protected $message_id = '';
+ /**
+ * Generated from protobuf field <code>string transaction_id = 3;</code>
+ */
+ protected $transaction_id = '';
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.TransactionResolution resolution = 4;</code>
+ */
+ protected $resolution = 0;
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.TransactionSource source = 5;</code>
+ */
+ protected $source = 0;
+ /**
+ * Generated from protobuf field <code>string trace_context = 6;</code>
+ */
+ protected $trace_context = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Resource $topic
+ * @type string $message_id
+ * @type string $transaction_id
+ * @type int $resolution
+ * @type int $source
+ * @type string $trace_context
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getTopic()
+ {
+ return $this->topic;
+ }
+
+ public function hasTopic()
+ {
+ return isset($this->topic);
+ }
+
+ public function clearTopic()
+ {
+ unset($this->topic);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setTopic($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->topic = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>string message_id = 2;</code>
+ * @return string
+ */
+ public function getMessageId()
+ {
+ return $this->message_id;
+ }
+
+ /**
+ * Generated from protobuf field <code>string message_id = 2;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setMessageId($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->message_id = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>string transaction_id = 3;</code>
+ * @return string
+ */
+ public function getTransactionId()
+ {
+ return $this->transaction_id;
+ }
+
+ /**
+ * Generated from protobuf field <code>string transaction_id = 3;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setTransactionId($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->transaction_id = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.TransactionResolution resolution = 4;</code>
+ * @return int
+ */
+ public function getResolution()
+ {
+ return $this->resolution;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.TransactionResolution resolution = 4;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setResolution($var)
+ {
+ GPBUtil::checkEnum($var, \Apache\Rocketmq\V2\TransactionResolution::class);
+ $this->resolution = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.TransactionSource source = 5;</code>
+ * @return int
+ */
+ public function getSource()
+ {
+ return $this->source;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.TransactionSource source = 5;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setSource($var)
+ {
+ GPBUtil::checkEnum($var, \Apache\Rocketmq\V2\TransactionSource::class);
+ $this->source = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>string trace_context = 6;</code>
+ * @return string
+ */
+ public function getTraceContext()
+ {
+ return $this->trace_context;
+ }
+
+ /**
+ * Generated from protobuf field <code>string trace_context = 6;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setTraceContext($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->trace_context = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/EndTransactionResponse.php b/php/grpc/Apache/Rocketmq/V2/EndTransactionResponse.php
new file mode 100644
index 0000000..01bf845
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/EndTransactionResponse.php
@@ -0,0 +1,68 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.EndTransactionResponse</code>
+ */
+class EndTransactionResponse extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ */
+ protected $status = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Status $status
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @return \Apache\Rocketmq\V2\Status|null
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+
+ public function hasStatus()
+ {
+ return isset($this->status);
+ }
+
+ public function clearStatus()
+ {
+ unset($this->status);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @param \Apache\Rocketmq\V2\Status $var
+ * @return $this
+ */
+ public function setStatus($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Status::class);
+ $this->status = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/Endpoints.php b/php/grpc/Apache/Rocketmq/V2/Endpoints.php
new file mode 100644
index 0000000..34ab71c
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/Endpoints.php
@@ -0,0 +1,85 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.Endpoints</code>
+ */
+class Endpoints extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.AddressScheme scheme = 1;</code>
+ */
+ protected $scheme = 0;
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.Address addresses = 2;</code>
+ */
+ private $addresses;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type int $scheme
+ * @type array<\Apache\Rocketmq\V2\Address>|\Google\Protobuf\Internal\RepeatedField $addresses
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Definition::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.AddressScheme scheme = 1;</code>
+ * @return int
+ */
+ public function getScheme()
+ {
+ return $this->scheme;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.AddressScheme scheme = 1;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setScheme($var)
+ {
+ GPBUtil::checkEnum($var, \Apache\Rocketmq\V2\AddressScheme::class);
+ $this->scheme = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.Address addresses = 2;</code>
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getAddresses()
+ {
+ return $this->addresses;
+ }
+
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.Address addresses = 2;</code>
+ * @param array<\Apache\Rocketmq\V2\Address>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setAddresses($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Apache\Rocketmq\V2\Address::class);
+ $this->addresses = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/ExponentialBackoff.php b/php/grpc/Apache/Rocketmq/V2/ExponentialBackoff.php
new file mode 100644
index 0000000..dcd8c87
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/ExponentialBackoff.php
@@ -0,0 +1,134 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * https://en.wikipedia.org/wiki/Exponential_backoff
+ *
+ * Generated from protobuf message <code>apache.rocketmq.v2.ExponentialBackoff</code>
+ */
+class ExponentialBackoff extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.google.protobuf.Duration initial = 1;</code>
+ */
+ protected $initial = null;
+ /**
+ * Generated from protobuf field <code>.google.protobuf.Duration max = 2;</code>
+ */
+ protected $max = null;
+ /**
+ * Generated from protobuf field <code>float multiplier = 3;</code>
+ */
+ protected $multiplier = 0.0;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Google\Protobuf\Duration $initial
+ * @type \Google\Protobuf\Duration $max
+ * @type float $multiplier
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Definition::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.google.protobuf.Duration initial = 1;</code>
+ * @return \Google\Protobuf\Duration|null
+ */
+ public function getInitial()
+ {
+ return $this->initial;
+ }
+
+ public function hasInitial()
+ {
+ return isset($this->initial);
+ }
+
+ public function clearInitial()
+ {
+ unset($this->initial);
+ }
+
+ /**
+ * Generated from protobuf field <code>.google.protobuf.Duration initial = 1;</code>
+ * @param \Google\Protobuf\Duration $var
+ * @return $this
+ */
+ public function setInitial($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Duration::class);
+ $this->initial = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.google.protobuf.Duration max = 2;</code>
+ * @return \Google\Protobuf\Duration|null
+ */
+ public function getMax()
+ {
+ return $this->max;
+ }
+
+ public function hasMax()
+ {
+ return isset($this->max);
+ }
+
+ public function clearMax()
+ {
+ unset($this->max);
+ }
+
+ /**
+ * Generated from protobuf field <code>.google.protobuf.Duration max = 2;</code>
+ * @param \Google\Protobuf\Duration $var
+ * @return $this
+ */
+ public function setMax($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Duration::class);
+ $this->max = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>float multiplier = 3;</code>
+ * @return float
+ */
+ public function getMultiplier()
+ {
+ return $this->multiplier;
+ }
+
+ /**
+ * Generated from protobuf field <code>float multiplier = 3;</code>
+ * @param float $var
+ * @return $this
+ */
+ public function setMultiplier($var)
+ {
+ GPBUtil::checkFloat($var);
+ $this->multiplier = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/FilterExpression.php b/php/grpc/Apache/Rocketmq/V2/FilterExpression.php
new file mode 100644
index 0000000..b90a60f
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/FilterExpression.php
@@ -0,0 +1,85 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.FilterExpression</code>
+ */
+class FilterExpression extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.FilterType type = 1;</code>
+ */
+ protected $type = 0;
+ /**
+ * Generated from protobuf field <code>string expression = 2;</code>
+ */
+ protected $expression = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type int $type
+ * @type string $expression
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Definition::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.FilterType type = 1;</code>
+ * @return int
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.FilterType type = 1;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setType($var)
+ {
+ GPBUtil::checkEnum($var, \Apache\Rocketmq\V2\FilterType::class);
+ $this->type = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>string expression = 2;</code>
+ * @return string
+ */
+ public function getExpression()
+ {
+ return $this->expression;
+ }
+
+ /**
+ * Generated from protobuf field <code>string expression = 2;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setExpression($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->expression = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/FilterType.php b/php/grpc/Apache/Rocketmq/V2/FilterType.php
new file mode 100644
index 0000000..ca2e395
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/FilterType.php
@@ -0,0 +1,53 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use UnexpectedValueException;
+
+/**
+ * Protobuf type <code>apache.rocketmq.v2.FilterType</code>
+ */
+class FilterType
+{
+ /**
+ * Generated from protobuf enum <code>FILTER_TYPE_UNSPECIFIED = 0;</code>
+ */
+ const FILTER_TYPE_UNSPECIFIED = 0;
+ /**
+ * Generated from protobuf enum <code>TAG = 1;</code>
+ */
+ const TAG = 1;
+ /**
+ * Generated from protobuf enum <code>SQL = 2;</code>
+ */
+ const SQL = 2;
+
+ private static $valueToName = [
+ self::FILTER_TYPE_UNSPECIFIED => 'FILTER_TYPE_UNSPECIFIED',
+ self::TAG => 'TAG',
+ self::SQL => 'SQL',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/ForwardMessageToDeadLetterQueueRequest.php b/php/grpc/Apache/Rocketmq/V2/ForwardMessageToDeadLetterQueueRequest.php
new file mode 100644
index 0000000..641ffbd
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/ForwardMessageToDeadLetterQueueRequest.php
@@ -0,0 +1,213 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.ForwardMessageToDeadLetterQueueRequest</code>
+ */
+class ForwardMessageToDeadLetterQueueRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource group = 1;</code>
+ */
+ protected $group = null;
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 2;</code>
+ */
+ protected $topic = null;
+ /**
+ * Generated from protobuf field <code>string receipt_handle = 3;</code>
+ */
+ protected $receipt_handle = '';
+ /**
+ * Generated from protobuf field <code>string message_id = 4;</code>
+ */
+ protected $message_id = '';
+ /**
+ * Generated from protobuf field <code>int32 delivery_attempt = 5;</code>
+ */
+ protected $delivery_attempt = 0;
+ /**
+ * Generated from protobuf field <code>int32 max_delivery_attempts = 6;</code>
+ */
+ protected $max_delivery_attempts = 0;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Resource $group
+ * @type \Apache\Rocketmq\V2\Resource $topic
+ * @type string $receipt_handle
+ * @type string $message_id
+ * @type int $delivery_attempt
+ * @type int $max_delivery_attempts
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource group = 1;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getGroup()
+ {
+ return $this->group;
+ }
+
+ public function hasGroup()
+ {
+ return isset($this->group);
+ }
+
+ public function clearGroup()
+ {
+ unset($this->group);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource group = 1;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setGroup($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->group = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 2;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getTopic()
+ {
+ return $this->topic;
+ }
+
+ public function hasTopic()
+ {
+ return isset($this->topic);
+ }
+
+ public function clearTopic()
+ {
+ unset($this->topic);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 2;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setTopic($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->topic = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>string receipt_handle = 3;</code>
+ * @return string
+ */
+ public function getReceiptHandle()
+ {
+ return $this->receipt_handle;
+ }
+
+ /**
+ * Generated from protobuf field <code>string receipt_handle = 3;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setReceiptHandle($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->receipt_handle = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>string message_id = 4;</code>
+ * @return string
+ */
+ public function getMessageId()
+ {
+ return $this->message_id;
+ }
+
+ /**
+ * Generated from protobuf field <code>string message_id = 4;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setMessageId($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->message_id = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>int32 delivery_attempt = 5;</code>
+ * @return int
+ */
+ public function getDeliveryAttempt()
+ {
+ return $this->delivery_attempt;
+ }
+
+ /**
+ * Generated from protobuf field <code>int32 delivery_attempt = 5;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setDeliveryAttempt($var)
+ {
+ GPBUtil::checkInt32($var);
+ $this->delivery_attempt = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>int32 max_delivery_attempts = 6;</code>
+ * @return int
+ */
+ public function getMaxDeliveryAttempts()
+ {
+ return $this->max_delivery_attempts;
+ }
+
+ /**
+ * Generated from protobuf field <code>int32 max_delivery_attempts = 6;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setMaxDeliveryAttempts($var)
+ {
+ GPBUtil::checkInt32($var);
+ $this->max_delivery_attempts = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/ForwardMessageToDeadLetterQueueResponse.php b/php/grpc/Apache/Rocketmq/V2/ForwardMessageToDeadLetterQueueResponse.php
new file mode 100644
index 0000000..06557d2
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/ForwardMessageToDeadLetterQueueResponse.php
@@ -0,0 +1,68 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.ForwardMessageToDeadLetterQueueResponse</code>
+ */
+class ForwardMessageToDeadLetterQueueResponse extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ */
+ protected $status = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Status $status
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @return \Apache\Rocketmq\V2\Status|null
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+
+ public function hasStatus()
+ {
+ return isset($this->status);
+ }
+
+ public function clearStatus()
+ {
+ unset($this->status);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @param \Apache\Rocketmq\V2\Status $var
+ * @return $this
+ */
+ public function setStatus($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Status::class);
+ $this->status = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/HeartbeatRequest.php b/php/grpc/Apache/Rocketmq/V2/HeartbeatRequest.php
new file mode 100644
index 0000000..2692bc8
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/HeartbeatRequest.php
@@ -0,0 +1,95 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.HeartbeatRequest</code>
+ */
+class HeartbeatRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
+ */
+ protected $group = null;
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.ClientType client_type = 2;</code>
+ */
+ protected $client_type = 0;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Resource $group
+ * @type int $client_type
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getGroup()
+ {
+ return $this->group;
+ }
+
+ public function hasGroup()
+ {
+ return isset($this->group);
+ }
+
+ public function clearGroup()
+ {
+ unset($this->group);
+ }
+
+ /**
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setGroup($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->group = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.ClientType client_type = 2;</code>
+ * @return int
+ */
+ public function getClientType()
+ {
+ return $this->client_type;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.ClientType client_type = 2;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setClientType($var)
+ {
+ GPBUtil::checkEnum($var, \Apache\Rocketmq\V2\ClientType::class);
+ $this->client_type = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/HeartbeatResponse.php b/php/grpc/Apache/Rocketmq/V2/HeartbeatResponse.php
new file mode 100644
index 0000000..a6ef90c
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/HeartbeatResponse.php
@@ -0,0 +1,68 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.HeartbeatResponse</code>
+ */
+class HeartbeatResponse extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ */
+ protected $status = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Status $status
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @return \Apache\Rocketmq\V2\Status|null
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+
+ public function hasStatus()
+ {
+ return isset($this->status);
+ }
+
+ public function clearStatus()
+ {
+ unset($this->status);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @param \Apache\Rocketmq\V2\Status $var
+ * @return $this
+ */
+ public function setStatus($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Status::class);
+ $this->status = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/Language.php b/php/grpc/Apache/Rocketmq/V2/Language.php
new file mode 100644
index 0000000..98fa28b
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/Language.php
@@ -0,0 +1,68 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use UnexpectedValueException;
+
+/**
+ * Protobuf type <code>apache.rocketmq.v2.Language</code>
+ */
+class Language
+{
+ /**
+ * Generated from protobuf enum <code>LANGUAGE_UNSPECIFIED = 0;</code>
+ */
+ const LANGUAGE_UNSPECIFIED = 0;
+ /**
+ * Generated from protobuf enum <code>JAVA = 1;</code>
+ */
+ const JAVA = 1;
+ /**
+ * Generated from protobuf enum <code>CPP = 2;</code>
+ */
+ const CPP = 2;
+ /**
+ * Generated from protobuf enum <code>DOT_NET = 3;</code>
+ */
+ const DOT_NET = 3;
+ /**
+ * Generated from protobuf enum <code>GOLANG = 4;</code>
+ */
+ const GOLANG = 4;
+ /**
+ * Generated from protobuf enum <code>RUST = 5;</code>
+ */
+ const RUST = 5;
+
+ private static $valueToName = [
+ self::LANGUAGE_UNSPECIFIED => 'LANGUAGE_UNSPECIFIED',
+ self::JAVA => 'JAVA',
+ self::CPP => 'CPP',
+ self::DOT_NET => 'DOT_NET',
+ self::GOLANG => 'GOLANG',
+ self::RUST => 'RUST',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/Message.php b/php/grpc/Apache/Rocketmq/V2/Message.php
new file mode 100644
index 0000000..ccc851f
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/Message.php
@@ -0,0 +1,182 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.Message</code>
+ */
+class Message extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ */
+ protected $topic = null;
+ /**
+ * User defined key-value pairs.
+ * If user_properties contain the reserved keys by RocketMQ,
+ * the send message request will be aborted with status `INVALID_ARGUMENT`.
+ * See below links for the reserved keys
+ * https://github.com/apache/rocketmq/blob/master/common/src/main/java/org/apache/rocketmq/common/message/MessageConst.java#L58
+ *
+ * Generated from protobuf field <code>map<string, string> user_properties = 2;</code>
+ */
+ private $user_properties;
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.SystemProperties system_properties = 3;</code>
+ */
+ protected $system_properties = null;
+ /**
+ * Generated from protobuf field <code>bytes body = 4;</code>
+ */
+ protected $body = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Resource $topic
+ * @type array|\Google\Protobuf\Internal\MapField $user_properties
+ * User defined key-value pairs.
+ * If user_properties contain the reserved keys by RocketMQ,
+ * the send message request will be aborted with status `INVALID_ARGUMENT`.
+ * See below links for the reserved keys
+ * https://github.com/apache/rocketmq/blob/master/common/src/main/java/org/apache/rocketmq/common/message/MessageConst.java#L58
+ * @type \Apache\Rocketmq\V2\SystemProperties $system_properties
+ * @type string $body
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Definition::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getTopic()
+ {
+ return $this->topic;
+ }
+
+ public function hasTopic()
+ {
+ return isset($this->topic);
+ }
+
+ public function clearTopic()
+ {
+ unset($this->topic);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setTopic($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->topic = $var;
+
+ return $this;
+ }
+
+ /**
+ * User defined key-value pairs.
+ * If user_properties contain the reserved keys by RocketMQ,
+ * the send message request will be aborted with status `INVALID_ARGUMENT`.
+ * See below links for the reserved keys
+ * https://github.com/apache/rocketmq/blob/master/common/src/main/java/org/apache/rocketmq/common/message/MessageConst.java#L58
+ *
+ * Generated from protobuf field <code>map<string, string> user_properties = 2;</code>
+ * @return \Google\Protobuf\Internal\MapField
+ */
+ public function getUserProperties()
+ {
+ return $this->user_properties;
+ }
+
+ /**
+ * User defined key-value pairs.
+ * If user_properties contain the reserved keys by RocketMQ,
+ * the send message request will be aborted with status `INVALID_ARGUMENT`.
+ * See below links for the reserved keys
+ * https://github.com/apache/rocketmq/blob/master/common/src/main/java/org/apache/rocketmq/common/message/MessageConst.java#L58
+ *
+ * Generated from protobuf field <code>map<string, string> user_properties = 2;</code>
+ * @param array|\Google\Protobuf\Internal\MapField $var
+ * @return $this
+ */
+ public function setUserProperties($var)
+ {
+ $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING);
+ $this->user_properties = $arr;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.SystemProperties system_properties = 3;</code>
+ * @return \Apache\Rocketmq\V2\SystemProperties|null
+ */
+ public function getSystemProperties()
+ {
+ return $this->system_properties;
+ }
+
+ public function hasSystemProperties()
+ {
+ return isset($this->system_properties);
+ }
+
+ public function clearSystemProperties()
+ {
+ unset($this->system_properties);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.SystemProperties system_properties = 3;</code>
+ * @param \Apache\Rocketmq\V2\SystemProperties $var
+ * @return $this
+ */
+ public function setSystemProperties($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\SystemProperties::class);
+ $this->system_properties = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>bytes body = 4;</code>
+ * @return string
+ */
+ public function getBody()
+ {
+ return $this->body;
+ }
+
+ /**
+ * Generated from protobuf field <code>bytes body = 4;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setBody($var)
+ {
+ GPBUtil::checkString($var, False);
+ $this->body = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/MessageQueue.php b/php/grpc/Apache/Rocketmq/V2/MessageQueue.php
new file mode 100644
index 0000000..f554af5
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/MessageQueue.php
@@ -0,0 +1,186 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.MessageQueue</code>
+ */
+class MessageQueue extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ */
+ protected $topic = null;
+ /**
+ * Generated from protobuf field <code>int32 id = 2;</code>
+ */
+ protected $id = 0;
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Permission permission = 3;</code>
+ */
+ protected $permission = 0;
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Broker broker = 4;</code>
+ */
+ protected $broker = null;
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.MessageType accept_message_types = 5;</code>
+ */
+ private $accept_message_types;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Resource $topic
+ * @type int $id
+ * @type int $permission
+ * @type \Apache\Rocketmq\V2\Broker $broker
+ * @type array<int>|\Google\Protobuf\Internal\RepeatedField $accept_message_types
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Definition::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getTopic()
+ {
+ return $this->topic;
+ }
+
+ public function hasTopic()
+ {
+ return isset($this->topic);
+ }
+
+ public function clearTopic()
+ {
+ unset($this->topic);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setTopic($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->topic = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>int32 id = 2;</code>
+ * @return int
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+
+ /**
+ * Generated from protobuf field <code>int32 id = 2;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setId($var)
+ {
+ GPBUtil::checkInt32($var);
+ $this->id = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Permission permission = 3;</code>
+ * @return int
+ */
+ public function getPermission()
+ {
+ return $this->permission;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Permission permission = 3;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setPermission($var)
+ {
+ GPBUtil::checkEnum($var, \Apache\Rocketmq\V2\Permission::class);
+ $this->permission = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Broker broker = 4;</code>
+ * @return \Apache\Rocketmq\V2\Broker|null
+ */
+ public function getBroker()
+ {
+ return $this->broker;
+ }
+
+ public function hasBroker()
+ {
+ return isset($this->broker);
+ }
+
+ public function clearBroker()
+ {
+ unset($this->broker);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Broker broker = 4;</code>
+ * @param \Apache\Rocketmq\V2\Broker $var
+ * @return $this
+ */
+ public function setBroker($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Broker::class);
+ $this->broker = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.MessageType accept_message_types = 5;</code>
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getAcceptMessageTypes()
+ {
+ return $this->accept_message_types;
+ }
+
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.MessageType accept_message_types = 5;</code>
+ * @param array<int>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setAcceptMessageTypes($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::ENUM, \Apache\Rocketmq\V2\MessageType::class);
+ $this->accept_message_types = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/MessageType.php b/php/grpc/Apache/Rocketmq/V2/MessageType.php
new file mode 100644
index 0000000..1344527
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/MessageType.php
@@ -0,0 +1,70 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use UnexpectedValueException;
+
+/**
+ * Protobuf type <code>apache.rocketmq.v2.MessageType</code>
+ */
+class MessageType
+{
+ /**
+ * Generated from protobuf enum <code>MESSAGE_TYPE_UNSPECIFIED = 0;</code>
+ */
+ const MESSAGE_TYPE_UNSPECIFIED = 0;
+ /**
+ * Generated from protobuf enum <code>NORMAL = 1;</code>
+ */
+ const NORMAL = 1;
+ /**
+ * Sequenced message
+ *
+ * Generated from protobuf enum <code>FIFO = 2;</code>
+ */
+ const FIFO = 2;
+ /**
+ * Messages that are delivered after the specified duration.
+ *
+ * Generated from protobuf enum <code>DELAY = 3;</code>
+ */
+ const DELAY = 3;
+ /**
+ * Messages that are transactional. Only committed messages are delivered to
+ * subscribers.
+ *
+ * Generated from protobuf enum <code>TRANSACTION = 4;</code>
+ */
+ const TRANSACTION = 4;
+
+ private static $valueToName = [
+ self::MESSAGE_TYPE_UNSPECIFIED => 'MESSAGE_TYPE_UNSPECIFIED',
+ self::NORMAL => 'NORMAL',
+ self::FIFO => 'FIFO',
+ self::DELAY => 'DELAY',
+ self::TRANSACTION => 'TRANSACTION',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/MessagingServiceClient.php b/php/grpc/Apache/Rocketmq/V2/MessagingServiceClient.php
new file mode 100644
index 0000000..884d038
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/MessagingServiceClient.php
@@ -0,0 +1,266 @@
+<?php
+// GENERATED CODE -- DO NOT EDIT!
+
+// Original file comments:
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+namespace Apache\Rocketmq\V2;
+
+/**
+ * For all the RPCs in MessagingService, the following error handling policies
+ * apply:
+ *
+ * If the request doesn't bear a valid authentication credential, return a
+ * response with common.status.code == `UNAUTHENTICATED`. If the authenticated
+ * user is not granted with sufficient permission to execute the requested
+ * operation, return a response with common.status.code == `PERMISSION_DENIED`.
+ * If the per-user-resource-based quota is exhausted, return a response with
+ * common.status.code == `RESOURCE_EXHAUSTED`. If any unexpected server-side
+ * errors raise, return a response with common.status.code == `INTERNAL`.
+ */
+class MessagingServiceClient extends \Grpc\BaseStub {
+
+ /**
+ * @param string $hostname hostname
+ * @param array $opts channel options
+ * @param \Grpc\Channel $channel (optional) re-use channel object
+ */
+ public function __construct($hostname, $opts, $channel = null) {
+ parent::__construct($hostname, $opts, $channel);
+ }
+
+ /**
+ * Queries the route entries of the requested topic in the perspective of the
+ * given endpoints. On success, servers should return a collection of
+ * addressable message-queues. Note servers may return customized route
+ * entries based on endpoints provided.
+ *
+ * If the requested topic doesn't exist, returns `NOT_FOUND`.
+ * If the specific endpoints is empty, returns `INVALID_ARGUMENT`.
+ * @param \Apache\Rocketmq\V2\QueryRouteRequest $argument input argument
+ * @param array $metadata metadata
+ * @param array $options call options
+ * @return \Grpc\UnaryCall
+ */
+ public function QueryRoute(\Apache\Rocketmq\V2\QueryRouteRequest $argument,
+ $metadata = [], $options = []) {
+ return $this->_simpleRequest('/apache.rocketmq.v2.MessagingService/QueryRoute',
+ $argument,
+ ['\Apache\Rocketmq\V2\QueryRouteResponse', 'decode'],
+ $metadata, $options);
+ }
+
+ /**
+ * Producer or consumer sends HeartbeatRequest to servers periodically to
+ * keep-alive. Additionally, it also reports client-side configuration,
+ * including topic subscription, load-balancing group name, etc.
+ *
+ * Returns `OK` if success.
+ *
+ * If a client specifies a language that is not yet supported by servers,
+ * returns `INVALID_ARGUMENT`
+ * @param \Apache\Rocketmq\V2\HeartbeatRequest $argument input argument
+ * @param array $metadata metadata
+ * @param array $options call options
+ * @return \Grpc\UnaryCall
+ */
+ public function Heartbeat(\Apache\Rocketmq\V2\HeartbeatRequest $argument,
+ $metadata = [], $options = []) {
+ return $this->_simpleRequest('/apache.rocketmq.v2.MessagingService/Heartbeat',
+ $argument,
+ ['\Apache\Rocketmq\V2\HeartbeatResponse', 'decode'],
+ $metadata, $options);
+ }
+
+ /**
+ * Delivers messages to brokers.
+ * Clients may further:
+ * 1. Refine a message destination to message-queues which fulfills parts of
+ * FIFO semantic;
+ * 2. Flag a message as transactional, which keeps it invisible to consumers
+ * until it commits;
+ * 3. Time a message, making it invisible to consumers till specified
+ * time-point;
+ * 4. And more...
+ *
+ * Returns message-id or transaction-id with status `OK` on success.
+ *
+ * If the destination topic doesn't exist, returns `NOT_FOUND`.
+ * @param \Apache\Rocketmq\V2\SendMessageRequest $argument input argument
+ * @param array $metadata metadata
+ * @param array $options call options
+ * @return \Grpc\UnaryCall
+ */
+ public function SendMessage(\Apache\Rocketmq\V2\SendMessageRequest $argument,
+ $metadata = [], $options = []) {
+ return $this->_simpleRequest('/apache.rocketmq.v2.MessagingService/SendMessage',
+ $argument,
+ ['\Apache\Rocketmq\V2\SendMessageResponse', 'decode'],
+ $metadata, $options);
+ }
+
+ /**
+ * Queries the assigned route info of a topic for current consumer,
+ * the returned assignment result is decided by server-side load balancer.
+ *
+ * If the corresponding topic doesn't exist, returns `NOT_FOUND`.
+ * If the specific endpoints is empty, returns `INVALID_ARGUMENT`.
+ * @param \Apache\Rocketmq\V2\QueryAssignmentRequest $argument input argument
+ * @param array $metadata metadata
+ * @param array $options call options
+ * @return \Grpc\UnaryCall
+ */
+ public function QueryAssignment(\Apache\Rocketmq\V2\QueryAssignmentRequest $argument,
+ $metadata = [], $options = []) {
+ return $this->_simpleRequest('/apache.rocketmq.v2.MessagingService/QueryAssignment',
+ $argument,
+ ['\Apache\Rocketmq\V2\QueryAssignmentResponse', 'decode'],
+ $metadata, $options);
+ }
+
+ /**
+ * Receives messages from the server in batch manner, returns a set of
+ * messages if success. The received messages should be acked or redelivered
+ * after processed.
+ *
+ * If the pending concurrent receive requests exceed the quota of the given
+ * consumer group, returns `UNAVAILABLE`. If the upstream store server hangs,
+ * return `DEADLINE_EXCEEDED` in a timely manner. If the corresponding topic
+ * or consumer group doesn't exist, returns `NOT_FOUND`. If there is no new
+ * message in the specific topic, returns `OK` with an empty message set.
+ * Please note that client may suffer from false empty responses.
+ *
+ * If failed to receive message from remote, server must return only one
+ * `ReceiveMessageResponse` as the reply to the request, whose `Status` indicates
+ * the specific reason of failure, otherwise, the reply is considered successful.
+ * @param \Apache\Rocketmq\V2\ReceiveMessageRequest $argument input argument
+ * @param array $metadata metadata
+ * @param array $options call options
+ * @return \Grpc\ServerStreamingCall
+ */
+ public function ReceiveMessage(\Apache\Rocketmq\V2\ReceiveMessageRequest $argument,
+ $metadata = [], $options = []) {
+ return $this->_serverStreamRequest('/apache.rocketmq.v2.MessagingService/ReceiveMessage',
+ $argument,
+ ['\Apache\Rocketmq\V2\ReceiveMessageResponse', 'decode'],
+ $metadata, $options);
+ }
+
+ /**
+ * Acknowledges the message associated with the `receipt_handle` or `offset`
+ * in the `AckMessageRequest`, it means the message has been successfully
+ * processed. Returns `OK` if the message server remove the relevant message
+ * successfully.
+ *
+ * If the given receipt_handle is illegal or out of date, returns
+ * `INVALID_ARGUMENT`.
+ * @param \Apache\Rocketmq\V2\AckMessageRequest $argument input argument
+ * @param array $metadata metadata
+ * @param array $options call options
+ * @return \Grpc\UnaryCall
+ */
+ public function AckMessage(\Apache\Rocketmq\V2\AckMessageRequest $argument,
+ $metadata = [], $options = []) {
+ return $this->_simpleRequest('/apache.rocketmq.v2.MessagingService/AckMessage',
+ $argument,
+ ['\Apache\Rocketmq\V2\AckMessageResponse', 'decode'],
+ $metadata, $options);
+ }
+
+ /**
+ * Forwards one message to dead letter queue if the max delivery attempts is
+ * exceeded by this message at client-side, return `OK` if success.
+ * @param \Apache\Rocketmq\V2\ForwardMessageToDeadLetterQueueRequest $argument input argument
+ * @param array $metadata metadata
+ * @param array $options call options
+ * @return \Grpc\UnaryCall
+ */
+ public function ForwardMessageToDeadLetterQueue(\Apache\Rocketmq\V2\ForwardMessageToDeadLetterQueueRequest $argument,
+ $metadata = [], $options = []) {
+ return $this->_simpleRequest('/apache.rocketmq.v2.MessagingService/ForwardMessageToDeadLetterQueue',
+ $argument,
+ ['\Apache\Rocketmq\V2\ForwardMessageToDeadLetterQueueResponse', 'decode'],
+ $metadata, $options);
+ }
+
+ /**
+ * Commits or rollback one transactional message.
+ * @param \Apache\Rocketmq\V2\EndTransactionRequest $argument input argument
+ * @param array $metadata metadata
+ * @param array $options call options
+ * @return \Grpc\UnaryCall
+ */
+ public function EndTransaction(\Apache\Rocketmq\V2\EndTransactionRequest $argument,
+ $metadata = [], $options = []) {
+ return $this->_simpleRequest('/apache.rocketmq.v2.MessagingService/EndTransaction',
+ $argument,
+ ['\Apache\Rocketmq\V2\EndTransactionResponse', 'decode'],
+ $metadata, $options);
+ }
+
+ /**
+ * Once a client starts, it would immediately establishes bi-lateral stream
+ * RPCs with brokers, reporting its settings as the initiative command.
+ *
+ * When servers have need of inspecting client status, they would issue
+ * telemetry commands to clients. After executing received instructions,
+ * clients shall report command execution results through client-side streams.
+ * @param array $metadata metadata
+ * @param array $options call options
+ * @return \Grpc\BidiStreamingCall
+ */
+ public function Telemetry($metadata = [], $options = []) {
+ return $this->_bidiRequest('/apache.rocketmq.v2.MessagingService/Telemetry',
+ ['\Apache\Rocketmq\V2\TelemetryCommand','decode'],
+ $metadata, $options);
+ }
+
+ /**
+ * Notify the server that the client is terminated.
+ * @param \Apache\Rocketmq\V2\NotifyClientTerminationRequest $argument input argument
+ * @param array $metadata metadata
+ * @param array $options call options
+ * @return \Grpc\UnaryCall
+ */
+ public function NotifyClientTermination(\Apache\Rocketmq\V2\NotifyClientTerminationRequest $argument,
+ $metadata = [], $options = []) {
+ return $this->_simpleRequest('/apache.rocketmq.v2.MessagingService/NotifyClientTermination',
+ $argument,
+ ['\Apache\Rocketmq\V2\NotifyClientTerminationResponse', 'decode'],
+ $metadata, $options);
+ }
+
+ /**
+ * Once a message is retrieved from consume queue on behalf of the group, it
+ * will be kept invisible to other clients of the same group for a period of
+ * time. The message is supposed to be processed within the invisible
+ * duration. If the client, which is in charge of the invisible message, is
+ * not capable of processing the message timely, it may use
+ * ChangeInvisibleDuration to lengthen invisible duration.
+ * @param \Apache\Rocketmq\V2\ChangeInvisibleDurationRequest $argument input argument
+ * @param array $metadata metadata
+ * @param array $options call options
+ * @return \Grpc\UnaryCall
+ */
+ public function ChangeInvisibleDuration(\Apache\Rocketmq\V2\ChangeInvisibleDurationRequest $argument,
+ $metadata = [], $options = []) {
+ return $this->_simpleRequest('/apache.rocketmq.v2.MessagingService/ChangeInvisibleDuration',
+ $argument,
+ ['\Apache\Rocketmq\V2\ChangeInvisibleDurationResponse', 'decode'],
+ $metadata, $options);
+ }
+
+}
diff --git a/php/grpc/Apache/Rocketmq/V2/Metric.php b/php/grpc/Apache/Rocketmq/V2/Metric.php
new file mode 100644
index 0000000..bcf25e6
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/Metric.php
@@ -0,0 +1,109 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.Metric</code>
+ */
+class Metric extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Indicates that if client should export local metrics to server.
+ *
+ * Generated from protobuf field <code>bool on = 1;</code>
+ */
+ protected $on = false;
+ /**
+ * The endpoint that client metrics should be exported to, which is required if the switch is on.
+ *
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+ */
+ protected $endpoints = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type bool $on
+ * Indicates that if client should export local metrics to server.
+ * @type \Apache\Rocketmq\V2\Endpoints $endpoints
+ * The endpoint that client metrics should be exported to, which is required if the switch is on.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Indicates that if client should export local metrics to server.
+ *
+ * Generated from protobuf field <code>bool on = 1;</code>
+ * @return bool
+ */
+ public function getOn()
+ {
+ return $this->on;
+ }
+
+ /**
+ * Indicates that if client should export local metrics to server.
+ *
+ * Generated from protobuf field <code>bool on = 1;</code>
+ * @param bool $var
+ * @return $this
+ */
+ public function setOn($var)
+ {
+ GPBUtil::checkBool($var);
+ $this->on = $var;
+
+ return $this;
+ }
+
+ /**
+ * The endpoint that client metrics should be exported to, which is required if the switch is on.
+ *
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+ * @return \Apache\Rocketmq\V2\Endpoints|null
+ */
+ public function getEndpoints()
+ {
+ return $this->endpoints;
+ }
+
+ public function hasEndpoints()
+ {
+ return isset($this->endpoints);
+ }
+
+ public function clearEndpoints()
+ {
+ unset($this->endpoints);
+ }
+
+ /**
+ * The endpoint that client metrics should be exported to, which is required if the switch is on.
+ *
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+ * @param \Apache\Rocketmq\V2\Endpoints $var
+ * @return $this
+ */
+ public function setEndpoints($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Endpoints::class);
+ $this->endpoints = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/NotifyClientTerminationRequest.php b/php/grpc/Apache/Rocketmq/V2/NotifyClientTerminationRequest.php
new file mode 100644
index 0000000..dc46469
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/NotifyClientTerminationRequest.php
@@ -0,0 +1,75 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.NotifyClientTerminationRequest</code>
+ */
+class NotifyClientTerminationRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Consumer group, which is absent for producer.
+ *
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
+ */
+ protected $group = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Resource $group
+ * Consumer group, which is absent for producer.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Consumer group, which is absent for producer.
+ *
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getGroup()
+ {
+ return $this->group;
+ }
+
+ public function hasGroup()
+ {
+ return isset($this->group);
+ }
+
+ public function clearGroup()
+ {
+ unset($this->group);
+ }
+
+ /**
+ * Consumer group, which is absent for producer.
+ *
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setGroup($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->group = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/NotifyClientTerminationResponse.php b/php/grpc/Apache/Rocketmq/V2/NotifyClientTerminationResponse.php
new file mode 100644
index 0000000..564795d
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/NotifyClientTerminationResponse.php
@@ -0,0 +1,68 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.NotifyClientTerminationResponse</code>
+ */
+class NotifyClientTerminationResponse extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ */
+ protected $status = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Status $status
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @return \Apache\Rocketmq\V2\Status|null
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+
+ public function hasStatus()
+ {
+ return isset($this->status);
+ }
+
+ public function clearStatus()
+ {
+ unset($this->status);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @param \Apache\Rocketmq\V2\Status $var
+ * @return $this
+ */
+ public function setStatus($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Status::class);
+ $this->status = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/Permission.php b/php/grpc/Apache/Rocketmq/V2/Permission.php
new file mode 100644
index 0000000..281df04
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/Permission.php
@@ -0,0 +1,63 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use UnexpectedValueException;
+
+/**
+ * Protobuf type <code>apache.rocketmq.v2.Permission</code>
+ */
+class Permission
+{
+ /**
+ * Generated from protobuf enum <code>PERMISSION_UNSPECIFIED = 0;</code>
+ */
+ const PERMISSION_UNSPECIFIED = 0;
+ /**
+ * Generated from protobuf enum <code>NONE = 1;</code>
+ */
+ const NONE = 1;
+ /**
+ * Generated from protobuf enum <code>READ = 2;</code>
+ */
+ const READ = 2;
+ /**
+ * Generated from protobuf enum <code>WRITE = 3;</code>
+ */
+ const WRITE = 3;
+ /**
+ * Generated from protobuf enum <code>READ_WRITE = 4;</code>
+ */
+ const READ_WRITE = 4;
+
+ private static $valueToName = [
+ self::PERMISSION_UNSPECIFIED => 'PERMISSION_UNSPECIFIED',
+ self::NONE => 'NONE',
+ self::READ => 'READ',
+ self::WRITE => 'WRITE',
+ self::READ_WRITE => 'READ_WRITE',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/PrintThreadStackTraceCommand.php b/php/grpc/Apache/Rocketmq/V2/PrintThreadStackTraceCommand.php
new file mode 100644
index 0000000..db0caec
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/PrintThreadStackTraceCommand.php
@@ -0,0 +1,58 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.PrintThreadStackTraceCommand</code>
+ */
+class PrintThreadStackTraceCommand extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>string nonce = 1;</code>
+ */
+ protected $nonce = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $nonce
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>string nonce = 1;</code>
+ * @return string
+ */
+ public function getNonce()
+ {
+ return $this->nonce;
+ }
+
+ /**
+ * Generated from protobuf field <code>string nonce = 1;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setNonce($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->nonce = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/Publishing.php b/php/grpc/Apache/Rocketmq/V2/Publishing.php
new file mode 100644
index 0000000..b4271f1
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/Publishing.php
@@ -0,0 +1,153 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.Publishing</code>
+ */
+class Publishing extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Publishing settings below here is appointed by client, thus it is
+ * unnecessary for server to push at present.
+ * List of topics to which messages will publish to.
+ *
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.Resource topics = 1;</code>
+ */
+ private $topics;
+ /**
+ * If the message body size exceeds `max_body_size`, broker servers would
+ * reject the request. As a result, it is advisable that Producer performs
+ * client-side check validation.
+ *
+ * Generated from protobuf field <code>int32 max_body_size = 2;</code>
+ */
+ protected $max_body_size = 0;
+ /**
+ * When `validate_message_type` flag set `false`, no need to validate message's type
+ * with messageQueue's `accept_message_types` before publising.
+ *
+ * Generated from protobuf field <code>bool validate_message_type = 3;</code>
+ */
+ protected $validate_message_type = false;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type array<\Apache\Rocketmq\V2\Resource>|\Google\Protobuf\Internal\RepeatedField $topics
+ * Publishing settings below here is appointed by client, thus it is
+ * unnecessary for server to push at present.
+ * List of topics to which messages will publish to.
+ * @type int $max_body_size
+ * If the message body size exceeds `max_body_size`, broker servers would
+ * reject the request. As a result, it is advisable that Producer performs
+ * client-side check validation.
+ * @type bool $validate_message_type
+ * When `validate_message_type` flag set `false`, no need to validate message's type
+ * with messageQueue's `accept_message_types` before publising.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Publishing settings below here is appointed by client, thus it is
+ * unnecessary for server to push at present.
+ * List of topics to which messages will publish to.
+ *
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.Resource topics = 1;</code>
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getTopics()
+ {
+ return $this->topics;
+ }
+
+ /**
+ * Publishing settings below here is appointed by client, thus it is
+ * unnecessary for server to push at present.
+ * List of topics to which messages will publish to.
+ *
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.Resource topics = 1;</code>
+ * @param array<\Apache\Rocketmq\V2\Resource>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setTopics($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Apache\Rocketmq\V2\Resource::class);
+ $this->topics = $arr;
+
+ return $this;
+ }
+
+ /**
+ * If the message body size exceeds `max_body_size`, broker servers would
+ * reject the request. As a result, it is advisable that Producer performs
+ * client-side check validation.
+ *
+ * Generated from protobuf field <code>int32 max_body_size = 2;</code>
+ * @return int
+ */
+ public function getMaxBodySize()
+ {
+ return $this->max_body_size;
+ }
+
+ /**
+ * If the message body size exceeds `max_body_size`, broker servers would
+ * reject the request. As a result, it is advisable that Producer performs
+ * client-side check validation.
+ *
+ * Generated from protobuf field <code>int32 max_body_size = 2;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setMaxBodySize($var)
+ {
+ GPBUtil::checkInt32($var);
+ $this->max_body_size = $var;
+
+ return $this;
+ }
+
+ /**
+ * When `validate_message_type` flag set `false`, no need to validate message's type
+ * with messageQueue's `accept_message_types` before publising.
+ *
+ * Generated from protobuf field <code>bool validate_message_type = 3;</code>
+ * @return bool
+ */
+ public function getValidateMessageType()
+ {
+ return $this->validate_message_type;
+ }
+
+ /**
+ * When `validate_message_type` flag set `false`, no need to validate message's type
+ * with messageQueue's `accept_message_types` before publising.
+ *
+ * Generated from protobuf field <code>bool validate_message_type = 3;</code>
+ * @param bool $var
+ * @return $this
+ */
+ public function setValidateMessageType($var)
+ {
+ GPBUtil::checkBool($var);
+ $this->validate_message_type = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/QueryAssignmentRequest.php b/php/grpc/Apache/Rocketmq/V2/QueryAssignmentRequest.php
new file mode 100644
index 0000000..9514721
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/QueryAssignmentRequest.php
@@ -0,0 +1,142 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.QueryAssignmentRequest</code>
+ */
+class QueryAssignmentRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ */
+ protected $topic = null;
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource group = 2;</code>
+ */
+ protected $group = null;
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+ */
+ protected $endpoints = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Resource $topic
+ * @type \Apache\Rocketmq\V2\Resource $group
+ * @type \Apache\Rocketmq\V2\Endpoints $endpoints
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getTopic()
+ {
+ return $this->topic;
+ }
+
+ public function hasTopic()
+ {
+ return isset($this->topic);
+ }
+
+ public function clearTopic()
+ {
+ unset($this->topic);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setTopic($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->topic = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource group = 2;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getGroup()
+ {
+ return $this->group;
+ }
+
+ public function hasGroup()
+ {
+ return isset($this->group);
+ }
+
+ public function clearGroup()
+ {
+ unset($this->group);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource group = 2;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setGroup($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->group = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+ * @return \Apache\Rocketmq\V2\Endpoints|null
+ */
+ public function getEndpoints()
+ {
+ return $this->endpoints;
+ }
+
+ public function hasEndpoints()
+ {
+ return isset($this->endpoints);
+ }
+
+ public function clearEndpoints()
+ {
+ unset($this->endpoints);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Endpoints endpoints = 3;</code>
+ * @param \Apache\Rocketmq\V2\Endpoints $var
+ * @return $this
+ */
+ public function setEndpoints($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Endpoints::class);
+ $this->endpoints = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/QueryAssignmentResponse.php b/php/grpc/Apache/Rocketmq/V2/QueryAssignmentResponse.php
new file mode 100644
index 0000000..4712466
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/QueryAssignmentResponse.php
@@ -0,0 +1,95 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.QueryAssignmentResponse</code>
+ */
+class QueryAssignmentResponse extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ */
+ protected $status = null;
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.Assignment assignments = 2;</code>
+ */
+ private $assignments;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Status $status
+ * @type array<\Apache\Rocketmq\V2\Assignment>|\Google\Protobuf\Internal\RepeatedField $assignments
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @return \Apache\Rocketmq\V2\Status|null
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+
+ public function hasStatus()
+ {
+ return isset($this->status);
+ }
+
+ public function clearStatus()
+ {
+ unset($this->status);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @param \Apache\Rocketmq\V2\Status $var
+ * @return $this
+ */
+ public function setStatus($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Status::class);
+ $this->status = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.Assignment assignments = 2;</code>
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getAssignments()
+ {
+ return $this->assignments;
+ }
+
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.Assignment assignments = 2;</code>
+ * @param array<\Apache\Rocketmq\V2\Assignment>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setAssignments($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Apache\Rocketmq\V2\Assignment::class);
+ $this->assignments = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/QueryRouteRequest.php b/php/grpc/Apache/Rocketmq/V2/QueryRouteRequest.php
new file mode 100644
index 0000000..dde00ae
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/QueryRouteRequest.php
@@ -0,0 +1,120 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Topics are destination of messages to publish to or subscribe from. Similar
+ * to domain names, they will be addressable after resolution through the
+ * provided access point.
+ * Access points are usually the addresses of name servers, which fulfill
+ * service discovery, load-balancing and other auxiliary services. Name servers
+ * receive periodic heartbeats from affiliate brokers and erase those which
+ * failed to maintain alive status.
+ * Name servers answer queries of QueryRouteRequest, responding clients with
+ * addressable message-queues, which they may directly publish messages to or
+ * subscribe messages from.
+ * QueryRouteRequest shall include source endpoints, aka, configured
+ * access-point, which annotates tenant-id, instance-id or other
+ * vendor-specific settings. Purpose-built name servers may respond customized
+ * results based on these particular requirements.
+ *
+ * Generated from protobuf message <code>apache.rocketmq.v2.QueryRouteRequest</code>
+ */
+class QueryRouteRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ */
+ protected $topic = null;
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+ */
+ protected $endpoints = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Resource $topic
+ * @type \Apache\Rocketmq\V2\Endpoints $endpoints
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getTopic()
+ {
+ return $this->topic;
+ }
+
+ public function hasTopic()
+ {
+ return isset($this->topic);
+ }
+
+ public function clearTopic()
+ {
+ unset($this->topic);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setTopic($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->topic = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+ * @return \Apache\Rocketmq\V2\Endpoints|null
+ */
+ public function getEndpoints()
+ {
+ return $this->endpoints;
+ }
+
+ public function hasEndpoints()
+ {
+ return isset($this->endpoints);
+ }
+
+ public function clearEndpoints()
+ {
+ unset($this->endpoints);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Endpoints endpoints = 2;</code>
+ * @param \Apache\Rocketmq\V2\Endpoints $var
+ * @return $this
+ */
+ public function setEndpoints($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Endpoints::class);
+ $this->endpoints = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/QueryRouteResponse.php b/php/grpc/Apache/Rocketmq/V2/QueryRouteResponse.php
new file mode 100644
index 0000000..7411d8b
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/QueryRouteResponse.php
@@ -0,0 +1,95 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.QueryRouteResponse</code>
+ */
+class QueryRouteResponse extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ */
+ protected $status = null;
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.MessageQueue message_queues = 2;</code>
+ */
+ private $message_queues;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Status $status
+ * @type array<\Apache\Rocketmq\V2\MessageQueue>|\Google\Protobuf\Internal\RepeatedField $message_queues
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @return \Apache\Rocketmq\V2\Status|null
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+
+ public function hasStatus()
+ {
+ return isset($this->status);
+ }
+
+ public function clearStatus()
+ {
+ unset($this->status);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @param \Apache\Rocketmq\V2\Status $var
+ * @return $this
+ */
+ public function setStatus($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Status::class);
+ $this->status = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.MessageQueue message_queues = 2;</code>
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getMessageQueues()
+ {
+ return $this->message_queues;
+ }
+
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.MessageQueue message_queues = 2;</code>
+ * @param array<\Apache\Rocketmq\V2\MessageQueue>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setMessageQueues($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Apache\Rocketmq\V2\MessageQueue::class);
+ $this->message_queues = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/ReceiveMessageRequest.php b/php/grpc/Apache/Rocketmq/V2/ReceiveMessageRequest.php
new file mode 100644
index 0000000..18ab403
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/ReceiveMessageRequest.php
@@ -0,0 +1,247 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.ReceiveMessageRequest</code>
+ */
+class ReceiveMessageRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource group = 1;</code>
+ */
+ protected $group = null;
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.MessageQueue message_queue = 2;</code>
+ */
+ protected $message_queue = null;
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.FilterExpression filter_expression = 3;</code>
+ */
+ protected $filter_expression = null;
+ /**
+ * Generated from protobuf field <code>int32 batch_size = 4;</code>
+ */
+ protected $batch_size = 0;
+ /**
+ * Required if client type is simple consumer.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Duration invisible_duration = 5;</code>
+ */
+ protected $invisible_duration = null;
+ /**
+ * For message auto renew and clean
+ *
+ * Generated from protobuf field <code>bool auto_renew = 6;</code>
+ */
+ protected $auto_renew = false;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Resource $group
+ * @type \Apache\Rocketmq\V2\MessageQueue $message_queue
+ * @type \Apache\Rocketmq\V2\FilterExpression $filter_expression
+ * @type int $batch_size
+ * @type \Google\Protobuf\Duration $invisible_duration
+ * Required if client type is simple consumer.
+ * @type bool $auto_renew
+ * For message auto renew and clean
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource group = 1;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getGroup()
+ {
+ return $this->group;
+ }
+
+ public function hasGroup()
+ {
+ return isset($this->group);
+ }
+
+ public function clearGroup()
+ {
+ unset($this->group);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource group = 1;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setGroup($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->group = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.MessageQueue message_queue = 2;</code>
+ * @return \Apache\Rocketmq\V2\MessageQueue|null
+ */
+ public function getMessageQueue()
+ {
+ return $this->message_queue;
+ }
+
+ public function hasMessageQueue()
+ {
+ return isset($this->message_queue);
+ }
+
+ public function clearMessageQueue()
+ {
+ unset($this->message_queue);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.MessageQueue message_queue = 2;</code>
+ * @param \Apache\Rocketmq\V2\MessageQueue $var
+ * @return $this
+ */
+ public function setMessageQueue($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\MessageQueue::class);
+ $this->message_queue = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.FilterExpression filter_expression = 3;</code>
+ * @return \Apache\Rocketmq\V2\FilterExpression|null
+ */
+ public function getFilterExpression()
+ {
+ return $this->filter_expression;
+ }
+
+ public function hasFilterExpression()
+ {
+ return isset($this->filter_expression);
+ }
+
+ public function clearFilterExpression()
+ {
+ unset($this->filter_expression);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.FilterExpression filter_expression = 3;</code>
+ * @param \Apache\Rocketmq\V2\FilterExpression $var
+ * @return $this
+ */
+ public function setFilterExpression($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\FilterExpression::class);
+ $this->filter_expression = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>int32 batch_size = 4;</code>
+ * @return int
+ */
+ public function getBatchSize()
+ {
+ return $this->batch_size;
+ }
+
+ /**
+ * Generated from protobuf field <code>int32 batch_size = 4;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setBatchSize($var)
+ {
+ GPBUtil::checkInt32($var);
+ $this->batch_size = $var;
+
+ return $this;
+ }
+
+ /**
+ * Required if client type is simple consumer.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Duration invisible_duration = 5;</code>
+ * @return \Google\Protobuf\Duration|null
+ */
+ public function getInvisibleDuration()
+ {
+ return $this->invisible_duration;
+ }
+
+ public function hasInvisibleDuration()
+ {
+ return isset($this->invisible_duration);
+ }
+
+ public function clearInvisibleDuration()
+ {
+ unset($this->invisible_duration);
+ }
+
+ /**
+ * Required if client type is simple consumer.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Duration invisible_duration = 5;</code>
+ * @param \Google\Protobuf\Duration $var
+ * @return $this
+ */
+ public function setInvisibleDuration($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Duration::class);
+ $this->invisible_duration = $var;
+
+ return $this;
+ }
+
+ /**
+ * For message auto renew and clean
+ *
+ * Generated from protobuf field <code>bool auto_renew = 6;</code>
+ * @return bool
+ */
+ public function getAutoRenew()
+ {
+ return $this->auto_renew;
+ }
+
+ /**
+ * For message auto renew and clean
+ *
+ * Generated from protobuf field <code>bool auto_renew = 6;</code>
+ * @param bool $var
+ * @return $this
+ */
+ public function setAutoRenew($var)
+ {
+ GPBUtil::checkBool($var);
+ $this->auto_renew = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/ReceiveMessageResponse.php b/php/grpc/Apache/Rocketmq/V2/ReceiveMessageResponse.php
new file mode 100644
index 0000000..721f874
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/ReceiveMessageResponse.php
@@ -0,0 +1,129 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.ReceiveMessageResponse</code>
+ */
+class ReceiveMessageResponse extends \Google\Protobuf\Internal\Message
+{
+ protected $content;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Status $status
+ * @type \Apache\Rocketmq\V2\Message $message
+ * @type \Google\Protobuf\Timestamp $delivery_timestamp
+ * The timestamp that brokers start to deliver status line or message.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @return \Apache\Rocketmq\V2\Status|null
+ */
+ public function getStatus()
+ {
+ return $this->readOneof(1);
+ }
+
+ public function hasStatus()
+ {
+ return $this->hasOneof(1);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @param \Apache\Rocketmq\V2\Status $var
+ * @return $this
+ */
+ public function setStatus($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Status::class);
+ $this->writeOneof(1, $var);
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Message message = 2;</code>
+ * @return \Apache\Rocketmq\V2\Message|null
+ */
+ public function getMessage()
+ {
+ return $this->readOneof(2);
+ }
+
+ public function hasMessage()
+ {
+ return $this->hasOneof(2);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Message message = 2;</code>
+ * @param \Apache\Rocketmq\V2\Message $var
+ * @return $this
+ */
+ public function setMessage($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Message::class);
+ $this->writeOneof(2, $var);
+
+ return $this;
+ }
+
+ /**
+ * The timestamp that brokers start to deliver status line or message.
+ *
+ * Generated from protobuf field <code>.google.protobuf.Timestamp delivery_timestamp = 3;</code>
+ * @return \Google\Protobuf\Timestamp|null
+ */
+ public function getDeliveryTimestamp()
+ {
+ return $this->readOneof(3);
+ }
+
+ public function hasDeliveryTimestamp()
+ {
+ return $this->hasOneof(3);
+ }
+
+ /**
+ * The timestamp that brokers start to deliver status line or message.
+ *
+ * Generated from protobuf field <code>.google.protobuf.Timestamp delivery_timestamp = 3;</code>
+ * @param \Google\Protobuf\Timestamp $var
+ * @return $this
+ */
+ public function setDeliveryTimestamp($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Timestamp::class);
+ $this->writeOneof(3, $var);
+
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getContent()
+ {
+ return $this->whichOneof("content");
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/RecoverOrphanedTransactionCommand.php b/php/grpc/Apache/Rocketmq/V2/RecoverOrphanedTransactionCommand.php
new file mode 100644
index 0000000..794b6cf
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/RecoverOrphanedTransactionCommand.php
@@ -0,0 +1,95 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.RecoverOrphanedTransactionCommand</code>
+ */
+class RecoverOrphanedTransactionCommand extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Message message = 1;</code>
+ */
+ protected $message = null;
+ /**
+ * Generated from protobuf field <code>string transaction_id = 2;</code>
+ */
+ protected $transaction_id = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Message $message
+ * @type string $transaction_id
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Message message = 1;</code>
+ * @return \Apache\Rocketmq\V2\Message|null
+ */
+ public function getMessage()
+ {
+ return $this->message;
+ }
+
+ public function hasMessage()
+ {
+ return isset($this->message);
+ }
+
+ public function clearMessage()
+ {
+ unset($this->message);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Message message = 1;</code>
+ * @param \Apache\Rocketmq\V2\Message $var
+ * @return $this
+ */
+ public function setMessage($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Message::class);
+ $this->message = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>string transaction_id = 2;</code>
+ * @return string
+ */
+ public function getTransactionId()
+ {
+ return $this->transaction_id;
+ }
+
+ /**
+ * Generated from protobuf field <code>string transaction_id = 2;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setTransactionId($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->transaction_id = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/Resource.php b/php/grpc/Apache/Rocketmq/V2/Resource.php
new file mode 100644
index 0000000..5c3f922
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/Resource.php
@@ -0,0 +1,96 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.Resource</code>
+ */
+class Resource extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>string resource_namespace = 1;</code>
+ */
+ protected $resource_namespace = '';
+ /**
+ * Resource name identifier, which remains unique within the abstract resource
+ * namespace.
+ *
+ * Generated from protobuf field <code>string name = 2;</code>
+ */
+ protected $name = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $resource_namespace
+ * @type string $name
+ * Resource name identifier, which remains unique within the abstract resource
+ * namespace.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Definition::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>string resource_namespace = 1;</code>
+ * @return string
+ */
+ public function getResourceNamespace()
+ {
+ return $this->resource_namespace;
+ }
+
+ /**
+ * Generated from protobuf field <code>string resource_namespace = 1;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setResourceNamespace($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->resource_namespace = $var;
+
+ return $this;
+ }
+
+ /**
+ * Resource name identifier, which remains unique within the abstract resource
+ * namespace.
+ *
+ * Generated from protobuf field <code>string name = 2;</code>
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Resource name identifier, which remains unique within the abstract resource
+ * namespace.
+ *
+ * Generated from protobuf field <code>string name = 2;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setName($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->name = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/RetryPolicy.php b/php/grpc/Apache/Rocketmq/V2/RetryPolicy.php
new file mode 100644
index 0000000..f37d1c6
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/RetryPolicy.php
@@ -0,0 +1,123 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.RetryPolicy</code>
+ */
+class RetryPolicy extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>int32 max_attempts = 1;</code>
+ */
+ protected $max_attempts = 0;
+ protected $strategy;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type int $max_attempts
+ * @type \Apache\Rocketmq\V2\ExponentialBackoff $exponential_backoff
+ * @type \Apache\Rocketmq\V2\CustomizedBackoff $customized_backoff
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Definition::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>int32 max_attempts = 1;</code>
+ * @return int
+ */
+ public function getMaxAttempts()
+ {
+ return $this->max_attempts;
+ }
+
+ /**
+ * Generated from protobuf field <code>int32 max_attempts = 1;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setMaxAttempts($var)
+ {
+ GPBUtil::checkInt32($var);
+ $this->max_attempts = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.ExponentialBackoff exponential_backoff = 2;</code>
+ * @return \Apache\Rocketmq\V2\ExponentialBackoff|null
+ */
+ public function getExponentialBackoff()
+ {
+ return $this->readOneof(2);
+ }
+
+ public function hasExponentialBackoff()
+ {
+ return $this->hasOneof(2);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.ExponentialBackoff exponential_backoff = 2;</code>
+ * @param \Apache\Rocketmq\V2\ExponentialBackoff $var
+ * @return $this
+ */
+ public function setExponentialBackoff($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\ExponentialBackoff::class);
+ $this->writeOneof(2, $var);
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.CustomizedBackoff customized_backoff = 3;</code>
+ * @return \Apache\Rocketmq\V2\CustomizedBackoff|null
+ */
+ public function getCustomizedBackoff()
+ {
+ return $this->readOneof(3);
+ }
+
+ public function hasCustomizedBackoff()
+ {
+ return $this->hasOneof(3);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.CustomizedBackoff customized_backoff = 3;</code>
+ * @param \Apache\Rocketmq\V2\CustomizedBackoff $var
+ * @return $this
+ */
+ public function setCustomizedBackoff($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\CustomizedBackoff::class);
+ $this->writeOneof(3, $var);
+
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getStrategy()
+ {
+ return $this->whichOneof("strategy");
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/SendMessageRequest.php b/php/grpc/Apache/Rocketmq/V2/SendMessageRequest.php
new file mode 100644
index 0000000..2f3ed28
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/SendMessageRequest.php
@@ -0,0 +1,58 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.SendMessageRequest</code>
+ */
+class SendMessageRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.Message messages = 1;</code>
+ */
+ private $messages;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type array<\Apache\Rocketmq\V2\Message>|\Google\Protobuf\Internal\RepeatedField $messages
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.Message messages = 1;</code>
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getMessages()
+ {
+ return $this->messages;
+ }
+
+ /**
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.Message messages = 1;</code>
+ * @param array<\Apache\Rocketmq\V2\Message>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setMessages($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Apache\Rocketmq\V2\Message::class);
+ $this->messages = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/SendMessageResponse.php b/php/grpc/Apache/Rocketmq/V2/SendMessageResponse.php
new file mode 100644
index 0000000..b72dd96
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/SendMessageResponse.php
@@ -0,0 +1,106 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.SendMessageResponse</code>
+ */
+class SendMessageResponse extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ */
+ protected $status = null;
+ /**
+ * Some implementation may have partial failure issues. Client SDK developers are expected to inspect
+ * each entry for best certainty.
+ *
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.SendResultEntry entries = 2;</code>
+ */
+ private $entries;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Status $status
+ * @type array<\Apache\Rocketmq\V2\SendResultEntry>|\Google\Protobuf\Internal\RepeatedField $entries
+ * Some implementation may have partial failure issues. Client SDK developers are expected to inspect
+ * each entry for best certainty.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @return \Apache\Rocketmq\V2\Status|null
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+
+ public function hasStatus()
+ {
+ return isset($this->status);
+ }
+
+ public function clearStatus()
+ {
+ unset($this->status);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @param \Apache\Rocketmq\V2\Status $var
+ * @return $this
+ */
+ public function setStatus($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Status::class);
+ $this->status = $var;
+
+ return $this;
+ }
+
+ /**
+ * Some implementation may have partial failure issues. Client SDK developers are expected to inspect
+ * each entry for best certainty.
+ *
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.SendResultEntry entries = 2;</code>
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getEntries()
+ {
+ return $this->entries;
+ }
+
+ /**
+ * Some implementation may have partial failure issues. Client SDK developers are expected to inspect
+ * each entry for best certainty.
+ *
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.SendResultEntry entries = 2;</code>
+ * @param array<\Apache\Rocketmq\V2\SendResultEntry>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setEntries($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Apache\Rocketmq\V2\SendResultEntry::class);
+ $this->entries = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/SendResultEntry.php b/php/grpc/Apache/Rocketmq/V2/SendResultEntry.php
new file mode 100644
index 0000000..eeec9a6
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/SendResultEntry.php
@@ -0,0 +1,149 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.SendResultEntry</code>
+ */
+class SendResultEntry extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ */
+ protected $status = null;
+ /**
+ * Generated from protobuf field <code>string message_id = 2;</code>
+ */
+ protected $message_id = '';
+ /**
+ * Generated from protobuf field <code>string transaction_id = 3;</code>
+ */
+ protected $transaction_id = '';
+ /**
+ * Generated from protobuf field <code>int64 offset = 4;</code>
+ */
+ protected $offset = 0;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Status $status
+ * @type string $message_id
+ * @type string $transaction_id
+ * @type int|string $offset
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @return \Apache\Rocketmq\V2\Status|null
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+
+ public function hasStatus()
+ {
+ return isset($this->status);
+ }
+
+ public function clearStatus()
+ {
+ unset($this->status);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Status status = 1;</code>
+ * @param \Apache\Rocketmq\V2\Status $var
+ * @return $this
+ */
+ public function setStatus($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Status::class);
+ $this->status = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>string message_id = 2;</code>
+ * @return string
+ */
+ public function getMessageId()
+ {
+ return $this->message_id;
+ }
+
+ /**
+ * Generated from protobuf field <code>string message_id = 2;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setMessageId($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->message_id = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>string transaction_id = 3;</code>
+ * @return string
+ */
+ public function getTransactionId()
+ {
+ return $this->transaction_id;
+ }
+
+ /**
+ * Generated from protobuf field <code>string transaction_id = 3;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setTransactionId($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->transaction_id = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>int64 offset = 4;</code>
+ * @return int|string
+ */
+ public function getOffset()
+ {
+ return $this->offset;
+ }
+
+ /**
+ * Generated from protobuf field <code>int64 offset = 4;</code>
+ * @param int|string $var
+ * @return $this
+ */
+ public function setOffset($var)
+ {
+ GPBUtil::checkInt64($var);
+ $this->offset = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/Settings.php b/php/grpc/Apache/Rocketmq/V2/Settings.php
new file mode 100644
index 0000000..5862275
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/Settings.php
@@ -0,0 +1,374 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.Settings</code>
+ */
+class Settings extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Configurations for all clients.
+ *
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.ClientType client_type = 1;</code>
+ */
+ protected $client_type = null;
+ /**
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Endpoints access_point = 2;</code>
+ */
+ protected $access_point = null;
+ /**
+ * If publishing of messages encounters throttling or server internal errors,
+ * publishers should implement automatic retries after progressive longer
+ * back-offs for consecutive errors.
+ * When processing message fails, `backoff_policy` describes an interval
+ * after which the message should be available 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.
+ *
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+ */
+ protected $backoff_policy = null;
+ /**
+ * Request timeout for RPCs excluding long-polling.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Duration request_timeout = 4;</code>
+ */
+ protected $request_timeout = null;
+ /**
+ * User agent details
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.UA user_agent = 7;</code>
+ */
+ protected $user_agent = null;
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+ */
+ protected $metric = null;
+ protected $pub_sub;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type int $client_type
+ * Configurations for all clients.
+ * @type \Apache\Rocketmq\V2\Endpoints $access_point
+ * @type \Apache\Rocketmq\V2\RetryPolicy $backoff_policy
+ * If publishing of messages encounters throttling or server internal errors,
+ * publishers should implement automatic retries after progressive longer
+ * back-offs for consecutive errors.
+ * When processing message fails, `backoff_policy` describes an interval
+ * after which the message should be available 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.
+ * @type \Google\Protobuf\Duration $request_timeout
+ * Request timeout for RPCs excluding long-polling.
+ * @type \Apache\Rocketmq\V2\Publishing $publishing
+ * @type \Apache\Rocketmq\V2\Subscription $subscription
+ * @type \Apache\Rocketmq\V2\UA $user_agent
+ * User agent details
+ * @type \Apache\Rocketmq\V2\Metric $metric
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Configurations for all clients.
+ *
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.ClientType client_type = 1;</code>
+ * @return int
+ */
+ public function getClientType()
+ {
+ return isset($this->client_type) ? $this->client_type : 0;
+ }
+
+ public function hasClientType()
+ {
+ return isset($this->client_type);
+ }
+
+ public function clearClientType()
+ {
+ unset($this->client_type);
+ }
+
+ /**
+ * Configurations for all clients.
+ *
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.ClientType client_type = 1;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setClientType($var)
+ {
+ GPBUtil::checkEnum($var, \Apache\Rocketmq\V2\ClientType::class);
+ $this->client_type = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Endpoints access_point = 2;</code>
+ * @return \Apache\Rocketmq\V2\Endpoints|null
+ */
+ public function getAccessPoint()
+ {
+ return $this->access_point;
+ }
+
+ public function hasAccessPoint()
+ {
+ return isset($this->access_point);
+ }
+
+ public function clearAccessPoint()
+ {
+ unset($this->access_point);
+ }
+
+ /**
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Endpoints access_point = 2;</code>
+ * @param \Apache\Rocketmq\V2\Endpoints $var
+ * @return $this
+ */
+ public function setAccessPoint($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Endpoints::class);
+ $this->access_point = $var;
+
+ return $this;
+ }
+
+ /**
+ * If publishing of messages encounters throttling or server internal errors,
+ * publishers should implement automatic retries after progressive longer
+ * back-offs for consecutive errors.
+ * When processing message fails, `backoff_policy` describes an interval
+ * after which the message should be available 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.
+ *
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+ * @return \Apache\Rocketmq\V2\RetryPolicy|null
+ */
+ public function getBackoffPolicy()
+ {
+ return $this->backoff_policy;
+ }
+
+ public function hasBackoffPolicy()
+ {
+ return isset($this->backoff_policy);
+ }
+
+ public function clearBackoffPolicy()
+ {
+ unset($this->backoff_policy);
+ }
+
+ /**
+ * If publishing of messages encounters throttling or server internal errors,
+ * publishers should implement automatic retries after progressive longer
+ * back-offs for consecutive errors.
+ * When processing message fails, `backoff_policy` describes an interval
+ * after which the message should be available 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.
+ *
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.RetryPolicy backoff_policy = 3;</code>
+ * @param \Apache\Rocketmq\V2\RetryPolicy $var
+ * @return $this
+ */
+ public function setBackoffPolicy($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\RetryPolicy::class);
+ $this->backoff_policy = $var;
+
+ return $this;
+ }
+
+ /**
+ * Request timeout for RPCs excluding long-polling.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Duration request_timeout = 4;</code>
+ * @return \Google\Protobuf\Duration|null
+ */
+ public function getRequestTimeout()
+ {
+ return $this->request_timeout;
+ }
+
+ public function hasRequestTimeout()
+ {
+ return isset($this->request_timeout);
+ }
+
+ public function clearRequestTimeout()
+ {
+ unset($this->request_timeout);
+ }
+
+ /**
+ * Request timeout for RPCs excluding long-polling.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Duration request_timeout = 4;</code>
+ * @param \Google\Protobuf\Duration $var
+ * @return $this
+ */
+ public function setRequestTimeout($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Duration::class);
+ $this->request_timeout = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Publishing publishing = 5;</code>
+ * @return \Apache\Rocketmq\V2\Publishing|null
+ */
+ public function getPublishing()
+ {
+ return $this->readOneof(5);
+ }
+
+ public function hasPublishing()
+ {
+ return $this->hasOneof(5);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Publishing publishing = 5;</code>
+ * @param \Apache\Rocketmq\V2\Publishing $var
+ * @return $this
+ */
+ public function setPublishing($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Publishing::class);
+ $this->writeOneof(5, $var);
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Subscription subscription = 6;</code>
+ * @return \Apache\Rocketmq\V2\Subscription|null
+ */
+ public function getSubscription()
+ {
+ return $this->readOneof(6);
+ }
+
+ public function hasSubscription()
+ {
+ return $this->hasOneof(6);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Subscription subscription = 6;</code>
+ * @param \Apache\Rocketmq\V2\Subscription $var
+ * @return $this
+ */
+ public function setSubscription($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Subscription::class);
+ $this->writeOneof(6, $var);
+
+ return $this;
+ }
+
+ /**
+ * User agent details
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.UA user_agent = 7;</code>
+ * @return \Apache\Rocketmq\V2\UA|null
+ */
+ public function getUserAgent()
+ {
+ return $this->user_agent;
+ }
+
+ public function hasUserAgent()
+ {
+ return isset($this->user_agent);
+ }
+
+ public function clearUserAgent()
+ {
+ unset($this->user_agent);
+ }
+
+ /**
+ * User agent details
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.UA user_agent = 7;</code>
+ * @param \Apache\Rocketmq\V2\UA $var
+ * @return $this
+ */
+ public function setUserAgent($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\UA::class);
+ $this->user_agent = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+ * @return \Apache\Rocketmq\V2\Metric|null
+ */
+ public function getMetric()
+ {
+ return $this->metric;
+ }
+
+ public function hasMetric()
+ {
+ return isset($this->metric);
+ }
+
+ public function clearMetric()
+ {
+ unset($this->metric);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Metric metric = 8;</code>
+ * @param \Apache\Rocketmq\V2\Metric $var
+ * @return $this
+ */
+ public function setMetric($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Metric::class);
+ $this->metric = $var;
+
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getPubSub()
+ {
+ return $this->whichOneof("pub_sub");
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/Status.php b/php/grpc/Apache/Rocketmq/V2/Status.php
new file mode 100644
index 0000000..a59a2b4
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/Status.php
@@ -0,0 +1,85 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.Status</code>
+ */
+class Status extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Code code = 1;</code>
+ */
+ protected $code = 0;
+ /**
+ * Generated from protobuf field <code>string message = 2;</code>
+ */
+ protected $message = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type int $code
+ * @type string $message
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Definition::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Code code = 1;</code>
+ * @return int
+ */
+ public function getCode()
+ {
+ return $this->code;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Code code = 1;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setCode($var)
+ {
+ GPBUtil::checkEnum($var, \Apache\Rocketmq\V2\Code::class);
+ $this->code = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>string message = 2;</code>
+ * @return string
+ */
+ public function getMessage()
+ {
+ return $this->message;
+ }
+
+ /**
+ * Generated from protobuf field <code>string message = 2;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setMessage($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->message = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/Subscription.php b/php/grpc/Apache/Rocketmq/V2/Subscription.php
new file mode 100644
index 0000000..67b4fa6
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/Subscription.php
@@ -0,0 +1,273 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.Subscription</code>
+ */
+class Subscription extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Subscription settings below here is appointed by client, thus it is
+ * unnecessary for server to push at present.
+ * Consumer group.
+ *
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
+ */
+ protected $group = null;
+ /**
+ * Subscription for consumer.
+ *
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.SubscriptionEntry subscriptions = 2;</code>
+ */
+ private $subscriptions;
+ /**
+ * Subscription settings below here are from server, it is essential for
+ * server to push.
+ * When FIFO flag is `true`, messages of the same message group are processed
+ * in first-in-first-out manner.
+ * Brokers will not deliver further messages of the same group utill prior
+ * ones are completely acknowledged.
+ *
+ * Generated from protobuf field <code>optional bool fifo = 3;</code>
+ */
+ protected $fifo = null;
+ /**
+ * Message receive batch size here is essential for push consumer.
+ *
+ * Generated from protobuf field <code>optional int32 receive_batch_size = 4;</code>
+ */
+ protected $receive_batch_size = null;
+ /**
+ * Long-polling timeout for `ReceiveMessageRequest`, which is essential for
+ * push consumer.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Duration long_polling_timeout = 5;</code>
+ */
+ protected $long_polling_timeout = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Resource $group
+ * Subscription settings below here is appointed by client, thus it is
+ * unnecessary for server to push at present.
+ * Consumer group.
+ * @type array<\Apache\Rocketmq\V2\SubscriptionEntry>|\Google\Protobuf\Internal\RepeatedField $subscriptions
+ * Subscription for consumer.
+ * @type bool $fifo
+ * Subscription settings below here are from server, it is essential for
+ * server to push.
+ * When FIFO flag is `true`, messages of the same message group are processed
+ * in first-in-first-out manner.
+ * Brokers will not deliver further messages of the same group utill prior
+ * ones are completely acknowledged.
+ * @type int $receive_batch_size
+ * Message receive batch size here is essential for push consumer.
+ * @type \Google\Protobuf\Duration $long_polling_timeout
+ * Long-polling timeout for `ReceiveMessageRequest`, which is essential for
+ * push consumer.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Subscription settings below here is appointed by client, thus it is
+ * unnecessary for server to push at present.
+ * Consumer group.
+ *
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getGroup()
+ {
+ return $this->group;
+ }
+
+ public function hasGroup()
+ {
+ return isset($this->group);
+ }
+
+ public function clearGroup()
+ {
+ unset($this->group);
+ }
+
+ /**
+ * Subscription settings below here is appointed by client, thus it is
+ * unnecessary for server to push at present.
+ * Consumer group.
+ *
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Resource group = 1;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setGroup($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->group = $var;
+
+ return $this;
+ }
+
+ /**
+ * Subscription for consumer.
+ *
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.SubscriptionEntry subscriptions = 2;</code>
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getSubscriptions()
+ {
+ return $this->subscriptions;
+ }
+
+ /**
+ * Subscription for consumer.
+ *
+ * Generated from protobuf field <code>repeated .apache.rocketmq.v2.SubscriptionEntry subscriptions = 2;</code>
+ * @param array<\Apache\Rocketmq\V2\SubscriptionEntry>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setSubscriptions($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Apache\Rocketmq\V2\SubscriptionEntry::class);
+ $this->subscriptions = $arr;
+
+ return $this;
+ }
+
+ /**
+ * Subscription settings below here are from server, it is essential for
+ * server to push.
+ * When FIFO flag is `true`, messages of the same message group are processed
+ * in first-in-first-out manner.
+ * Brokers will not deliver further messages of the same group utill prior
+ * ones are completely acknowledged.
+ *
+ * Generated from protobuf field <code>optional bool fifo = 3;</code>
+ * @return bool
+ */
+ public function getFifo()
+ {
+ return isset($this->fifo) ? $this->fifo : false;
+ }
+
+ public function hasFifo()
+ {
+ return isset($this->fifo);
+ }
+
+ public function clearFifo()
+ {
+ unset($this->fifo);
+ }
+
+ /**
+ * Subscription settings below here are from server, it is essential for
+ * server to push.
+ * When FIFO flag is `true`, messages of the same message group are processed
+ * in first-in-first-out manner.
+ * Brokers will not deliver further messages of the same group utill prior
+ * ones are completely acknowledged.
+ *
+ * Generated from protobuf field <code>optional bool fifo = 3;</code>
+ * @param bool $var
+ * @return $this
+ */
+ public function setFifo($var)
+ {
+ GPBUtil::checkBool($var);
+ $this->fifo = $var;
+
+ return $this;
+ }
+
+ /**
+ * Message receive batch size here is essential for push consumer.
+ *
+ * Generated from protobuf field <code>optional int32 receive_batch_size = 4;</code>
+ * @return int
+ */
+ public function getReceiveBatchSize()
+ {
+ return isset($this->receive_batch_size) ? $this->receive_batch_size : 0;
+ }
+
+ public function hasReceiveBatchSize()
+ {
+ return isset($this->receive_batch_size);
+ }
+
+ public function clearReceiveBatchSize()
+ {
+ unset($this->receive_batch_size);
+ }
+
+ /**
+ * Message receive batch size here is essential for push consumer.
+ *
+ * Generated from protobuf field <code>optional int32 receive_batch_size = 4;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setReceiveBatchSize($var)
+ {
+ GPBUtil::checkInt32($var);
+ $this->receive_batch_size = $var;
+
+ return $this;
+ }
+
+ /**
+ * Long-polling timeout for `ReceiveMessageRequest`, which is essential for
+ * push consumer.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Duration long_polling_timeout = 5;</code>
+ * @return \Google\Protobuf\Duration|null
+ */
+ public function getLongPollingTimeout()
+ {
+ return $this->long_polling_timeout;
+ }
+
+ public function hasLongPollingTimeout()
+ {
+ return isset($this->long_polling_timeout);
+ }
+
+ public function clearLongPollingTimeout()
+ {
+ unset($this->long_polling_timeout);
+ }
+
+ /**
+ * Long-polling timeout for `ReceiveMessageRequest`, which is essential for
+ * push consumer.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Duration long_polling_timeout = 5;</code>
+ * @param \Google\Protobuf\Duration $var
+ * @return $this
+ */
+ public function setLongPollingTimeout($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Duration::class);
+ $this->long_polling_timeout = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/SubscriptionEntry.php b/php/grpc/Apache/Rocketmq/V2/SubscriptionEntry.php
new file mode 100644
index 0000000..d2f0879
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/SubscriptionEntry.php
@@ -0,0 +1,105 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.SubscriptionEntry</code>
+ */
+class SubscriptionEntry extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ */
+ protected $topic = null;
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.FilterExpression expression = 2;</code>
+ */
+ protected $expression = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Resource $topic
+ * @type \Apache\Rocketmq\V2\FilterExpression $expression
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Definition::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ * @return \Apache\Rocketmq\V2\Resource|null
+ */
+ public function getTopic()
+ {
+ return $this->topic;
+ }
+
+ public function hasTopic()
+ {
+ return isset($this->topic);
+ }
+
+ public function clearTopic()
+ {
+ unset($this->topic);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Resource topic = 1;</code>
+ * @param \Apache\Rocketmq\V2\Resource $var
+ * @return $this
+ */
+ public function setTopic($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Resource::class);
+ $this->topic = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.FilterExpression expression = 2;</code>
+ * @return \Apache\Rocketmq\V2\FilterExpression|null
+ */
+ public function getExpression()
+ {
+ return $this->expression;
+ }
+
+ public function hasExpression()
+ {
+ return isset($this->expression);
+ }
+
+ public function clearExpression()
+ {
+ unset($this->expression);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.FilterExpression expression = 2;</code>
+ * @param \Apache\Rocketmq\V2\FilterExpression $var
+ * @return $this
+ */
+ public function setExpression($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\FilterExpression::class);
+ $this->expression = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/SystemProperties.php b/php/grpc/Apache/Rocketmq/V2/SystemProperties.php
new file mode 100644
index 0000000..0ceeab9
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/SystemProperties.php
@@ -0,0 +1,853 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.SystemProperties</code>
+ */
+class SystemProperties extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Tag, which is optional.
+ *
+ * Generated from protobuf field <code>optional string tag = 1;</code>
+ */
+ protected $tag = null;
+ /**
+ * Message keys
+ *
+ * Generated from protobuf field <code>repeated string keys = 2;</code>
+ */
+ private $keys;
+ /**
+ * Message identifier, client-side generated, remains unique.
+ * if message_id is empty, the send message request will be aborted with
+ * status `INVALID_ARGUMENT`
+ *
+ * Generated from protobuf field <code>string message_id = 3;</code>
+ */
+ protected $message_id = '';
+ /**
+ * Message body digest
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Digest body_digest = 4;</code>
+ */
+ protected $body_digest = null;
+ /**
+ * Message body encoding. Candidate options are identity, gzip, snappy etc.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Encoding body_encoding = 5;</code>
+ */
+ protected $body_encoding = 0;
+ /**
+ * Message type, normal, FIFO or transactional.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.MessageType message_type = 6;</code>
+ */
+ protected $message_type = 0;
+ /**
+ * Message born time-point.
+ *
+ * Generated from protobuf field <code>.google.protobuf.Timestamp born_timestamp = 7;</code>
+ */
+ protected $born_timestamp = null;
+ /**
+ * Message born host. Valid options are IPv4, IPv6 or client host domain name.
+ *
+ * Generated from protobuf field <code>string born_host = 8;</code>
+ */
+ protected $born_host = '';
+ /**
+ * Time-point at which the message is stored in the broker, which is absent
+ * for message publishing.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Timestamp store_timestamp = 9;</code>
+ */
+ protected $store_timestamp = null;
+ /**
+ * The broker that stores this message. It may be broker name, IP or arbitrary
+ * identifier that uniquely identify the server.
+ *
+ * Generated from protobuf field <code>string store_host = 10;</code>
+ */
+ protected $store_host = '';
+ /**
+ * Time-point at which broker delivers to clients, which is optional.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Timestamp delivery_timestamp = 11;</code>
+ */
+ protected $delivery_timestamp = null;
+ /**
+ * If a message is acquired by way of POP, this field holds the receipt,
+ * which is absent for message publishing.
+ * Clients use the receipt to acknowledge or negatively acknowledge the
+ * message.
+ *
+ * Generated from protobuf field <code>optional string receipt_handle = 12;</code>
+ */
+ protected $receipt_handle = null;
+ /**
+ * Message queue identifier in which a message is physically stored.
+ *
+ * Generated from protobuf field <code>int32 queue_id = 13;</code>
+ */
+ protected $queue_id = 0;
+ /**
+ * Message-queue offset at which a message is stored, which is absent for
+ * message publishing.
+ *
+ * Generated from protobuf field <code>optional int64 queue_offset = 14;</code>
+ */
+ protected $queue_offset = null;
+ /**
+ * Period of time servers would remain invisible once a message is acquired.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Duration invisible_duration = 15;</code>
+ */
+ protected $invisible_duration = null;
+ /**
+ * Business code may failed to process messages for the moment. Hence, clients
+ * may request servers to deliver them again using certain back-off strategy,
+ * the attempt is 1 not 0 if message is delivered first time, and it is absent
+ * for message publishing.
+ *
+ * Generated from protobuf field <code>optional int32 delivery_attempt = 16;</code>
+ */
+ protected $delivery_attempt = null;
+ /**
+ * Define the group name of message in the same topic, which is optional.
+ *
+ * Generated from protobuf field <code>optional string message_group = 17;</code>
+ */
+ protected $message_group = null;
+ /**
+ * Trace context for each message, which is optional.
+ *
+ * Generated from protobuf field <code>optional string trace_context = 18;</code>
+ */
+ protected $trace_context = null;
+ /**
+ * If a transactional message stay unresolved for more than
+ * `transaction_orphan_threshold`, it would be regarded as an
+ * orphan. Servers that manages orphan messages would pick up
+ * a capable publisher to resolve
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Duration orphaned_transaction_recovery_duration = 19;</code>
+ */
+ protected $orphaned_transaction_recovery_duration = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $tag
+ * Tag, which is optional.
+ * @type array<string>|\Google\Protobuf\Internal\RepeatedField $keys
+ * Message keys
+ * @type string $message_id
+ * Message identifier, client-side generated, remains unique.
+ * if message_id is empty, the send message request will be aborted with
+ * status `INVALID_ARGUMENT`
+ * @type \Apache\Rocketmq\V2\Digest $body_digest
+ * Message body digest
+ * @type int $body_encoding
+ * Message body encoding. Candidate options are identity, gzip, snappy etc.
+ * @type int $message_type
+ * Message type, normal, FIFO or transactional.
+ * @type \Google\Protobuf\Timestamp $born_timestamp
+ * Message born time-point.
+ * @type string $born_host
+ * Message born host. Valid options are IPv4, IPv6 or client host domain name.
+ * @type \Google\Protobuf\Timestamp $store_timestamp
+ * Time-point at which the message is stored in the broker, which is absent
+ * for message publishing.
+ * @type string $store_host
+ * The broker that stores this message. It may be broker name, IP or arbitrary
+ * identifier that uniquely identify the server.
+ * @type \Google\Protobuf\Timestamp $delivery_timestamp
+ * Time-point at which broker delivers to clients, which is optional.
+ * @type string $receipt_handle
+ * If a message is acquired by way of POP, this field holds the receipt,
+ * which is absent for message publishing.
+ * Clients use the receipt to acknowledge or negatively acknowledge the
+ * message.
+ * @type int $queue_id
+ * Message queue identifier in which a message is physically stored.
+ * @type int|string $queue_offset
+ * Message-queue offset at which a message is stored, which is absent for
+ * message publishing.
+ * @type \Google\Protobuf\Duration $invisible_duration
+ * Period of time servers would remain invisible once a message is acquired.
+ * @type int $delivery_attempt
+ * Business code may failed to process messages for the moment. Hence, clients
+ * may request servers to deliver them again using certain back-off strategy,
+ * the attempt is 1 not 0 if message is delivered first time, and it is absent
+ * for message publishing.
+ * @type string $message_group
+ * Define the group name of message in the same topic, which is optional.
+ * @type string $trace_context
+ * Trace context for each message, which is optional.
+ * @type \Google\Protobuf\Duration $orphaned_transaction_recovery_duration
+ * If a transactional message stay unresolved for more than
+ * `transaction_orphan_threshold`, it would be regarded as an
+ * orphan. Servers that manages orphan messages would pick up
+ * a capable publisher to resolve
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Definition::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Tag, which is optional.
+ *
+ * Generated from protobuf field <code>optional string tag = 1;</code>
+ * @return string
+ */
+ public function getTag()
+ {
+ return isset($this->tag) ? $this->tag : '';
+ }
+
+ public function hasTag()
+ {
+ return isset($this->tag);
+ }
+
+ public function clearTag()
+ {
+ unset($this->tag);
+ }
+
+ /**
+ * Tag, which is optional.
+ *
+ * Generated from protobuf field <code>optional string tag = 1;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setTag($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->tag = $var;
+
+ return $this;
+ }
+
+ /**
+ * Message keys
+ *
+ * Generated from protobuf field <code>repeated string keys = 2;</code>
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getKeys()
+ {
+ return $this->keys;
+ }
+
+ /**
+ * Message keys
+ *
+ * Generated from protobuf field <code>repeated string keys = 2;</code>
+ * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setKeys($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
+ $this->keys = $arr;
+
+ return $this;
+ }
+
+ /**
+ * Message identifier, client-side generated, remains unique.
+ * if message_id is empty, the send message request will be aborted with
+ * status `INVALID_ARGUMENT`
+ *
+ * Generated from protobuf field <code>string message_id = 3;</code>
+ * @return string
+ */
+ public function getMessageId()
+ {
+ return $this->message_id;
+ }
+
+ /**
+ * Message identifier, client-side generated, remains unique.
+ * if message_id is empty, the send message request will be aborted with
+ * status `INVALID_ARGUMENT`
+ *
+ * Generated from protobuf field <code>string message_id = 3;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setMessageId($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->message_id = $var;
+
+ return $this;
+ }
+
+ /**
+ * Message body digest
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Digest body_digest = 4;</code>
+ * @return \Apache\Rocketmq\V2\Digest|null
+ */
+ public function getBodyDigest()
+ {
+ return $this->body_digest;
+ }
+
+ public function hasBodyDigest()
+ {
+ return isset($this->body_digest);
+ }
+
+ public function clearBodyDigest()
+ {
+ unset($this->body_digest);
+ }
+
+ /**
+ * Message body digest
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Digest body_digest = 4;</code>
+ * @param \Apache\Rocketmq\V2\Digest $var
+ * @return $this
+ */
+ public function setBodyDigest($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Digest::class);
+ $this->body_digest = $var;
+
+ return $this;
+ }
+
+ /**
+ * Message body encoding. Candidate options are identity, gzip, snappy etc.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Encoding body_encoding = 5;</code>
+ * @return int
+ */
+ public function getBodyEncoding()
+ {
+ return $this->body_encoding;
+ }
+
+ /**
+ * Message body encoding. Candidate options are identity, gzip, snappy etc.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Encoding body_encoding = 5;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setBodyEncoding($var)
+ {
+ GPBUtil::checkEnum($var, \Apache\Rocketmq\V2\Encoding::class);
+ $this->body_encoding = $var;
+
+ return $this;
+ }
+
+ /**
+ * Message type, normal, FIFO or transactional.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.MessageType message_type = 6;</code>
+ * @return int
+ */
+ public function getMessageType()
+ {
+ return $this->message_type;
+ }
+
+ /**
+ * Message type, normal, FIFO or transactional.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.MessageType message_type = 6;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setMessageType($var)
+ {
+ GPBUtil::checkEnum($var, \Apache\Rocketmq\V2\MessageType::class);
+ $this->message_type = $var;
+
+ return $this;
+ }
+
+ /**
+ * Message born time-point.
+ *
+ * Generated from protobuf field <code>.google.protobuf.Timestamp born_timestamp = 7;</code>
+ * @return \Google\Protobuf\Timestamp|null
+ */
+ public function getBornTimestamp()
+ {
+ return $this->born_timestamp;
+ }
+
+ public function hasBornTimestamp()
+ {
+ return isset($this->born_timestamp);
+ }
+
+ public function clearBornTimestamp()
+ {
+ unset($this->born_timestamp);
+ }
+
+ /**
+ * Message born time-point.
+ *
+ * Generated from protobuf field <code>.google.protobuf.Timestamp born_timestamp = 7;</code>
+ * @param \Google\Protobuf\Timestamp $var
+ * @return $this
+ */
+ public function setBornTimestamp($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Timestamp::class);
+ $this->born_timestamp = $var;
+
+ return $this;
+ }
+
+ /**
+ * Message born host. Valid options are IPv4, IPv6 or client host domain name.
+ *
+ * Generated from protobuf field <code>string born_host = 8;</code>
+ * @return string
+ */
+ public function getBornHost()
+ {
+ return $this->born_host;
+ }
+
+ /**
+ * Message born host. Valid options are IPv4, IPv6 or client host domain name.
+ *
+ * Generated from protobuf field <code>string born_host = 8;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setBornHost($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->born_host = $var;
+
+ return $this;
+ }
+
+ /**
+ * Time-point at which the message is stored in the broker, which is absent
+ * for message publishing.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Timestamp store_timestamp = 9;</code>
+ * @return \Google\Protobuf\Timestamp|null
+ */
+ public function getStoreTimestamp()
+ {
+ return $this->store_timestamp;
+ }
+
+ public function hasStoreTimestamp()
+ {
+ return isset($this->store_timestamp);
+ }
+
+ public function clearStoreTimestamp()
+ {
+ unset($this->store_timestamp);
+ }
+
+ /**
+ * Time-point at which the message is stored in the broker, which is absent
+ * for message publishing.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Timestamp store_timestamp = 9;</code>
+ * @param \Google\Protobuf\Timestamp $var
+ * @return $this
+ */
+ public function setStoreTimestamp($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Timestamp::class);
+ $this->store_timestamp = $var;
+
+ return $this;
+ }
+
+ /**
+ * The broker that stores this message. It may be broker name, IP or arbitrary
+ * identifier that uniquely identify the server.
+ *
+ * Generated from protobuf field <code>string store_host = 10;</code>
+ * @return string
+ */
+ public function getStoreHost()
+ {
+ return $this->store_host;
+ }
+
+ /**
+ * The broker that stores this message. It may be broker name, IP or arbitrary
+ * identifier that uniquely identify the server.
+ *
+ * Generated from protobuf field <code>string store_host = 10;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setStoreHost($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->store_host = $var;
+
+ return $this;
+ }
+
+ /**
+ * Time-point at which broker delivers to clients, which is optional.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Timestamp delivery_timestamp = 11;</code>
+ * @return \Google\Protobuf\Timestamp|null
+ */
+ public function getDeliveryTimestamp()
+ {
+ return $this->delivery_timestamp;
+ }
+
+ public function hasDeliveryTimestamp()
+ {
+ return isset($this->delivery_timestamp);
+ }
+
+ public function clearDeliveryTimestamp()
+ {
+ unset($this->delivery_timestamp);
+ }
+
+ /**
+ * Time-point at which broker delivers to clients, which is optional.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Timestamp delivery_timestamp = 11;</code>
+ * @param \Google\Protobuf\Timestamp $var
+ * @return $this
+ */
+ public function setDeliveryTimestamp($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Timestamp::class);
+ $this->delivery_timestamp = $var;
+
+ return $this;
+ }
+
+ /**
+ * If a message is acquired by way of POP, this field holds the receipt,
+ * which is absent for message publishing.
+ * Clients use the receipt to acknowledge or negatively acknowledge the
+ * message.
+ *
+ * Generated from protobuf field <code>optional string receipt_handle = 12;</code>
+ * @return string
+ */
+ public function getReceiptHandle()
+ {
+ return isset($this->receipt_handle) ? $this->receipt_handle : '';
+ }
+
+ public function hasReceiptHandle()
+ {
+ return isset($this->receipt_handle);
+ }
+
+ public function clearReceiptHandle()
+ {
+ unset($this->receipt_handle);
+ }
+
+ /**
+ * If a message is acquired by way of POP, this field holds the receipt,
+ * which is absent for message publishing.
+ * Clients use the receipt to acknowledge or negatively acknowledge the
+ * message.
+ *
+ * Generated from protobuf field <code>optional string receipt_handle = 12;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setReceiptHandle($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->receipt_handle = $var;
+
+ return $this;
+ }
+
+ /**
+ * Message queue identifier in which a message is physically stored.
+ *
+ * Generated from protobuf field <code>int32 queue_id = 13;</code>
+ * @return int
+ */
+ public function getQueueId()
+ {
+ return $this->queue_id;
+ }
+
+ /**
+ * Message queue identifier in which a message is physically stored.
+ *
+ * Generated from protobuf field <code>int32 queue_id = 13;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setQueueId($var)
+ {
+ GPBUtil::checkInt32($var);
+ $this->queue_id = $var;
+
+ return $this;
+ }
+
+ /**
+ * Message-queue offset at which a message is stored, which is absent for
+ * message publishing.
+ *
+ * Generated from protobuf field <code>optional int64 queue_offset = 14;</code>
+ * @return int|string
+ */
+ public function getQueueOffset()
+ {
+ return isset($this->queue_offset) ? $this->queue_offset : 0;
+ }
+
+ public function hasQueueOffset()
+ {
+ return isset($this->queue_offset);
+ }
+
+ public function clearQueueOffset()
+ {
+ unset($this->queue_offset);
+ }
+
+ /**
+ * Message-queue offset at which a message is stored, which is absent for
+ * message publishing.
+ *
+ * Generated from protobuf field <code>optional int64 queue_offset = 14;</code>
+ * @param int|string $var
+ * @return $this
+ */
+ public function setQueueOffset($var)
+ {
+ GPBUtil::checkInt64($var);
+ $this->queue_offset = $var;
+
+ return $this;
+ }
+
+ /**
+ * Period of time servers would remain invisible once a message is acquired.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Duration invisible_duration = 15;</code>
+ * @return \Google\Protobuf\Duration|null
+ */
+ public function getInvisibleDuration()
+ {
+ return $this->invisible_duration;
+ }
+
+ public function hasInvisibleDuration()
+ {
+ return isset($this->invisible_duration);
+ }
+
+ public function clearInvisibleDuration()
+ {
+ unset($this->invisible_duration);
+ }
+
+ /**
+ * Period of time servers would remain invisible once a message is acquired.
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Duration invisible_duration = 15;</code>
+ * @param \Google\Protobuf\Duration $var
+ * @return $this
+ */
+ public function setInvisibleDuration($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Duration::class);
+ $this->invisible_duration = $var;
+
+ return $this;
+ }
+
+ /**
+ * Business code may failed to process messages for the moment. Hence, clients
+ * may request servers to deliver them again using certain back-off strategy,
+ * the attempt is 1 not 0 if message is delivered first time, and it is absent
+ * for message publishing.
+ *
+ * Generated from protobuf field <code>optional int32 delivery_attempt = 16;</code>
+ * @return int
+ */
+ public function getDeliveryAttempt()
+ {
+ return isset($this->delivery_attempt) ? $this->delivery_attempt : 0;
+ }
+
+ public function hasDeliveryAttempt()
+ {
+ return isset($this->delivery_attempt);
+ }
+
+ public function clearDeliveryAttempt()
+ {
+ unset($this->delivery_attempt);
+ }
+
+ /**
+ * Business code may failed to process messages for the moment. Hence, clients
+ * may request servers to deliver them again using certain back-off strategy,
+ * the attempt is 1 not 0 if message is delivered first time, and it is absent
+ * for message publishing.
+ *
+ * Generated from protobuf field <code>optional int32 delivery_attempt = 16;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setDeliveryAttempt($var)
+ {
+ GPBUtil::checkInt32($var);
+ $this->delivery_attempt = $var;
+
+ return $this;
+ }
+
+ /**
+ * Define the group name of message in the same topic, which is optional.
+ *
+ * Generated from protobuf field <code>optional string message_group = 17;</code>
+ * @return string
+ */
+ public function getMessageGroup()
+ {
+ return isset($this->message_group) ? $this->message_group : '';
+ }
+
+ public function hasMessageGroup()
+ {
+ return isset($this->message_group);
+ }
+
+ public function clearMessageGroup()
+ {
+ unset($this->message_group);
+ }
+
+ /**
+ * Define the group name of message in the same topic, which is optional.
+ *
+ * Generated from protobuf field <code>optional string message_group = 17;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setMessageGroup($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->message_group = $var;
+
+ return $this;
+ }
+
+ /**
+ * Trace context for each message, which is optional.
+ *
+ * Generated from protobuf field <code>optional string trace_context = 18;</code>
+ * @return string
+ */
+ public function getTraceContext()
+ {
+ return isset($this->trace_context) ? $this->trace_context : '';
+ }
+
+ public function hasTraceContext()
+ {
+ return isset($this->trace_context);
+ }
+
+ public function clearTraceContext()
+ {
+ unset($this->trace_context);
+ }
+
+ /**
+ * Trace context for each message, which is optional.
+ *
+ * Generated from protobuf field <code>optional string trace_context = 18;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setTraceContext($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->trace_context = $var;
+
+ return $this;
+ }
+
+ /**
+ * If a transactional message stay unresolved for more than
+ * `transaction_orphan_threshold`, it would be regarded as an
+ * orphan. Servers that manages orphan messages would pick up
+ * a capable publisher to resolve
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Duration orphaned_transaction_recovery_duration = 19;</code>
+ * @return \Google\Protobuf\Duration|null
+ */
+ public function getOrphanedTransactionRecoveryDuration()
+ {
+ return $this->orphaned_transaction_recovery_duration;
+ }
+
+ public function hasOrphanedTransactionRecoveryDuration()
+ {
+ return isset($this->orphaned_transaction_recovery_duration);
+ }
+
+ public function clearOrphanedTransactionRecoveryDuration()
+ {
+ unset($this->orphaned_transaction_recovery_duration);
+ }
+
+ /**
+ * If a transactional message stay unresolved for more than
+ * `transaction_orphan_threshold`, it would be regarded as an
+ * orphan. Servers that manages orphan messages would pick up
+ * a capable publisher to resolve
+ *
+ * Generated from protobuf field <code>optional .google.protobuf.Duration orphaned_transaction_recovery_duration = 19;</code>
+ * @param \Google\Protobuf\Duration $var
+ * @return $this
+ */
+ public function setOrphanedTransactionRecoveryDuration($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Duration::class);
+ $this->orphaned_transaction_recovery_duration = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/TelemetryCommand.php b/php/grpc/Apache/Rocketmq/V2/TelemetryCommand.php
new file mode 100644
index 0000000..2009ad2
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/TelemetryCommand.php
@@ -0,0 +1,281 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.TelemetryCommand</code>
+ */
+class TelemetryCommand extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Status status = 1;</code>
+ */
+ protected $status = null;
+ protected $command;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Apache\Rocketmq\V2\Status $status
+ * @type \Apache\Rocketmq\V2\Settings $settings
+ * Client settings
+ * @type \Apache\Rocketmq\V2\ThreadStackTrace $thread_stack_trace
+ * These messages are from client.
+ * Report thread stack trace to server.
+ * @type \Apache\Rocketmq\V2\VerifyMessageResult $verify_message_result
+ * Report message verify result to server.
+ * @type \Apache\Rocketmq\V2\RecoverOrphanedTransactionCommand $recover_orphaned_transaction_command
+ * There messages are from server.
+ * Request client to recover the orphaned transaction message.
+ * @type \Apache\Rocketmq\V2\PrintThreadStackTraceCommand $print_thread_stack_trace_command
+ * Request client to print thread stack trace.
+ * @type \Apache\Rocketmq\V2\VerifyMessageCommand $verify_message_command
+ * Request client to verify the consumption of the appointed message.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Status status = 1;</code>
+ * @return \Apache\Rocketmq\V2\Status|null
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+
+ public function hasStatus()
+ {
+ return isset($this->status);
+ }
+
+ public function clearStatus()
+ {
+ unset($this->status);
+ }
+
+ /**
+ * Generated from protobuf field <code>optional .apache.rocketmq.v2.Status status = 1;</code>
+ * @param \Apache\Rocketmq\V2\Status $var
+ * @return $this
+ */
+ public function setStatus($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Status::class);
+ $this->status = $var;
+
+ return $this;
+ }
+
+ /**
+ * Client settings
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Settings settings = 2;</code>
+ * @return \Apache\Rocketmq\V2\Settings|null
+ */
+ public function getSettings()
+ {
+ return $this->readOneof(2);
+ }
+
+ public function hasSettings()
+ {
+ return $this->hasOneof(2);
+ }
+
+ /**
+ * Client settings
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Settings settings = 2;</code>
+ * @param \Apache\Rocketmq\V2\Settings $var
+ * @return $this
+ */
+ public function setSettings($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Settings::class);
+ $this->writeOneof(2, $var);
+
+ return $this;
+ }
+
+ /**
+ * These messages are from client.
+ * Report thread stack trace to server.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.ThreadStackTrace thread_stack_trace = 3;</code>
+ * @return \Apache\Rocketmq\V2\ThreadStackTrace|null
+ */
+ public function getThreadStackTrace()
+ {
+ return $this->readOneof(3);
+ }
+
+ public function hasThreadStackTrace()
+ {
+ return $this->hasOneof(3);
+ }
+
+ /**
+ * These messages are from client.
+ * Report thread stack trace to server.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.ThreadStackTrace thread_stack_trace = 3;</code>
+ * @param \Apache\Rocketmq\V2\ThreadStackTrace $var
+ * @return $this
+ */
+ public function setThreadStackTrace($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\ThreadStackTrace::class);
+ $this->writeOneof(3, $var);
+
+ return $this;
+ }
+
+ /**
+ * Report message verify result to server.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.VerifyMessageResult verify_message_result = 4;</code>
+ * @return \Apache\Rocketmq\V2\VerifyMessageResult|null
+ */
+ public function getVerifyMessageResult()
+ {
+ return $this->readOneof(4);
+ }
+
+ public function hasVerifyMessageResult()
+ {
+ return $this->hasOneof(4);
+ }
+
+ /**
+ * Report message verify result to server.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.VerifyMessageResult verify_message_result = 4;</code>
+ * @param \Apache\Rocketmq\V2\VerifyMessageResult $var
+ * @return $this
+ */
+ public function setVerifyMessageResult($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\VerifyMessageResult::class);
+ $this->writeOneof(4, $var);
+
+ return $this;
+ }
+
+ /**
+ * There messages are from server.
+ * Request client to recover the orphaned transaction message.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.RecoverOrphanedTransactionCommand recover_orphaned_transaction_command = 5;</code>
+ * @return \Apache\Rocketmq\V2\RecoverOrphanedTransactionCommand|null
+ */
+ public function getRecoverOrphanedTransactionCommand()
+ {
+ return $this->readOneof(5);
+ }
+
+ public function hasRecoverOrphanedTransactionCommand()
+ {
+ return $this->hasOneof(5);
+ }
+
+ /**
+ * There messages are from server.
+ * Request client to recover the orphaned transaction message.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.RecoverOrphanedTransactionCommand recover_orphaned_transaction_command = 5;</code>
+ * @param \Apache\Rocketmq\V2\RecoverOrphanedTransactionCommand $var
+ * @return $this
+ */
+ public function setRecoverOrphanedTransactionCommand($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\RecoverOrphanedTransactionCommand::class);
+ $this->writeOneof(5, $var);
+
+ return $this;
+ }
+
+ /**
+ * Request client to print thread stack trace.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.PrintThreadStackTraceCommand print_thread_stack_trace_command = 6;</code>
+ * @return \Apache\Rocketmq\V2\PrintThreadStackTraceCommand|null
+ */
+ public function getPrintThreadStackTraceCommand()
+ {
+ return $this->readOneof(6);
+ }
+
+ public function hasPrintThreadStackTraceCommand()
+ {
+ return $this->hasOneof(6);
+ }
+
+ /**
+ * Request client to print thread stack trace.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.PrintThreadStackTraceCommand print_thread_stack_trace_command = 6;</code>
+ * @param \Apache\Rocketmq\V2\PrintThreadStackTraceCommand $var
+ * @return $this
+ */
+ public function setPrintThreadStackTraceCommand($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\PrintThreadStackTraceCommand::class);
+ $this->writeOneof(6, $var);
+
+ return $this;
+ }
+
+ /**
+ * Request client to verify the consumption of the appointed message.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.VerifyMessageCommand verify_message_command = 7;</code>
+ * @return \Apache\Rocketmq\V2\VerifyMessageCommand|null
+ */
+ public function getVerifyMessageCommand()
+ {
+ return $this->readOneof(7);
+ }
+
+ public function hasVerifyMessageCommand()
+ {
+ return $this->hasOneof(7);
+ }
+
+ /**
+ * Request client to verify the consumption of the appointed message.
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.VerifyMessageCommand verify_message_command = 7;</code>
+ * @param \Apache\Rocketmq\V2\VerifyMessageCommand $var
+ * @return $this
+ */
+ public function setVerifyMessageCommand($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\VerifyMessageCommand::class);
+ $this->writeOneof(7, $var);
+
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getCommand()
+ {
+ return $this->whichOneof("command");
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/ThreadStackTrace.php b/php/grpc/Apache/Rocketmq/V2/ThreadStackTrace.php
new file mode 100644
index 0000000..fc4395f
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/ThreadStackTrace.php
@@ -0,0 +1,95 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.ThreadStackTrace</code>
+ */
+class ThreadStackTrace extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>string nonce = 1;</code>
+ */
+ protected $nonce = '';
+ /**
+ * Generated from protobuf field <code>optional string thread_stack_trace = 2;</code>
+ */
+ protected $thread_stack_trace = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $nonce
+ * @type string $thread_stack_trace
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>string nonce = 1;</code>
+ * @return string
+ */
+ public function getNonce()
+ {
+ return $this->nonce;
+ }
+
+ /**
+ * Generated from protobuf field <code>string nonce = 1;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setNonce($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->nonce = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>optional string thread_stack_trace = 2;</code>
+ * @return string
+ */
+ public function getThreadStackTrace()
+ {
+ return isset($this->thread_stack_trace) ? $this->thread_stack_trace : '';
+ }
+
+ public function hasThreadStackTrace()
+ {
+ return isset($this->thread_stack_trace);
+ }
+
+ public function clearThreadStackTrace()
+ {
+ unset($this->thread_stack_trace);
+ }
+
+ /**
+ * Generated from protobuf field <code>optional string thread_stack_trace = 2;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setThreadStackTrace($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->thread_stack_trace = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/TransactionResolution.php b/php/grpc/Apache/Rocketmq/V2/TransactionResolution.php
new file mode 100644
index 0000000..f697fd6
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/TransactionResolution.php
@@ -0,0 +1,53 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use UnexpectedValueException;
+
+/**
+ * Protobuf type <code>apache.rocketmq.v2.TransactionResolution</code>
+ */
+class TransactionResolution
+{
+ /**
+ * Generated from protobuf enum <code>TRANSACTION_RESOLUTION_UNSPECIFIED = 0;</code>
+ */
+ const TRANSACTION_RESOLUTION_UNSPECIFIED = 0;
+ /**
+ * Generated from protobuf enum <code>COMMIT = 1;</code>
+ */
+ const COMMIT = 1;
+ /**
+ * Generated from protobuf enum <code>ROLLBACK = 2;</code>
+ */
+ const ROLLBACK = 2;
+
+ private static $valueToName = [
+ self::TRANSACTION_RESOLUTION_UNSPECIFIED => 'TRANSACTION_RESOLUTION_UNSPECIFIED',
+ self::COMMIT => 'COMMIT',
+ self::ROLLBACK => 'ROLLBACK',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/TransactionSource.php b/php/grpc/Apache/Rocketmq/V2/TransactionSource.php
new file mode 100644
index 0000000..ff1afae
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/TransactionSource.php
@@ -0,0 +1,53 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use UnexpectedValueException;
+
+/**
+ * Protobuf type <code>apache.rocketmq.v2.TransactionSource</code>
+ */
+class TransactionSource
+{
+ /**
+ * Generated from protobuf enum <code>SOURCE_UNSPECIFIED = 0;</code>
+ */
+ const SOURCE_UNSPECIFIED = 0;
+ /**
+ * Generated from protobuf enum <code>SOURCE_CLIENT = 1;</code>
+ */
+ const SOURCE_CLIENT = 1;
+ /**
+ * Generated from protobuf enum <code>SOURCE_SERVER_CHECK = 2;</code>
+ */
+ const SOURCE_SERVER_CHECK = 2;
+
+ private static $valueToName = [
+ self::SOURCE_UNSPECIFIED => 'SOURCE_UNSPECIFIED',
+ self::SOURCE_CLIENT => 'SOURCE_CLIENT',
+ self::SOURCE_SERVER_CHECK => 'SOURCE_SERVER_CHECK',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/UA.php b/php/grpc/Apache/Rocketmq/V2/UA.php
new file mode 100644
index 0000000..b1c184d
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/UA.php
@@ -0,0 +1,169 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/definition.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * User Agent
+ *
+ * Generated from protobuf message <code>apache.rocketmq.v2.UA</code>
+ */
+class UA extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * SDK language
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Language language = 1;</code>
+ */
+ protected $language = 0;
+ /**
+ * SDK version
+ *
+ * Generated from protobuf field <code>string version = 2;</code>
+ */
+ protected $version = '';
+ /**
+ * Platform details, including OS name, version, arch etc.
+ *
+ * Generated from protobuf field <code>string platform = 3;</code>
+ */
+ protected $platform = '';
+ /**
+ * Hostname of the node
+ *
+ * Generated from protobuf field <code>string hostname = 4;</code>
+ */
+ protected $hostname = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type int $language
+ * SDK language
+ * @type string $version
+ * SDK version
+ * @type string $platform
+ * Platform details, including OS name, version, arch etc.
+ * @type string $hostname
+ * Hostname of the node
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Definition::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * SDK language
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Language language = 1;</code>
+ * @return int
+ */
+ public function getLanguage()
+ {
+ return $this->language;
+ }
+
+ /**
+ * SDK language
+ *
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Language language = 1;</code>
+ * @param int $var
+ * @return $this
+ */
+ public function setLanguage($var)
+ {
+ GPBUtil::checkEnum($var, \Apache\Rocketmq\V2\Language::class);
+ $this->language = $var;
+
+ return $this;
+ }
+
+ /**
+ * SDK version
+ *
+ * Generated from protobuf field <code>string version = 2;</code>
+ * @return string
+ */
+ public function getVersion()
+ {
+ return $this->version;
+ }
+
+ /**
+ * SDK version
+ *
+ * Generated from protobuf field <code>string version = 2;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setVersion($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->version = $var;
+
+ return $this;
+ }
+
+ /**
+ * Platform details, including OS name, version, arch etc.
+ *
+ * Generated from protobuf field <code>string platform = 3;</code>
+ * @return string
+ */
+ public function getPlatform()
+ {
+ return $this->platform;
+ }
+
+ /**
+ * Platform details, including OS name, version, arch etc.
+ *
+ * Generated from protobuf field <code>string platform = 3;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setPlatform($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->platform = $var;
+
+ return $this;
+ }
+
+ /**
+ * Hostname of the node
+ *
+ * Generated from protobuf field <code>string hostname = 4;</code>
+ * @return string
+ */
+ public function getHostname()
+ {
+ return $this->hostname;
+ }
+
+ /**
+ * Hostname of the node
+ *
+ * Generated from protobuf field <code>string hostname = 4;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setHostname($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->hostname = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/VerifyMessageCommand.php b/php/grpc/Apache/Rocketmq/V2/VerifyMessageCommand.php
new file mode 100644
index 0000000..a1c4fdc
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/VerifyMessageCommand.php
@@ -0,0 +1,95 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.VerifyMessageCommand</code>
+ */
+class VerifyMessageCommand extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>string nonce = 1;</code>
+ */
+ protected $nonce = '';
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Message message = 2;</code>
+ */
+ protected $message = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $nonce
+ * @type \Apache\Rocketmq\V2\Message $message
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>string nonce = 1;</code>
+ * @return string
+ */
+ public function getNonce()
+ {
+ return $this->nonce;
+ }
+
+ /**
+ * Generated from protobuf field <code>string nonce = 1;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setNonce($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->nonce = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Message message = 2;</code>
+ * @return \Apache\Rocketmq\V2\Message|null
+ */
+ public function getMessage()
+ {
+ return $this->message;
+ }
+
+ public function hasMessage()
+ {
+ return isset($this->message);
+ }
+
+ public function clearMessage()
+ {
+ unset($this->message);
+ }
+
+ /**
+ * Generated from protobuf field <code>.apache.rocketmq.v2.Message message = 2;</code>
+ * @param \Apache\Rocketmq\V2\Message $var
+ * @return $this
+ */
+ public function setMessage($var)
+ {
+ GPBUtil::checkMessage($var, \Apache\Rocketmq\V2\Message::class);
+ $this->message = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/Apache/Rocketmq/V2/VerifyMessageResult.php b/php/grpc/Apache/Rocketmq/V2/VerifyMessageResult.php
new file mode 100644
index 0000000..c933c3e
--- /dev/null
+++ b/php/grpc/Apache/Rocketmq/V2/VerifyMessageResult.php
@@ -0,0 +1,58 @@
+<?php
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: apache/rocketmq/v2/service.proto
+
+namespace Apache\Rocketmq\V2;
+
+use Google\Protobuf\Internal\GPBType;
+use Google\Protobuf\Internal\RepeatedField;
+use Google\Protobuf\Internal\GPBUtil;
+
+/**
+ * Generated from protobuf message <code>apache.rocketmq.v2.VerifyMessageResult</code>
+ */
+class VerifyMessageResult extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field <code>string nonce = 1;</code>
+ */
+ protected $nonce = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $nonce
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Apache\Rocketmq\V2\Service::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field <code>string nonce = 1;</code>
+ * @return string
+ */
+ public function getNonce()
+ {
+ return $this->nonce;
+ }
+
+ /**
+ * Generated from protobuf field <code>string nonce = 1;</code>
+ * @param string $var
+ * @return $this
+ */
+ public function setNonce($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->nonce = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/php/grpc/GPBMetadata/Apache/Rocketmq/V2/Admin.php b/php/grpc/GPBMetadata/Apache/Rocketmq/V2/Admin.php
new file mode 100644
index 0000000..88c4a7c
Binary files /dev/null and b/php/grpc/GPBMetadata/Apache/Rocketmq/V2/Admin.php differ
diff --git a/php/grpc/GPBMetadata/Apache/Rocketmq/V2/Definition.php b/php/grpc/GPBMetadata/Apache/Rocketmq/V2/Definition.php
new file mode 100644
index 0000000..a987498
Binary files /dev/null and b/php/grpc/GPBMetadata/Apache/Rocketmq/V2/Definition.php differ
diff --git a/php/grpc/GPBMetadata/Apache/Rocketmq/V2/Service.php b/php/grpc/GPBMetadata/Apache/Rocketmq/V2/Service.php
new file mode 100644
index 0000000..ddd7ea2
Binary files /dev/null and b/php/grpc/GPBMetadata/Apache/Rocketmq/V2/Service.php differ
diff --git a/php/protocol/apache/rocketmq/v2/admin.proto b/php/protocol/apache/rocketmq/v2/admin.proto
new file mode 100644
index 0000000..7dbb702
--- /dev/null
+++ b/php/protocol/apache/rocketmq/v2/admin.proto
@@ -0,0 +1,43 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package apache.rocketmq.v2;
+
+option cc_enable_arenas = true;
+option csharp_namespace = "Apache.Rocketmq.V2";
+option java_multiple_files = true;
+option java_package = "apache.rocketmq.v2";
+option java_generate_equals_and_hash = true;
+option java_string_check_utf8 = true;
+option java_outer_classname = "MQAdmin";
+
+message ChangeLogLevelRequest {
+ enum Level {
+ TRACE = 0;
+ DEBUG = 1;
+ INFO = 2;
+ WARN = 3;
+ ERROR = 4;
+ }
+ Level level = 1;
+}
+
+message ChangeLogLevelResponse { string remark = 1; }
+
+service Admin {
+ rpc ChangeLogLevel(ChangeLogLevelRequest) returns (ChangeLogLevelResponse) {}
+}
\ No newline at end of file
diff --git a/php/protocol/apache/rocketmq/v2/definition.proto b/php/protocol/apache/rocketmq/v2/definition.proto
new file mode 100644
index 0000000..67e58b8
--- /dev/null
+++ b/php/protocol/apache/rocketmq/v2/definition.proto
@@ -0,0 +1,450 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+import "google/protobuf/timestamp.proto";
+import "google/protobuf/duration.proto";
+
+package apache.rocketmq.v2;
+
+option csharp_namespace = "Apache.Rocketmq.V2";
+option java_multiple_files = true;
+option java_package = "apache.rocketmq.v2";
+option java_generate_equals_and_hash = true;
+option java_string_check_utf8 = true;
+option java_outer_classname = "MQDomain";
+
+enum TransactionResolution {
+ TRANSACTION_RESOLUTION_UNSPECIFIED = 0;
+ COMMIT = 1;
+ ROLLBACK = 2;
+}
+
+enum TransactionSource {
+ SOURCE_UNSPECIFIED = 0;
+ SOURCE_CLIENT = 1;
+ SOURCE_SERVER_CHECK = 2;
+}
+
+enum Permission {
+ PERMISSION_UNSPECIFIED = 0;
+ NONE = 1;
+ READ = 2;
+ WRITE = 3;
+ READ_WRITE = 4;
+}
+
+enum FilterType {
+ FILTER_TYPE_UNSPECIFIED = 0;
+ TAG = 1;
+ SQL = 2;
+}
+
+message FilterExpression {
+ FilterType type = 1;
+ string expression = 2;
+}
+
+message RetryPolicy {
+ int32 max_attempts = 1;
+ oneof strategy {
+ ExponentialBackoff exponential_backoff = 2;
+ CustomizedBackoff customized_backoff = 3;
+ }
+}
+
+// https://en.wikipedia.org/wiki/Exponential_backoff
+message ExponentialBackoff {
+ google.protobuf.Duration initial = 1;
+ google.protobuf.Duration max = 2;
+ float multiplier = 3;
+}
+
+message CustomizedBackoff {
+ // To support classic backoff strategy which is arbitrary defined by end users.
+ // Typical values are: `1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h`
+ repeated google.protobuf.Duration next = 1;
+}
+
+message Resource {
+ string resource_namespace = 1;
+
+ // Resource name identifier, which remains unique within the abstract resource
+ // namespace.
+ string name = 2;
+}
+
+message SubscriptionEntry {
+ Resource topic = 1;
+ FilterExpression expression = 2;
+}
+
+enum AddressScheme {
+ ADDRESS_SCHEME_UNSPECIFIED = 0;
+ IPv4 = 1;
+ IPv6 = 2;
+ DOMAIN_NAME = 3;
+}
+
+message Address {
+ string host = 1;
+ int32 port = 2;
+}
+
+message Endpoints {
+ AddressScheme scheme = 1;
+ repeated Address addresses = 2;
+}
+
+message Broker {
+ // Name of the broker
+ string name = 1;
+
+ // Broker index. Canonically, index = 0 implies that the broker is playing
+ // leader role while brokers with index > 0 play follower role.
+ int32 id = 2;
+
+ // Address of the broker, complying with the following scheme
+ // 1. dns:[//authority/]host[:port]
+ // 2. ipv4:address[:port][,address[:port],...] – IPv4 addresses
+ // 3. ipv6:address[:port][,address[:port],...] – IPv6 addresses
+ Endpoints endpoints = 3;
+}
+
+message MessageQueue {
+ Resource topic = 1;
+ int32 id = 2;
+ Permission permission = 3;
+ Broker broker = 4;
+ repeated MessageType accept_message_types = 5;
+}
+
+enum MessageType {
+ MESSAGE_TYPE_UNSPECIFIED = 0;
+
+ NORMAL = 1;
+
+ // Sequenced message
+ FIFO = 2;
+
+ // Messages that are delivered after the specified duration.
+ DELAY = 3;
+
+ // Messages that are transactional. Only committed messages are delivered to
+ // subscribers.
+ TRANSACTION = 4;
+}
+
+enum DigestType {
+ DIGEST_TYPE_UNSPECIFIED = 0;
+
+ // CRC algorithm achieves goal of detecting random data error with lowest
+ // computation overhead.
+ CRC32 = 1;
+
+ // MD5 algorithm achieves good balance between collision rate and computation
+ // overhead.
+ MD5 = 2;
+
+ // SHA-family has substantially fewer collision with fair amount of
+ // computation.
+ SHA1 = 3;
+}
+
+// When publishing messages to or subscribing messages from brokers, clients
+// shall include or validate digests of message body to ensure data integrity.
+//
+// For message publishing, when an invalid digest were detected, brokers need
+// respond client with BAD_REQUEST.
+//
+// For messages subscription, when an invalid digest were detected, consumers
+// need to handle this case according to message type:
+// 1) Standard messages should be negatively acknowledged instantly, causing
+// immediate re-delivery; 2) FIFO messages require special RPC, to re-fetch
+// previously acquired messages batch;
+//
+// Message consumption model also affects how invalid digest are handled. When
+// messages are consumed in broadcasting way,
+// TODO: define semantics of invalid-digest-when-broadcasting.
+message Digest {
+ DigestType type = 1;
+ string checksum = 2;
+}
+
+enum ClientType {
+ CLIENT_TYPE_UNSPECIFIED = 0;
+ PRODUCER = 1;
+ PUSH_CONSUMER = 2;
+ SIMPLE_CONSUMER = 3;
+}
+
+enum Encoding {
+ ENCODING_UNSPECIFIED = 0;
+
+ IDENTITY = 1;
+
+ GZIP = 2;
+}
+
+message SystemProperties {
+ // Tag, which is optional.
+ optional string tag = 1;
+
+ // Message keys
+ repeated string keys = 2;
+
+ // Message identifier, client-side generated, remains unique.
+ // if message_id is empty, the send message request will be aborted with
+ // status `INVALID_ARGUMENT`
+ string message_id = 3;
+
+ // Message body digest
+ Digest body_digest = 4;
+
+ // Message body encoding. Candidate options are identity, gzip, snappy etc.
+ Encoding body_encoding = 5;
+
+ // Message type, normal, FIFO or transactional.
+ MessageType message_type = 6;
+
+ // Message born time-point.
+ google.protobuf.Timestamp born_timestamp = 7;
+
+ // Message born host. Valid options are IPv4, IPv6 or client host domain name.
+ string born_host = 8;
+
+ // Time-point at which the message is stored in the broker, which is absent
+ // for message publishing.
+ optional google.protobuf.Timestamp store_timestamp = 9;
+
+ // The broker that stores this message. It may be broker name, IP or arbitrary
+ // identifier that uniquely identify the server.
+ string store_host = 10;
+
+ // Time-point at which broker delivers to clients, which is optional.
+ optional google.protobuf.Timestamp delivery_timestamp = 11;
+
+ // If a message is acquired by way of POP, this field holds the receipt,
+ // which is absent for message publishing.
+ // Clients use the receipt to acknowledge or negatively acknowledge the
+ // message.
+ optional string receipt_handle = 12;
+
+ // Message queue identifier in which a message is physically stored.
+ int32 queue_id = 13;
+
+ // Message-queue offset at which a message is stored, which is absent for
+ // message publishing.
+ optional int64 queue_offset = 14;
+
+ // Period of time servers would remain invisible once a message is acquired.
+ optional google.protobuf.Duration invisible_duration = 15;
+
+ // Business code may failed to process messages for the moment. Hence, clients
+ // may request servers to deliver them again using certain back-off strategy,
+ // the attempt is 1 not 0 if message is delivered first time, and it is absent
+ // for message publishing.
+ optional int32 delivery_attempt = 16;
+
+ // Define the group name of message in the same topic, which is optional.
+ optional string message_group = 17;
+
+ // Trace context for each message, which is optional.
+ optional string trace_context = 18;
+
+ // If a transactional message stay unresolved for more than
+ // `transaction_orphan_threshold`, it would be regarded as an
+ // orphan. Servers that manages orphan messages would pick up
+ // a capable publisher to resolve
+ optional google.protobuf.Duration orphaned_transaction_recovery_duration = 19;
+}
+
+message Message {
+ Resource topic = 1;
+
+ // User defined key-value pairs.
+ // If user_properties contain the reserved keys by RocketMQ,
+ // the send message request will be aborted with status `INVALID_ARGUMENT`.
+ // See below links for the reserved keys
+ // https://github.com/apache/rocketmq/blob/master/common/src/main/java/org/apache/rocketmq/common/message/MessageConst.java#L58
+ map<string, string> user_properties = 2;
+
+ SystemProperties system_properties = 3;
+
+ bytes body = 4;
+}
+
+message Assignment {
+ MessageQueue message_queue = 1;
+}
+
+enum Code {
+ CODE_UNSPECIFIED = 0;
+
+ // Generic code for success.
+ OK = 20000;
+
+ // Generic code for multiple return results.
+ MULTIPLE_RESULTS = 30000;
+
+ // Generic code for bad request, indicating that required fields or headers are missing.
+ BAD_REQUEST = 40000;
+ // Format of access point is illegal.
+ ILLEGAL_ACCESS_POINT = 40001;
+ // Format of topic is illegal.
+ ILLEGAL_TOPIC = 40002;
+ // Format of consumer group is illegal.
+ ILLEGAL_CONSUMER_GROUP = 40003;
+ // Format of message tag is illegal.
+ ILLEGAL_MESSAGE_TAG = 40004;
+ // Format of message key is illegal.
+ ILLEGAL_MESSAGE_KEY = 40005;
+ // Format of message group is illegal.
+ ILLEGAL_MESSAGE_GROUP = 40006;
+ // Format of message property key is illegal.
+ ILLEGAL_MESSAGE_PROPERTY_KEY = 40007;
+ // Transaction id is invalid.
+ INVALID_TRANSACTION_ID = 40008;
+ // Format of message id is illegal.
+ ILLEGAL_MESSAGE_ID = 40009;
+ // Format of filter expression is illegal.
+ ILLEGAL_FILTER_EXPRESSION = 40010;
+ // The invisible time of request is invalid.
+ ILLEGAL_INVISIBLE_TIME = 40011;
+ // The delivery timestamp of message is invalid.
+ ILLEGAL_DELIVERY_TIME = 40012;
+ // Receipt handle of message is invalid.
+ INVALID_RECEIPT_HANDLE = 40013;
+ // Message property conflicts with its type.
+ MESSAGE_PROPERTY_CONFLICT_WITH_TYPE = 40014;
+ // Client type could not be recognized.
+ UNRECOGNIZED_CLIENT_TYPE = 40015;
+ // Message is corrupted.
+ MESSAGE_CORRUPTED = 40016;
+ // Request is rejected due to missing of x-mq-client-id header.
+ CLIENT_ID_REQUIRED = 40017;
+
+ // Generic code indicates that the client request lacks valid authentication
+ // credentials for the requested resource.
+ UNAUTHORIZED = 40100;
+
+ // Generic code indicates that the account is suspended due to overdue of payment.
+ PAYMENT_REQUIRED = 40200;
+
+ // Generic code for the case that user does not have the permission to operate.
+ FORBIDDEN = 40300;
+
+ // Generic code for resource not found.
+ NOT_FOUND = 40400;
+ // Message not found from server.
+ MESSAGE_NOT_FOUND = 40401;
+ // Topic resource does not exist.
+ TOPIC_NOT_FOUND = 40402;
+ // Consumer group resource does not exist.
+ CONSUMER_GROUP_NOT_FOUND = 40403;
+
+ // Generic code representing client side timeout when connecting to, reading data from, or write data to server.
+ REQUEST_TIMEOUT = 40800;
+
+ // Generic code represents that the request entity is larger than limits defined by server.
+ PAYLOAD_TOO_LARGE = 41300;
+ // Message body size exceeds the threshold.
+ MESSAGE_BODY_TOO_LARGE = 41301;
+
+ // Generic code for use cases where pre-conditions are not met.
+ // For example, if a producer instance is used to publish messages without prior start() invocation,
+ // this error code will be raised.
+ PRECONDITION_FAILED = 42800;
+
+ // Generic code indicates that too many requests are made in short period of duration.
+ // Requests are throttled.
+ TOO_MANY_REQUESTS = 42900;
+
+ // Generic code for the case that the server is unwilling to process the request because its header fields are too large.
+ // The request may be resubmitted after reducing the size of the request header fields.
+ REQUEST_HEADER_FIELDS_TOO_LARGE = 43100;
+ // Message properties total size exceeds the threshold.
+ MESSAGE_PROPERTIES_TOO_LARGE = 43101;
+
+ // Generic code indicates that server/client encountered an unexpected
+ // condition that prevented it from fulfilling the request.
+ INTERNAL_ERROR = 50000;
+ // Code indicates that the server encountered an unexpected condition
+ // that prevented it from fulfilling the request.
+ // This error response is a generic "catch-all" response.
+ // Usually, this indicates the server cannot find a better alternative
+ // error code to response. Sometimes, server administrators log error
+ // responses like the 500 status code with more details about the request
+ // to prevent the error from happening again in the future.
+ //
+ // See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
+ INTERNAL_SERVER_ERROR = 50001;
+ // The HA-mechanism is not working now.
+ HA_NOT_AVAILABLE = 50002;
+
+ // Generic code means that the server or client does not support the
+ // functionality required to fulfill the request.
+ NOT_IMPLEMENTED = 50100;
+
+ // Generic code represents that the server, which acts as a gateway or proxy,
+ // does not get an satisfied response in time from its upstream servers.
+ // See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504
+ PROXY_TIMEOUT = 50400;
+ // Message persistence timeout.
+ MASTER_PERSISTENCE_TIMEOUT = 50401;
+ // Slave persistence timeout.
+ SLAVE_PERSISTENCE_TIMEOUT = 50402;
+
+ // Generic code for unsupported operation.
+ UNSUPPORTED = 50500;
+ // Operation is not allowed in current version.
+ VERSION_UNSUPPORTED = 50501;
+ // Not allowed to verify message. Chances are that you are verifying
+ // a FIFO message, as is violating FIFO semantics.
+ VERIFY_FIFO_MESSAGE_UNSUPPORTED = 50502;
+
+ // Generic code for failed message consumption.
+ FAILED_TO_CONSUME_MESSAGE = 60000;
+}
+
+message Status {
+ Code code = 1;
+ string message = 2;
+}
+
+enum Language {
+ LANGUAGE_UNSPECIFIED = 0;
+ JAVA = 1;
+ CPP = 2;
+ DOT_NET = 3;
+ GOLANG = 4;
+ RUST = 5;
+}
+
+// User Agent
+message UA {
+ // SDK language
+ Language language = 1;
+
+ // SDK version
+ string version = 2;
+
+ // Platform details, including OS name, version, arch etc.
+ string platform = 3;
+
+ // Hostname of the node
+ string hostname = 4;
+}
\ No newline at end of file
diff --git a/php/protocol/apache/rocketmq/v2/service.proto b/php/protocol/apache/rocketmq/v2/service.proto
new file mode 100644
index 0000000..42bf332
--- /dev/null
+++ b/php/protocol/apache/rocketmq/v2/service.proto
@@ -0,0 +1,455 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+import "google/protobuf/duration.proto";
+import "google/protobuf/timestamp.proto";
+
+import "apache/rocketmq/v2/definition.proto";
+
+package apache.rocketmq.v2;
+
+option csharp_namespace = "Apache.Rocketmq.V2";
+option java_multiple_files = true;
+option java_package = "apache.rocketmq.v2";
+option java_generate_equals_and_hash = true;
+option java_string_check_utf8 = true;
+option java_outer_classname = "MQService";
+
+// Topics are destination of messages to publish to or subscribe from. Similar
+// to domain names, they will be addressable after resolution through the
+// provided access point.
+//
+// Access points are usually the addresses of name servers, which fulfill
+// service discovery, load-balancing and other auxiliary services. Name servers
+// receive periodic heartbeats from affiliate brokers and erase those which
+// failed to maintain alive status.
+//
+// Name servers answer queries of QueryRouteRequest, responding clients with
+// addressable message-queues, which they may directly publish messages to or
+// subscribe messages from.
+//
+// QueryRouteRequest shall include source endpoints, aka, configured
+// access-point, which annotates tenant-id, instance-id or other
+// vendor-specific settings. Purpose-built name servers may respond customized
+// results based on these particular requirements.
+message QueryRouteRequest {
+ Resource topic = 1;
+ Endpoints endpoints = 2;
+}
+
+message QueryRouteResponse {
+ Status status = 1;
+
+ repeated MessageQueue message_queues = 2;
+}
+
+message SendMessageRequest {
+ repeated Message messages = 1;
+}
+
+message SendResultEntry {
+ Status status = 1;
+ string message_id = 2;
+ string transaction_id = 3;
+ int64 offset = 4;
+}
+
+message SendMessageResponse {
+ Status status = 1;
+
+ // Some implementation may have partial failure issues. Client SDK developers are expected to inspect
+ // each entry for best certainty.
+ repeated SendResultEntry entries = 2;
+}
+
+message QueryAssignmentRequest {
+ Resource topic = 1;
+ Resource group = 2;
+ Endpoints endpoints = 3;
+}
+
+message QueryAssignmentResponse {
+ Status status = 1;
+ repeated Assignment assignments = 2;
+}
+
+message ReceiveMessageRequest {
+ Resource group = 1;
+ MessageQueue message_queue = 2;
+ FilterExpression filter_expression = 3;
+ int32 batch_size = 4;
+ // Required if client type is simple consumer.
+ optional google.protobuf.Duration invisible_duration = 5;
+ // For message auto renew and clean
+ bool auto_renew = 6;
+}
+
+message ReceiveMessageResponse {
+ oneof content {
+ Status status = 1;
+ Message message = 2;
+ // The timestamp that brokers start to deliver status line or message.
+ google.protobuf.Timestamp delivery_timestamp = 3;
+ }
+}
+
+message AckMessageEntry {
+ string message_id = 1;
+ string receipt_handle = 2;
+}
+
+message AckMessageRequest {
+ Resource group = 1;
+ Resource topic = 2;
+ repeated AckMessageEntry entries = 3;
+}
+
+message AckMessageResultEntry {
+ string message_id = 1;
+ string receipt_handle = 2;
+
+ // Acknowledge result may be acquired through inspecting
+ // `status.code`; In case acknowledgement failed, `status.message`
+ // is the explanation of the failure.
+ Status status = 3;
+}
+
+message AckMessageResponse {
+ // RPC tier status, which is used to represent RPC-level errors including
+ // authentication, authorization, throttling and other general failures.
+ Status status = 1;
+
+ repeated AckMessageResultEntry entries = 2;
+}
+
+message ForwardMessageToDeadLetterQueueRequest {
+ Resource group = 1;
+ Resource topic = 2;
+ string receipt_handle = 3;
+ string message_id = 4;
+ int32 delivery_attempt = 5;
+ int32 max_delivery_attempts = 6;
+}
+
+message ForwardMessageToDeadLetterQueueResponse {
+ Status status = 1;
+}
+
+message HeartbeatRequest {
+ optional Resource group = 1;
+ ClientType client_type = 2;
+}
+
+message HeartbeatResponse {
+ Status status = 1;
+}
+
+message EndTransactionRequest {
+ Resource topic = 1;
+ string message_id = 2;
+ string transaction_id = 3;
+ TransactionResolution resolution = 4;
+ TransactionSource source = 5;
+ string trace_context = 6;
+}
+
+message EndTransactionResponse {
+ Status status = 1;
+}
+
+message PrintThreadStackTraceCommand {
+ string nonce = 1;
+}
+
+message ThreadStackTrace {
+ string nonce = 1;
+ optional string thread_stack_trace = 2;
+}
+
+message VerifyMessageCommand {
+ string nonce = 1;
+ Message message = 2;
+}
+
+message VerifyMessageResult {
+ string nonce = 1;
+}
+
+message RecoverOrphanedTransactionCommand {
+ Message message = 1;
+ string transaction_id = 2;
+}
+
+message Publishing {
+ // Publishing settings below here is appointed by client, thus it is
+ // unnecessary for server to push at present.
+ //
+ // List of topics to which messages will publish to.
+ repeated Resource topics = 1;
+
+ // If the message body size exceeds `max_body_size`, broker servers would
+ // reject the request. As a result, it is advisable that Producer performs
+ // client-side check validation.
+ int32 max_body_size = 2;
+
+ // When `validate_message_type` flag set `false`, no need to validate message's type
+ // with messageQueue's `accept_message_types` before publising.
+ bool validate_message_type = 3;
+}
+
+message Subscription {
+ // Subscription settings below here is appointed by client, thus it is
+ // unnecessary for server to push at present.
+ //
+ // Consumer group.
+ optional Resource group = 1;
+
+ // Subscription for consumer.
+ repeated SubscriptionEntry subscriptions = 2;
+
+ // Subscription settings below here are from server, it is essential for
+ // server to push.
+ //
+ // When FIFO flag is `true`, messages of the same message group are processed
+ // in first-in-first-out manner.
+ //
+ // Brokers will not deliver further messages of the same group utill prior
+ // ones are completely acknowledged.
+ optional bool fifo = 3;
+
+ // Message receive batch size here is essential for push consumer.
+ optional int32 receive_batch_size = 4;
+
+ // Long-polling timeout for `ReceiveMessageRequest`, which is essential for
+ // push consumer.
+ optional google.protobuf.Duration long_polling_timeout = 5;
+}
+
+message Metric {
+ // Indicates that if client should export local metrics to server.
+ bool on = 1;
+
+ // The endpoint that client metrics should be exported to, which is required if the switch is on.
+ optional Endpoints endpoints = 2;
+}
+
+message Settings {
+ // Configurations for all clients.
+ optional ClientType client_type = 1;
+
+ optional Endpoints access_point = 2;
+
+ // If publishing of messages encounters throttling or server internal errors,
+ // publishers should implement automatic retries after progressive longer
+ // back-offs for consecutive errors.
+ //
+ // When processing message fails, `backoff_policy` describes an interval
+ // after which the message should be available 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.
+ optional RetryPolicy backoff_policy = 3;
+
+ // Request timeout for RPCs excluding long-polling.
+ optional google.protobuf.Duration request_timeout = 4;
+
+ oneof pub_sub {
+ Publishing publishing = 5;
+
+ Subscription subscription = 6;
+ }
+
+ // User agent details
+ UA user_agent = 7;
+
+ Metric metric = 8;
+}
+
+message TelemetryCommand {
+ optional Status status = 1;
+
+ oneof command {
+ // Client settings
+ Settings settings = 2;
+
+ // These messages are from client.
+ //
+ // Report thread stack trace to server.
+ ThreadStackTrace thread_stack_trace = 3;
+
+ // Report message verify result to server.
+ VerifyMessageResult verify_message_result = 4;
+
+ // There messages are from server.
+ //
+ // Request client to recover the orphaned transaction message.
+ RecoverOrphanedTransactionCommand recover_orphaned_transaction_command = 5;
+
+ // Request client to print thread stack trace.
+ PrintThreadStackTraceCommand print_thread_stack_trace_command = 6;
+
+ // Request client to verify the consumption of the appointed message.
+ VerifyMessageCommand verify_message_command = 7;
+ }
+}
+
+message NotifyClientTerminationRequest {
+ // Consumer group, which is absent for producer.
+ optional Resource group = 1;
+}
+
+message NotifyClientTerminationResponse {
+ Status status = 1;
+}
+
+message ChangeInvisibleDurationRequest {
+ Resource group = 1;
+ Resource topic = 2;
+
+ // Unique receipt handle to identify message to change
+ string receipt_handle = 3;
+
+ // New invisible duration
+ google.protobuf.Duration invisible_duration = 4;
+
+ // For message tracing
+ string message_id = 5;
+}
+
+message ChangeInvisibleDurationResponse {
+ Status status = 1;
+
+ // Server may generate a new receipt handle for the message.
+ string receipt_handle = 2;
+}
+
+// For all the RPCs in MessagingService, the following error handling policies
+// apply:
+//
+// If the request doesn't bear a valid authentication credential, return a
+// response with common.status.code == `UNAUTHENTICATED`. If the authenticated
+// user is not granted with sufficient permission to execute the requested
+// operation, return a response with common.status.code == `PERMISSION_DENIED`.
+// If the per-user-resource-based quota is exhausted, return a response with
+// common.status.code == `RESOURCE_EXHAUSTED`. If any unexpected server-side
+// errors raise, return a response with common.status.code == `INTERNAL`.
+service MessagingService {
+ // Queries the route entries of the requested topic in the perspective of the
+ // given endpoints. On success, servers should return a collection of
+ // addressable message-queues. Note servers may return customized route
+ // entries based on endpoints provided.
+ //
+ // If the requested topic doesn't exist, returns `NOT_FOUND`.
+ // If the specific endpoints is empty, returns `INVALID_ARGUMENT`.
+ rpc QueryRoute(QueryRouteRequest) returns (QueryRouteResponse) {
+ }
+
+ // Producer or consumer sends HeartbeatRequest to servers periodically to
+ // keep-alive. Additionally, it also reports client-side configuration,
+ // including topic subscription, load-balancing group name, etc.
+ //
+ // Returns `OK` if success.
+ //
+ // If a client specifies a language that is not yet supported by servers,
... 88 lines suppressed ...