This is an automated email from the ASF dual-hosted git repository.
yukon 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 d1e47f34 fix(rust): pre-built proto files (#493)
d1e47f34 is described below
commit d1e47f348f240d8fcf5f09dd2d71a7de91400db9
Author: SSpirits <[email protected]>
AuthorDate: Sun Apr 23 20:29:37 2023 +0800
fix(rust): pre-built proto files (#493)
* fix(rust): pre-built proto files
* fix(rust): fix code style
* fix(rust): fix license
* fix(rust): fix setting env for windows
---
.github/workflows/rust_build.yml | 39 +-
.github/workflows/rust_coverage.yaml | 6 -
.gitignore | 1 -
.licenserc.yaml | 3 +-
rust/{Cargo.minimal.lock => .cargo/Cargo.lock.min} | 0
rust/Cargo.toml | 4 +-
rust/README.md | 4 +-
rust/build.rs | 8 +-
rust/src/pb/README.md | 5 -
rust/src/pb/apache.rocketmq.v2.rs | 2169 ++++++++++++++++++++
10 files changed, 2195 insertions(+), 44 deletions(-)
diff --git a/.github/workflows/rust_build.yml b/.github/workflows/rust_build.yml
index fd647f15..404c2104 100644
--- a/.github/workflows/rust_build.yml
+++ b/.github/workflows/rust_build.yml
@@ -2,9 +2,9 @@ name: Rust Build
on:
workflow_call:
jobs:
- fmt-check:
+ fmt:
runs-on: ubuntu-latest
- name: fmt
+ name: code style check
steps:
- uses: actions/checkout@v3
with:
@@ -17,9 +17,9 @@ jobs:
- name: Code format check
working-directory: ./rust
run: cargo fmt --check
- clippy-check:
+ clippy:
runs-on: ubuntu-latest
- name: clippy
+ name: clippy check
permissions: write-all
strategy:
fail-fast: false
@@ -32,19 +32,14 @@ jobs:
with:
toolchain: stable
components: clippy
- - name: Install protoc
- uses: arduino/setup-protoc@v1
- with:
- version: '3.x'
- repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Clippy check
uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --all-features --manifest-path rust/Cargo.toml -- -D warnings
- doc-check:
+ doc:
runs-on: ubuntu-latest
- name: doc
+ name: doc check
steps:
- uses: actions/checkout@v3
with:
@@ -53,22 +48,17 @@ jobs:
uses: actions-rs/toolchain@v1
with:
toolchain: stable
- - name: Install protoc
- uses: arduino/setup-protoc@v1
- with:
- version: '3.x'
- repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Build doc
working-directory: ./rust
run: cargo doc --no-deps --all-features
env:
RUSTDOCFLAGS: --cfg docsrs
- msrv-check:
+ msrv:
runs-on: ubuntu-latest
strategy:
matrix:
msrv: [1.61]
- name: msrv / ${{ matrix.msrv }}
+ name: msrv ${{ matrix.msrv }} check
steps:
- uses: actions/checkout@v3
with:
@@ -77,18 +67,13 @@ jobs:
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.msrv }}
- - name: Install protoc
- uses: arduino/setup-protoc@v1
- with:
- version: '3.x'
- repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Check MSRV ${{ matrix.msrv }}
working-directory: ./rust
- run: cp Cargo.minimal.lock Cargo.lock && cargo +${{ matrix.msrv }}
check --locked
+ run: cp .cargo/Cargo.lock.min Cargo.lock && cargo fetch && cargo +${{
matrix.msrv }} check --locked --frozen
build:
name: "${{ matrix.os }}"
runs-on: ${{ matrix.os }}
- needs: [fmt-check, msrv-check]
+ needs: [fmt, msrv]
defaults:
run:
working-directory: ./rust
@@ -110,6 +95,8 @@ jobs:
version: '3.x'
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Build
- run: cargo build
+ env:
+ BUILD_PROTO: true
+ run: rm src/pb/*.rs && cargo build
- name: Unit Test
run: cargo test -- --nocapture
\ No newline at end of file
diff --git a/.github/workflows/rust_coverage.yaml
b/.github/workflows/rust_coverage.yaml
index 9d840818..85cbebd0 100644
--- a/.github/workflows/rust_coverage.yaml
+++ b/.github/workflows/rust_coverage.yaml
@@ -22,12 +22,6 @@ jobs:
toolchain: stable
override: true
- - name: Install Protoc
- uses: arduino/setup-protoc@v1
- with:
- version: '3.x'
- repo-token: ${{ secrets.GITHUB_TOKEN }}
-
- name: Install cargo-llvm-cov
uses: actions-rs/cargo@v1
with:
diff --git a/.gitignore b/.gitignore
index d0df1cae..6383e081 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,7 +36,6 @@ csharp/rocketmq-client.sln.DotSettings.user
# Rust
rust/target
rust/Cargo.lock
-rust/src/pb/*.rs
# PHP
composer.phar
diff --git a/.licenserc.yaml b/.licenserc.yaml
index e42d614b..9e97dead 100644
--- a/.licenserc.yaml
+++ b/.licenserc.yaml
@@ -50,6 +50,7 @@ header:
- 'cpp/cmake'
- 'php/grpc/**/*.php'
- 'php/composer.json'
- - 'rust/Cargo.minimal.lock'
+ - 'rust/.cargo/Cargo.lock.min'
+ - 'rust/src/pb/*.rs'
comment: on-failure
diff --git a/rust/Cargo.minimal.lock b/rust/.cargo/Cargo.lock.min
similarity index 100%
rename from rust/Cargo.minimal.lock
rename to rust/.cargo/Cargo.lock.min
diff --git a/rust/Cargo.toml b/rust/Cargo.toml
index fc84e0d8..80c06fe2 100644
--- a/rust/Cargo.toml
+++ b/rust/Cargo.toml
@@ -16,7 +16,7 @@
#
[package]
name = "rocketmq"
-version = "0.1.0"
+version = "0.1.1"
edition = "2021"
rust-version = "1.61"
authors = [
@@ -24,7 +24,7 @@ authors = [
"Zhanhui Li <[email protected]>",
]
-license = "MIT/Apache-2.0"
+license = "Apache-2.0"
readme = "./README.md"
repository = "https://github.com/apache/rocketmq-clients/tree/master/rust"
documentation = "https://docs.rs/rocketmq"
diff --git a/rust/README.md b/rust/README.md
index 2a2e6968..77931b2f 100644
--- a/rust/README.md
+++ b/rust/README.md
@@ -45,5 +45,5 @@ cargo run --example simple_consumer
[codecov-url]: https://app.codecov.io/gh/apache/rocketmq-clients
[crates-image]: https://img.shields.io/crates/v/rocketmq.svg
[crates-url]: https://crates.io/crates/rocketmq
-[rust-doc-image]: https://docs.rs/rocketmq/badge.svg
-[rust-doc-url]: https://img.shields.io/crates/v/rocketmq.svg
+[rust-doc-image]: https://img.shields.io/crates/v/rocketmq.svg
+[rust-doc-url]: https://docs.rs/rocketmq
diff --git a/rust/build.rs b/rust/build.rs
index 41efaabf..90a42557 100644
--- a/rust/build.rs
+++ b/rust/build.rs
@@ -14,13 +14,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-use regex::Regex;
use std::path::PathBuf;
use std::process::Command;
use std::{env, str};
+
+use regex::Regex;
use version_check::Version;
fn main() {
+ let build_proto = env::var("BUILD_PROTO");
+ if build_proto.is_err() {
+ return;
+ }
+
check_protoc_version();
tonic_build::configure()
diff --git a/rust/src/pb/README.md b/rust/src/pb/README.md
deleted file mode 100644
index e198bf0b..00000000
--- a/rust/src/pb/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-## Note
---------------------------------------------------------
-Files in this directory are generated tonic_build crate.
-
-**DO NOT EDIT THEM!**
\ No newline at end of file
diff --git a/rust/src/pb/apache.rocketmq.v2.rs
b/rust/src/pb/apache.rocketmq.v2.rs
new file mode 100644
index 00000000..2483e5d5
--- /dev/null
+++ b/rust/src/pb/apache.rocketmq.v2.rs
@@ -0,0 +1,2169 @@
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct FilterExpression {
+ #[prost(enumeration = "FilterType", tag = "1")]
+ pub r#type: i32,
+ #[prost(string, tag = "2")]
+ pub expression: ::prost::alloc::string::String,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct RetryPolicy {
+ #[prost(int32, tag = "1")]
+ pub max_attempts: i32,
+ #[prost(oneof = "retry_policy::Strategy", tags = "2, 3")]
+ pub strategy: ::core::option::Option<retry_policy::Strategy>,
+}
+/// Nested message and enum types in `RetryPolicy`.
+pub mod retry_policy {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+ #[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum Strategy {
+ #[prost(message, tag = "2")]
+ ExponentialBackoff(super::ExponentialBackoff),
+ #[prost(message, tag = "3")]
+ CustomizedBackoff(super::CustomizedBackoff),
+ }
+}
+/// <https://en.wikipedia.org/wiki/Exponential_backoff>
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ExponentialBackoff {
+ #[prost(message, optional, tag = "1")]
+ pub initial: ::core::option::Option<::prost_types::Duration>,
+ #[prost(message, optional, tag = "2")]
+ pub max: ::core::option::Option<::prost_types::Duration>,
+ #[prost(float, tag = "3")]
+ pub multiplier: f32,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct 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`
+ #[prost(message, repeated, tag = "1")]
+ pub next: ::prost::alloc::vec::Vec<::prost_types::Duration>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Resource {
+ #[prost(string, tag = "1")]
+ pub resource_namespace: ::prost::alloc::string::String,
+ /// Resource name identifier, which remains unique within the abstract
resource
+ /// namespace.
+ #[prost(string, tag = "2")]
+ pub name: ::prost::alloc::string::String,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct SubscriptionEntry {
+ #[prost(message, optional, tag = "1")]
+ pub topic: ::core::option::Option<Resource>,
+ #[prost(message, optional, tag = "2")]
+ pub expression: ::core::option::Option<FilterExpression>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Address {
+ #[prost(string, tag = "1")]
+ pub host: ::prost::alloc::string::String,
+ #[prost(int32, tag = "2")]
+ pub port: i32,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Endpoints {
+ #[prost(enumeration = "AddressScheme", tag = "1")]
+ pub scheme: i32,
+ #[prost(message, repeated, tag = "2")]
+ pub addresses: ::prost::alloc::vec::Vec<Address>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Broker {
+ /// Name of the broker
+ #[prost(string, tag = "1")]
+ pub name: ::prost::alloc::string::String,
+ /// Broker index. Canonically, index = 0 implies that the broker is playing
+ /// leader role while brokers with index > 0 play follower role.
+ #[prost(int32, tag = "2")]
+ pub id: i32,
+ /// 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
+ #[prost(message, optional, tag = "3")]
+ pub endpoints: ::core::option::Option<Endpoints>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct MessageQueue {
+ #[prost(message, optional, tag = "1")]
+ pub topic: ::core::option::Option<Resource>,
+ #[prost(int32, tag = "2")]
+ pub id: i32,
+ #[prost(enumeration = "Permission", tag = "3")]
+ pub permission: i32,
+ #[prost(message, optional, tag = "4")]
+ pub broker: ::core::option::Option<Broker>,
+ #[prost(enumeration = "MessageType", repeated, tag = "5")]
+ pub accept_message_types: ::prost::alloc::vec::Vec<i32>,
+}
+/// 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;
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Digest {
+ #[prost(enumeration = "DigestType", tag = "1")]
+ pub r#type: i32,
+ #[prost(string, tag = "2")]
+ pub checksum: ::prost::alloc::string::String,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct SystemProperties {
+ /// Tag, which is optional.
+ #[prost(string, optional, tag = "1")]
+ pub tag: ::core::option::Option<::prost::alloc::string::String>,
+ /// Message keys
+ #[prost(string, repeated, tag = "2")]
+ pub keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
+ /// Message identifier, client-side generated, remains unique.
+ /// if message_id is empty, the send message request will be aborted with
+ /// status `INVALID_ARGUMENT`
+ #[prost(string, tag = "3")]
+ pub message_id: ::prost::alloc::string::String,
+ /// Message body digest
+ #[prost(message, optional, tag = "4")]
+ pub body_digest: ::core::option::Option<Digest>,
+ /// Message body encoding. Candidate options are identity, gzip, snappy
etc.
+ #[prost(enumeration = "Encoding", tag = "5")]
+ pub body_encoding: i32,
+ /// Message type, normal, FIFO or transactional.
+ #[prost(enumeration = "MessageType", tag = "6")]
+ pub message_type: i32,
+ /// Message born time-point.
+ #[prost(message, optional, tag = "7")]
+ pub born_timestamp: ::core::option::Option<::prost_types::Timestamp>,
+ /// Message born host. Valid options are IPv4, IPv6 or client host domain
name.
+ #[prost(string, tag = "8")]
+ pub born_host: ::prost::alloc::string::String,
+ /// Time-point at which the message is stored in the broker, which is
absent
+ /// for message publishing.
+ #[prost(message, optional, tag = "9")]
+ pub store_timestamp: ::core::option::Option<::prost_types::Timestamp>,
+ /// The broker that stores this message. It may be broker name, IP or
arbitrary
+ /// identifier that uniquely identify the server.
+ #[prost(string, tag = "10")]
+ pub store_host: ::prost::alloc::string::String,
+ /// Time-point at which broker delivers to clients, which is optional.
+ #[prost(message, optional, tag = "11")]
+ pub delivery_timestamp: ::core::option::Option<::prost_types::Timestamp>,
+ /// 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.
+ #[prost(string, optional, tag = "12")]
+ pub receipt_handle: ::core::option::Option<::prost::alloc::string::String>,
+ /// Message queue identifier in which a message is physically stored.
+ #[prost(int32, tag = "13")]
+ pub queue_id: i32,
+ /// Message-queue offset at which a message is stored, which is absent for
+ /// message publishing.
+ #[prost(int64, optional, tag = "14")]
+ pub queue_offset: ::core::option::Option<i64>,
+ /// Period of time servers would remain invisible once a message is
acquired.
+ #[prost(message, optional, tag = "15")]
+ pub invisible_duration: ::core::option::Option<::prost_types::Duration>,
+ /// 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.
+ #[prost(int32, optional, tag = "16")]
+ pub delivery_attempt: ::core::option::Option<i32>,
+ /// Define the group name of message in the same topic, which is optional.
+ #[prost(string, optional, tag = "17")]
+ pub message_group: ::core::option::Option<::prost::alloc::string::String>,
+ /// Trace context for each message, which is optional.
+ #[prost(string, optional, tag = "18")]
+ pub trace_context: ::core::option::Option<::prost::alloc::string::String>,
+ /// 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
+ #[prost(message, optional, tag = "19")]
+ pub orphaned_transaction_recovery_duration: ::core::option::Option<
+ ::prost_types::Duration,
+ >,
+ /// Information to identify whether this message is from dead letter queue.
+ #[prost(message, optional, tag = "20")]
+ pub dead_letter_queue: ::core::option::Option<DeadLetterQueue>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct DeadLetterQueue {
+ /// Original topic for this DLQ message.
+ #[prost(string, tag = "1")]
+ pub topic: ::prost::alloc::string::String,
+ /// Original message id for this DLQ message.
+ #[prost(string, tag = "2")]
+ pub message_id: ::prost::alloc::string::String,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Message {
+ #[prost(message, optional, tag = "1")]
+ pub topic: ::core::option::Option<Resource>,
+ /// 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>
+ #[prost(map = "string, string", tag = "2")]
+ pub user_properties: ::std::collections::HashMap<
+ ::prost::alloc::string::String,
+ ::prost::alloc::string::String,
+ >,
+ #[prost(message, optional, tag = "3")]
+ pub system_properties: ::core::option::Option<SystemProperties>,
+ #[prost(bytes = "vec", tag = "4")]
+ pub body: ::prost::alloc::vec::Vec<u8>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Assignment {
+ #[prost(message, optional, tag = "1")]
+ pub message_queue: ::core::option::Option<MessageQueue>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Status {
+ #[prost(enumeration = "Code", tag = "1")]
+ pub code: i32,
+ #[prost(string, tag = "2")]
+ pub message: ::prost::alloc::string::String,
+}
+/// User Agent
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Ua {
+ /// SDK language
+ #[prost(enumeration = "Language", tag = "1")]
+ pub language: i32,
+ /// SDK version
+ #[prost(string, tag = "2")]
+ pub version: ::prost::alloc::string::String,
+ /// Platform details, including OS name, version, arch etc.
+ #[prost(string, tag = "3")]
+ pub platform: ::prost::alloc::string::String,
+ /// Hostname of the node
+ #[prost(string, tag = "4")]
+ pub hostname: ::prost::alloc::string::String,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Settings {
+ /// Configurations for all clients.
+ #[prost(enumeration = "ClientType", optional, tag = "1")]
+ pub client_type: ::core::option::Option<i32>,
+ #[prost(message, optional, tag = "2")]
+ pub access_point: ::core::option::Option<Endpoints>,
+ /// 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 until
+ /// the prior one depletes its lifecycle.
+ #[prost(message, optional, tag = "3")]
+ pub backoff_policy: ::core::option::Option<RetryPolicy>,
+ /// Request timeout for RPCs excluding long-polling.
+ #[prost(message, optional, tag = "4")]
+ pub request_timeout: ::core::option::Option<::prost_types::Duration>,
+ /// User agent details
+ #[prost(message, optional, tag = "7")]
+ pub user_agent: ::core::option::Option<Ua>,
+ #[prost(message, optional, tag = "8")]
+ pub metric: ::core::option::Option<Metric>,
+ #[prost(oneof = "settings::PubSub", tags = "5, 6")]
+ pub pub_sub: ::core::option::Option<settings::PubSub>,
+}
+/// Nested message and enum types in `Settings`.
+pub mod settings {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+ #[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum PubSub {
+ #[prost(message, tag = "5")]
+ Publishing(super::Publishing),
+ #[prost(message, tag = "6")]
+ Subscription(super::Subscription),
+ }
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct 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.
+ #[prost(message, repeated, tag = "1")]
+ pub topics: ::prost::alloc::vec::Vec<Resource>,
+ /// 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.
+ #[prost(int32, tag = "2")]
+ pub max_body_size: i32,
+ /// When `validate_message_type` flag set `false`, no need to validate
message's type
+ /// with messageQueue's `accept_message_types` before publishing.
+ #[prost(bool, tag = "3")]
+ pub validate_message_type: bool,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Subscription {
+ /// Subscription settings below here is appointed by client, thus it is
+ /// unnecessary for server to push at present.
+ ///
+ /// Consumer group.
+ #[prost(message, optional, tag = "1")]
+ pub group: ::core::option::Option<Resource>,
+ /// Subscription for consumer.
+ #[prost(message, repeated, tag = "2")]
+ pub subscriptions: ::prost::alloc::vec::Vec<SubscriptionEntry>,
+ /// 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 until prior
+ /// ones are completely acknowledged.
+ #[prost(bool, optional, tag = "3")]
+ pub fifo: ::core::option::Option<bool>,
+ /// Message receive batch size here is essential for push consumer.
+ #[prost(int32, optional, tag = "4")]
+ pub receive_batch_size: ::core::option::Option<i32>,
+ /// Long-polling timeout for `ReceiveMessageRequest`, which is essential
for
+ /// push consumer.
+ #[prost(message, optional, tag = "5")]
+ pub long_polling_timeout: ::core::option::Option<::prost_types::Duration>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Metric {
+ /// Indicates that if client should export local metrics to server.
+ #[prost(bool, tag = "1")]
+ pub on: bool,
+ /// The endpoint that client metrics should be exported to, which is
required if the switch is on.
+ #[prost(message, optional, tag = "2")]
+ pub endpoints: ::core::option::Option<Endpoints>,
+}
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord,
::prost::Enumeration)]
+#[repr(i32)]
+pub enum TransactionResolution {
+ Unspecified = 0,
+ Commit = 1,
+ Rollback = 2,
+}
+impl TransactionResolution {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered
stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic
use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ TransactionResolution::Unspecified =>
"TRANSACTION_RESOLUTION_UNSPECIFIED",
+ TransactionResolution::Commit => "COMMIT",
+ TransactionResolution::Rollback => "ROLLBACK",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "TRANSACTION_RESOLUTION_UNSPECIFIED" => Some(Self::Unspecified),
+ "COMMIT" => Some(Self::Commit),
+ "ROLLBACK" => Some(Self::Rollback),
+ _ => None,
+ }
+ }
+}
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord,
::prost::Enumeration)]
+#[repr(i32)]
+pub enum TransactionSource {
+ SourceUnspecified = 0,
+ SourceClient = 1,
+ SourceServerCheck = 2,
+}
+impl TransactionSource {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered
stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic
use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ TransactionSource::SourceUnspecified => "SOURCE_UNSPECIFIED",
+ TransactionSource::SourceClient => "SOURCE_CLIENT",
+ TransactionSource::SourceServerCheck => "SOURCE_SERVER_CHECK",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "SOURCE_UNSPECIFIED" => Some(Self::SourceUnspecified),
+ "SOURCE_CLIENT" => Some(Self::SourceClient),
+ "SOURCE_SERVER_CHECK" => Some(Self::SourceServerCheck),
+ _ => None,
+ }
+ }
+}
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord,
::prost::Enumeration)]
+#[repr(i32)]
+pub enum Permission {
+ Unspecified = 0,
+ None = 1,
+ Read = 2,
+ Write = 3,
+ ReadWrite = 4,
+}
+impl Permission {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered
stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic
use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ Permission::Unspecified => "PERMISSION_UNSPECIFIED",
+ Permission::None => "NONE",
+ Permission::Read => "READ",
+ Permission::Write => "WRITE",
+ Permission::ReadWrite => "READ_WRITE",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "PERMISSION_UNSPECIFIED" => Some(Self::Unspecified),
+ "NONE" => Some(Self::None),
+ "READ" => Some(Self::Read),
+ "WRITE" => Some(Self::Write),
+ "READ_WRITE" => Some(Self::ReadWrite),
+ _ => None,
+ }
+ }
+}
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord,
::prost::Enumeration)]
+#[repr(i32)]
+pub enum FilterType {
+ Unspecified = 0,
+ Tag = 1,
+ Sql = 2,
+}
+impl FilterType {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered
stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic
use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ FilterType::Unspecified => "FILTER_TYPE_UNSPECIFIED",
+ FilterType::Tag => "TAG",
+ FilterType::Sql => "SQL",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "FILTER_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
+ "TAG" => Some(Self::Tag),
+ "SQL" => Some(Self::Sql),
+ _ => None,
+ }
+ }
+}
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord,
::prost::Enumeration)]
+#[repr(i32)]
+pub enum AddressScheme {
+ Unspecified = 0,
+ IPv4 = 1,
+ IPv6 = 2,
+ DomainName = 3,
+}
+impl AddressScheme {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered
stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic
use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ AddressScheme::Unspecified => "ADDRESS_SCHEME_UNSPECIFIED",
+ AddressScheme::IPv4 => "IPv4",
+ AddressScheme::IPv6 => "IPv6",
+ AddressScheme::DomainName => "DOMAIN_NAME",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "ADDRESS_SCHEME_UNSPECIFIED" => Some(Self::Unspecified),
+ "IPv4" => Some(Self::IPv4),
+ "IPv6" => Some(Self::IPv6),
+ "DOMAIN_NAME" => Some(Self::DomainName),
+ _ => None,
+ }
+ }
+}
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord,
::prost::Enumeration)]
+#[repr(i32)]
+pub enum MessageType {
+ 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,
+}
+impl MessageType {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered
stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic
use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ MessageType::Unspecified => "MESSAGE_TYPE_UNSPECIFIED",
+ MessageType::Normal => "NORMAL",
+ MessageType::Fifo => "FIFO",
+ MessageType::Delay => "DELAY",
+ MessageType::Transaction => "TRANSACTION",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "MESSAGE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
+ "NORMAL" => Some(Self::Normal),
+ "FIFO" => Some(Self::Fifo),
+ "DELAY" => Some(Self::Delay),
+ "TRANSACTION" => Some(Self::Transaction),
+ _ => None,
+ }
+ }
+}
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord,
::prost::Enumeration)]
+#[repr(i32)]
+pub enum DigestType {
+ 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,
+}
+impl DigestType {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered
stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic
use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ DigestType::Unspecified => "DIGEST_TYPE_UNSPECIFIED",
+ DigestType::Crc32 => "CRC32",
+ DigestType::Md5 => "MD5",
+ DigestType::Sha1 => "SHA1",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "DIGEST_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
+ "CRC32" => Some(Self::Crc32),
+ "MD5" => Some(Self::Md5),
+ "SHA1" => Some(Self::Sha1),
+ _ => None,
+ }
+ }
+}
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord,
::prost::Enumeration)]
+#[repr(i32)]
+pub enum ClientType {
+ Unspecified = 0,
+ Producer = 1,
+ PushConsumer = 2,
+ SimpleConsumer = 3,
+ PullConsumer = 4,
+}
+impl ClientType {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered
stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic
use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ ClientType::Unspecified => "CLIENT_TYPE_UNSPECIFIED",
+ ClientType::Producer => "PRODUCER",
+ ClientType::PushConsumer => "PUSH_CONSUMER",
+ ClientType::SimpleConsumer => "SIMPLE_CONSUMER",
+ ClientType::PullConsumer => "PULL_CONSUMER",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "CLIENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
+ "PRODUCER" => Some(Self::Producer),
+ "PUSH_CONSUMER" => Some(Self::PushConsumer),
+ "SIMPLE_CONSUMER" => Some(Self::SimpleConsumer),
+ "PULL_CONSUMER" => Some(Self::PullConsumer),
+ _ => None,
+ }
+ }
+}
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord,
::prost::Enumeration)]
+#[repr(i32)]
+pub enum Encoding {
+ Unspecified = 0,
+ Identity = 1,
+ Gzip = 2,
+}
+impl Encoding {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered
stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic
use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ Encoding::Unspecified => "ENCODING_UNSPECIFIED",
+ Encoding::Identity => "IDENTITY",
+ Encoding::Gzip => "GZIP",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "ENCODING_UNSPECIFIED" => Some(Self::Unspecified),
+ "IDENTITY" => Some(Self::Identity),
+ "GZIP" => Some(Self::Gzip),
+ _ => None,
+ }
+ }
+}
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord,
::prost::Enumeration)]
+#[repr(i32)]
+pub enum Code {
+ Unspecified = 0,
+ /// Generic code for success.
+ Ok = 20000,
+ /// Generic code for multiple return results.
+ MultipleResults = 30000,
+ /// Generic code for bad request, indicating that required fields or
headers are missing.
+ BadRequest = 40000,
+ /// Format of access point is illegal.
+ IllegalAccessPoint = 40001,
+ /// Format of topic is illegal.
+ IllegalTopic = 40002,
+ /// Format of consumer group is illegal.
+ IllegalConsumerGroup = 40003,
+ /// Format of message tag is illegal.
+ IllegalMessageTag = 40004,
+ /// Format of message key is illegal.
+ IllegalMessageKey = 40005,
+ /// Format of message group is illegal.
+ IllegalMessageGroup = 40006,
+ /// Format of message property key is illegal.
+ IllegalMessagePropertyKey = 40007,
+ /// Transaction id is invalid.
+ InvalidTransactionId = 40008,
+ /// Format of message id is illegal.
+ IllegalMessageId = 40009,
+ /// Format of filter expression is illegal.
+ IllegalFilterExpression = 40010,
+ /// The invisible time of request is invalid.
+ IllegalInvisibleTime = 40011,
+ /// The delivery timestamp of message is invalid.
+ IllegalDeliveryTime = 40012,
+ /// Receipt handle of message is invalid.
+ InvalidReceiptHandle = 40013,
+ /// Message property conflicts with its type.
+ MessagePropertyConflictWithType = 40014,
+ /// Client type could not be recognized.
+ UnrecognizedClientType = 40015,
+ /// Message is corrupted.
+ MessageCorrupted = 40016,
+ /// Request is rejected due to missing of x-mq-client-id header.
+ ClientIdRequired = 40017,
+ /// Polling time is illegal.
+ IllegalPollingTime = 40018,
+ /// 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.
+ PaymentRequired = 40200,
+ /// Generic code for the case that user does not have the permission to
operate.
+ Forbidden = 40300,
+ /// Generic code for resource not found.
+ NotFound = 40400,
+ /// Message not found from server.
+ MessageNotFound = 40401,
+ /// Topic resource does not exist.
+ TopicNotFound = 40402,
+ /// Consumer group resource does not exist.
+ ConsumerGroupNotFound = 40403,
+ /// Generic code representing client side timeout when connecting to,
reading data from, or write data to server.
+ RequestTimeout = 40800,
+ /// Generic code represents that the request entity is larger than limits
defined by server.
+ PayloadTooLarge = 41300,
+ /// Message body size exceeds the threshold.
+ MessageBodyTooLarge = 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.
+ PreconditionFailed = 42800,
+ /// Generic code indicates that too many requests are made in short period
of duration.
+ /// Requests are throttled.
+ TooManyRequests = 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.
+ RequestHeaderFieldsTooLarge = 43100,
+ /// Message properties total size exceeds the threshold.
+ MessagePropertiesTooLarge = 43101,
+ /// Generic code indicates that server/client encountered an unexpected
+ /// condition that prevented it from fulfilling the request.
+ InternalError = 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>
+ InternalServerError = 50001,
+ /// The HA-mechanism is not working now.
+ HaNotAvailable = 50002,
+ /// Generic code means that the server or client does not support the
+ /// functionality required to fulfill the request.
+ NotImplemented = 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>
+ ProxyTimeout = 50400,
+ /// Message persistence timeout.
+ MasterPersistenceTimeout = 50401,
+ /// Slave persistence timeout.
+ SlavePersistenceTimeout = 50402,
+ /// Generic code for unsupported operation.
+ Unsupported = 50500,
+ /// Operation is not allowed in current version.
+ VersionUnsupported = 50501,
+ /// Not allowed to verify message. Chances are that you are verifying
+ /// a FIFO message, as is violating FIFO semantics.
+ VerifyFifoMessageUnsupported = 50502,
+ /// Generic code for failed message consumption.
+ FailedToConsumeMessage = 60000,
+}
+impl Code {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered
stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic
use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ Code::Unspecified => "CODE_UNSPECIFIED",
+ Code::Ok => "OK",
+ Code::MultipleResults => "MULTIPLE_RESULTS",
+ Code::BadRequest => "BAD_REQUEST",
+ Code::IllegalAccessPoint => "ILLEGAL_ACCESS_POINT",
+ Code::IllegalTopic => "ILLEGAL_TOPIC",
+ Code::IllegalConsumerGroup => "ILLEGAL_CONSUMER_GROUP",
+ Code::IllegalMessageTag => "ILLEGAL_MESSAGE_TAG",
+ Code::IllegalMessageKey => "ILLEGAL_MESSAGE_KEY",
+ Code::IllegalMessageGroup => "ILLEGAL_MESSAGE_GROUP",
+ Code::IllegalMessagePropertyKey => "ILLEGAL_MESSAGE_PROPERTY_KEY",
+ Code::InvalidTransactionId => "INVALID_TRANSACTION_ID",
+ Code::IllegalMessageId => "ILLEGAL_MESSAGE_ID",
+ Code::IllegalFilterExpression => "ILLEGAL_FILTER_EXPRESSION",
+ Code::IllegalInvisibleTime => "ILLEGAL_INVISIBLE_TIME",
+ Code::IllegalDeliveryTime => "ILLEGAL_DELIVERY_TIME",
+ Code::InvalidReceiptHandle => "INVALID_RECEIPT_HANDLE",
+ Code::MessagePropertyConflictWithType => {
+ "MESSAGE_PROPERTY_CONFLICT_WITH_TYPE"
+ }
+ Code::UnrecognizedClientType => "UNRECOGNIZED_CLIENT_TYPE",
+ Code::MessageCorrupted => "MESSAGE_CORRUPTED",
+ Code::ClientIdRequired => "CLIENT_ID_REQUIRED",
+ Code::IllegalPollingTime => "ILLEGAL_POLLING_TIME",
+ Code::Unauthorized => "UNAUTHORIZED",
+ Code::PaymentRequired => "PAYMENT_REQUIRED",
+ Code::Forbidden => "FORBIDDEN",
+ Code::NotFound => "NOT_FOUND",
+ Code::MessageNotFound => "MESSAGE_NOT_FOUND",
+ Code::TopicNotFound => "TOPIC_NOT_FOUND",
+ Code::ConsumerGroupNotFound => "CONSUMER_GROUP_NOT_FOUND",
+ Code::RequestTimeout => "REQUEST_TIMEOUT",
+ Code::PayloadTooLarge => "PAYLOAD_TOO_LARGE",
+ Code::MessageBodyTooLarge => "MESSAGE_BODY_TOO_LARGE",
+ Code::PreconditionFailed => "PRECONDITION_FAILED",
+ Code::TooManyRequests => "TOO_MANY_REQUESTS",
+ Code::RequestHeaderFieldsTooLarge =>
"REQUEST_HEADER_FIELDS_TOO_LARGE",
+ Code::MessagePropertiesTooLarge => "MESSAGE_PROPERTIES_TOO_LARGE",
+ Code::InternalError => "INTERNAL_ERROR",
+ Code::InternalServerError => "INTERNAL_SERVER_ERROR",
+ Code::HaNotAvailable => "HA_NOT_AVAILABLE",
+ Code::NotImplemented => "NOT_IMPLEMENTED",
+ Code::ProxyTimeout => "PROXY_TIMEOUT",
+ Code::MasterPersistenceTimeout => "MASTER_PERSISTENCE_TIMEOUT",
+ Code::SlavePersistenceTimeout => "SLAVE_PERSISTENCE_TIMEOUT",
+ Code::Unsupported => "UNSUPPORTED",
+ Code::VersionUnsupported => "VERSION_UNSUPPORTED",
+ Code::VerifyFifoMessageUnsupported =>
"VERIFY_FIFO_MESSAGE_UNSUPPORTED",
+ Code::FailedToConsumeMessage => "FAILED_TO_CONSUME_MESSAGE",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "CODE_UNSPECIFIED" => Some(Self::Unspecified),
+ "OK" => Some(Self::Ok),
+ "MULTIPLE_RESULTS" => Some(Self::MultipleResults),
+ "BAD_REQUEST" => Some(Self::BadRequest),
+ "ILLEGAL_ACCESS_POINT" => Some(Self::IllegalAccessPoint),
+ "ILLEGAL_TOPIC" => Some(Self::IllegalTopic),
+ "ILLEGAL_CONSUMER_GROUP" => Some(Self::IllegalConsumerGroup),
+ "ILLEGAL_MESSAGE_TAG" => Some(Self::IllegalMessageTag),
+ "ILLEGAL_MESSAGE_KEY" => Some(Self::IllegalMessageKey),
+ "ILLEGAL_MESSAGE_GROUP" => Some(Self::IllegalMessageGroup),
+ "ILLEGAL_MESSAGE_PROPERTY_KEY" =>
Some(Self::IllegalMessagePropertyKey),
+ "INVALID_TRANSACTION_ID" => Some(Self::InvalidTransactionId),
+ "ILLEGAL_MESSAGE_ID" => Some(Self::IllegalMessageId),
+ "ILLEGAL_FILTER_EXPRESSION" => Some(Self::IllegalFilterExpression),
+ "ILLEGAL_INVISIBLE_TIME" => Some(Self::IllegalInvisibleTime),
+ "ILLEGAL_DELIVERY_TIME" => Some(Self::IllegalDeliveryTime),
+ "INVALID_RECEIPT_HANDLE" => Some(Self::InvalidReceiptHandle),
+ "MESSAGE_PROPERTY_CONFLICT_WITH_TYPE" => {
+ Some(Self::MessagePropertyConflictWithType)
+ }
+ "UNRECOGNIZED_CLIENT_TYPE" => Some(Self::UnrecognizedClientType),
+ "MESSAGE_CORRUPTED" => Some(Self::MessageCorrupted),
+ "CLIENT_ID_REQUIRED" => Some(Self::ClientIdRequired),
+ "ILLEGAL_POLLING_TIME" => Some(Self::IllegalPollingTime),
+ "UNAUTHORIZED" => Some(Self::Unauthorized),
+ "PAYMENT_REQUIRED" => Some(Self::PaymentRequired),
+ "FORBIDDEN" => Some(Self::Forbidden),
+ "NOT_FOUND" => Some(Self::NotFound),
+ "MESSAGE_NOT_FOUND" => Some(Self::MessageNotFound),
+ "TOPIC_NOT_FOUND" => Some(Self::TopicNotFound),
+ "CONSUMER_GROUP_NOT_FOUND" => Some(Self::ConsumerGroupNotFound),
+ "REQUEST_TIMEOUT" => Some(Self::RequestTimeout),
+ "PAYLOAD_TOO_LARGE" => Some(Self::PayloadTooLarge),
+ "MESSAGE_BODY_TOO_LARGE" => Some(Self::MessageBodyTooLarge),
+ "PRECONDITION_FAILED" => Some(Self::PreconditionFailed),
+ "TOO_MANY_REQUESTS" => Some(Self::TooManyRequests),
+ "REQUEST_HEADER_FIELDS_TOO_LARGE" =>
Some(Self::RequestHeaderFieldsTooLarge),
+ "MESSAGE_PROPERTIES_TOO_LARGE" =>
Some(Self::MessagePropertiesTooLarge),
+ "INTERNAL_ERROR" => Some(Self::InternalError),
+ "INTERNAL_SERVER_ERROR" => Some(Self::InternalServerError),
+ "HA_NOT_AVAILABLE" => Some(Self::HaNotAvailable),
+ "NOT_IMPLEMENTED" => Some(Self::NotImplemented),
+ "PROXY_TIMEOUT" => Some(Self::ProxyTimeout),
+ "MASTER_PERSISTENCE_TIMEOUT" =>
Some(Self::MasterPersistenceTimeout),
+ "SLAVE_PERSISTENCE_TIMEOUT" => Some(Self::SlavePersistenceTimeout),
+ "UNSUPPORTED" => Some(Self::Unsupported),
+ "VERSION_UNSUPPORTED" => Some(Self::VersionUnsupported),
+ "VERIFY_FIFO_MESSAGE_UNSUPPORTED" =>
Some(Self::VerifyFifoMessageUnsupported),
+ "FAILED_TO_CONSUME_MESSAGE" => Some(Self::FailedToConsumeMessage),
+ _ => None,
+ }
+ }
+}
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord,
::prost::Enumeration)]
+#[repr(i32)]
+pub enum Language {
+ Unspecified = 0,
+ Java = 1,
+ Cpp = 2,
+ DotNet = 3,
+ Golang = 4,
+ Rust = 5,
+ Python = 6,
+ Php = 7,
+ NodeJs = 8,
+ Ruby = 9,
+ ObjectiveC = 10,
+ Dart = 11,
+ Kotlin = 12,
+}
+impl Language {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered
stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic
use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ Language::Unspecified => "LANGUAGE_UNSPECIFIED",
+ Language::Java => "JAVA",
+ Language::Cpp => "CPP",
+ Language::DotNet => "DOT_NET",
+ Language::Golang => "GOLANG",
+ Language::Rust => "RUST",
+ Language::Python => "PYTHON",
+ Language::Php => "PHP",
+ Language::NodeJs => "NODE_JS",
+ Language::Ruby => "RUBY",
+ Language::ObjectiveC => "OBJECTIVE_C",
+ Language::Dart => "DART",
+ Language::Kotlin => "KOTLIN",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "LANGUAGE_UNSPECIFIED" => Some(Self::Unspecified),
+ "JAVA" => Some(Self::Java),
+ "CPP" => Some(Self::Cpp),
+ "DOT_NET" => Some(Self::DotNet),
+ "GOLANG" => Some(Self::Golang),
+ "RUST" => Some(Self::Rust),
+ "PYTHON" => Some(Self::Python),
+ "PHP" => Some(Self::Php),
+ "NODE_JS" => Some(Self::NodeJs),
+ "RUBY" => Some(Self::Ruby),
+ "OBJECTIVE_C" => Some(Self::ObjectiveC),
+ "DART" => Some(Self::Dart),
+ "KOTLIN" => Some(Self::Kotlin),
+ _ => None,
+ }
+ }
+}
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord,
::prost::Enumeration)]
+#[repr(i32)]
+pub enum QueryOffsetPolicy {
+ /// Use this option if client wishes to playback all existing messages.
+ Beginning = 0,
+ /// Use this option if client wishes to skip all existing messages.
+ End = 1,
+ /// Use this option if time-based seek is targeted.
+ Timestamp = 2,
+}
+impl QueryOffsetPolicy {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered
stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic
use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ QueryOffsetPolicy::Beginning => "BEGINNING",
+ QueryOffsetPolicy::End => "END",
+ QueryOffsetPolicy::Timestamp => "TIMESTAMP",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "BEGINNING" => Some(Self::Beginning),
+ "END" => Some(Self::End),
+ "TIMESTAMP" => Some(Self::Timestamp),
+ _ => None,
+ }
+ }
+}
+/// 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.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct QueryRouteRequest {
+ #[prost(message, optional, tag = "1")]
+ pub topic: ::core::option::Option<Resource>,
+ #[prost(message, optional, tag = "2")]
+ pub endpoints: ::core::option::Option<Endpoints>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct QueryRouteResponse {
+ #[prost(message, optional, tag = "1")]
+ pub status: ::core::option::Option<Status>,
+ #[prost(message, repeated, tag = "2")]
+ pub message_queues: ::prost::alloc::vec::Vec<MessageQueue>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct SendMessageRequest {
+ #[prost(message, repeated, tag = "1")]
+ pub messages: ::prost::alloc::vec::Vec<Message>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct SendResultEntry {
+ #[prost(message, optional, tag = "1")]
+ pub status: ::core::option::Option<Status>,
+ #[prost(string, tag = "2")]
+ pub message_id: ::prost::alloc::string::String,
+ #[prost(string, tag = "3")]
+ pub transaction_id: ::prost::alloc::string::String,
+ #[prost(int64, tag = "4")]
+ pub offset: i64,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct SendMessageResponse {
+ #[prost(message, optional, tag = "1")]
+ pub status: ::core::option::Option<Status>,
+ /// Some implementation may have partial failure issues. Client SDK
developers are expected to inspect
+ /// each entry for best certainty.
+ #[prost(message, repeated, tag = "2")]
+ pub entries: ::prost::alloc::vec::Vec<SendResultEntry>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct QueryAssignmentRequest {
+ #[prost(message, optional, tag = "1")]
+ pub topic: ::core::option::Option<Resource>,
+ #[prost(message, optional, tag = "2")]
+ pub group: ::core::option::Option<Resource>,
+ #[prost(message, optional, tag = "3")]
+ pub endpoints: ::core::option::Option<Endpoints>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct QueryAssignmentResponse {
+ #[prost(message, optional, tag = "1")]
+ pub status: ::core::option::Option<Status>,
+ #[prost(message, repeated, tag = "2")]
+ pub assignments: ::prost::alloc::vec::Vec<Assignment>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ReceiveMessageRequest {
+ #[prost(message, optional, tag = "1")]
+ pub group: ::core::option::Option<Resource>,
+ #[prost(message, optional, tag = "2")]
+ pub message_queue: ::core::option::Option<MessageQueue>,
+ #[prost(message, optional, tag = "3")]
+ pub filter_expression: ::core::option::Option<FilterExpression>,
+ #[prost(int32, tag = "4")]
+ pub batch_size: i32,
+ /// Required if client type is simple consumer.
+ #[prost(message, optional, tag = "5")]
+ pub invisible_duration: ::core::option::Option<::prost_types::Duration>,
+ /// For message auto renew and clean
+ #[prost(bool, tag = "6")]
+ pub auto_renew: bool,
+ #[prost(message, optional, tag = "7")]
+ pub long_polling_timeout: ::core::option::Option<::prost_types::Duration>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ReceiveMessageResponse {
+ #[prost(oneof = "receive_message_response::Content", tags = "1, 2, 3")]
+ pub content: ::core::option::Option<receive_message_response::Content>,
+}
+/// Nested message and enum types in `ReceiveMessageResponse`.
+pub mod receive_message_response {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+ #[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum Content {
+ #[prost(message, tag = "1")]
+ Status(super::Status),
+ #[prost(message, tag = "2")]
+ Message(super::Message),
+ /// The timestamp that brokers start to deliver status line or message.
+ #[prost(message, tag = "3")]
+ DeliveryTimestamp(::prost_types::Timestamp),
+ }
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct AckMessageEntry {
+ #[prost(string, tag = "1")]
+ pub message_id: ::prost::alloc::string::String,
+ #[prost(string, tag = "2")]
+ pub receipt_handle: ::prost::alloc::string::String,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct AckMessageRequest {
+ #[prost(message, optional, tag = "1")]
+ pub group: ::core::option::Option<Resource>,
+ #[prost(message, optional, tag = "2")]
+ pub topic: ::core::option::Option<Resource>,
+ #[prost(message, repeated, tag = "3")]
+ pub entries: ::prost::alloc::vec::Vec<AckMessageEntry>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct AckMessageResultEntry {
+ #[prost(string, tag = "1")]
+ pub message_id: ::prost::alloc::string::String,
+ #[prost(string, tag = "2")]
+ pub receipt_handle: ::prost::alloc::string::String,
+ /// Acknowledge result may be acquired through inspecting
+ /// `status.code`; In case acknowledgement failed, `status.message`
+ /// is the explanation of the failure.
+ #[prost(message, optional, tag = "3")]
+ pub status: ::core::option::Option<Status>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct AckMessageResponse {
+ /// RPC tier status, which is used to represent RPC-level errors including
+ /// authentication, authorization, throttling and other general failures.
+ #[prost(message, optional, tag = "1")]
+ pub status: ::core::option::Option<Status>,
+ #[prost(message, repeated, tag = "2")]
+ pub entries: ::prost::alloc::vec::Vec<AckMessageResultEntry>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ForwardMessageToDeadLetterQueueRequest {
+ #[prost(message, optional, tag = "1")]
+ pub group: ::core::option::Option<Resource>,
+ #[prost(message, optional, tag = "2")]
+ pub topic: ::core::option::Option<Resource>,
+ #[prost(string, tag = "3")]
+ pub receipt_handle: ::prost::alloc::string::String,
+ #[prost(string, tag = "4")]
+ pub message_id: ::prost::alloc::string::String,
+ #[prost(int32, tag = "5")]
+ pub delivery_attempt: i32,
+ #[prost(int32, tag = "6")]
+ pub max_delivery_attempts: i32,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ForwardMessageToDeadLetterQueueResponse {
+ #[prost(message, optional, tag = "1")]
+ pub status: ::core::option::Option<Status>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct HeartbeatRequest {
+ #[prost(message, optional, tag = "1")]
+ pub group: ::core::option::Option<Resource>,
+ #[prost(enumeration = "ClientType", tag = "2")]
+ pub client_type: i32,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct HeartbeatResponse {
+ #[prost(message, optional, tag = "1")]
+ pub status: ::core::option::Option<Status>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct EndTransactionRequest {
+ #[prost(message, optional, tag = "1")]
+ pub topic: ::core::option::Option<Resource>,
+ #[prost(string, tag = "2")]
+ pub message_id: ::prost::alloc::string::String,
+ #[prost(string, tag = "3")]
+ pub transaction_id: ::prost::alloc::string::String,
+ #[prost(enumeration = "TransactionResolution", tag = "4")]
+ pub resolution: i32,
+ #[prost(enumeration = "TransactionSource", tag = "5")]
+ pub source: i32,
+ #[prost(string, tag = "6")]
+ pub trace_context: ::prost::alloc::string::String,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct EndTransactionResponse {
+ #[prost(message, optional, tag = "1")]
+ pub status: ::core::option::Option<Status>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct PrintThreadStackTraceCommand {
+ #[prost(string, tag = "1")]
+ pub nonce: ::prost::alloc::string::String,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ThreadStackTrace {
+ #[prost(string, tag = "1")]
+ pub nonce: ::prost::alloc::string::String,
+ #[prost(string, optional, tag = "2")]
+ pub thread_stack_trace:
::core::option::Option<::prost::alloc::string::String>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct VerifyMessageCommand {
+ #[prost(string, tag = "1")]
+ pub nonce: ::prost::alloc::string::String,
+ #[prost(message, optional, tag = "2")]
+ pub message: ::core::option::Option<Message>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct VerifyMessageResult {
+ #[prost(string, tag = "1")]
+ pub nonce: ::prost::alloc::string::String,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct RecoverOrphanedTransactionCommand {
+ #[prost(message, optional, tag = "1")]
+ pub message: ::core::option::Option<Message>,
+ #[prost(string, tag = "2")]
+ pub transaction_id: ::prost::alloc::string::String,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct TelemetryCommand {
+ #[prost(message, optional, tag = "1")]
+ pub status: ::core::option::Option<Status>,
+ #[prost(oneof = "telemetry_command::Command", tags = "2, 3, 4, 5, 6, 7")]
+ pub command: ::core::option::Option<telemetry_command::Command>,
+}
+/// Nested message and enum types in `TelemetryCommand`.
+pub mod telemetry_command {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+ #[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum Command {
+ /// Client settings
+ #[prost(message, tag = "2")]
+ Settings(super::Settings),
+ /// These messages are from client.
+ ///
+ /// Report thread stack trace to server.
+ #[prost(message, tag = "3")]
+ ThreadStackTrace(super::ThreadStackTrace),
+ /// Report message verify result to server.
+ #[prost(message, tag = "4")]
+ VerifyMessageResult(super::VerifyMessageResult),
+ /// There messages are from server.
+ ///
+ /// Request client to recover the orphaned transaction message.
+ #[prost(message, tag = "5")]
+
RecoverOrphanedTransactionCommand(super::RecoverOrphanedTransactionCommand),
+ /// Request client to print thread stack trace.
+ #[prost(message, tag = "6")]
+ PrintThreadStackTraceCommand(super::PrintThreadStackTraceCommand),
+ /// Request client to verify the consumption of the appointed message.
+ #[prost(message, tag = "7")]
+ VerifyMessageCommand(super::VerifyMessageCommand),
+ }
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct NotifyClientTerminationRequest {
+ /// Consumer group, which is absent for producer.
+ #[prost(message, optional, tag = "1")]
+ pub group: ::core::option::Option<Resource>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct NotifyClientTerminationResponse {
+ #[prost(message, optional, tag = "1")]
+ pub status: ::core::option::Option<Status>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ChangeInvisibleDurationRequest {
+ #[prost(message, optional, tag = "1")]
+ pub group: ::core::option::Option<Resource>,
+ #[prost(message, optional, tag = "2")]
+ pub topic: ::core::option::Option<Resource>,
+ /// Unique receipt handle to identify message to change
+ #[prost(string, tag = "3")]
+ pub receipt_handle: ::prost::alloc::string::String,
+ /// New invisible duration
+ #[prost(message, optional, tag = "4")]
+ pub invisible_duration: ::core::option::Option<::prost_types::Duration>,
+ /// For message tracing
+ #[prost(string, tag = "5")]
+ pub message_id: ::prost::alloc::string::String,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ChangeInvisibleDurationResponse {
+ #[prost(message, optional, tag = "1")]
+ pub status: ::core::option::Option<Status>,
+ /// Server may generate a new receipt handle for the message.
+ #[prost(string, tag = "2")]
+ pub receipt_handle: ::prost::alloc::string::String,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct PullMessageRequest {
+ #[prost(message, optional, tag = "1")]
+ pub group: ::core::option::Option<Resource>,
+ #[prost(message, optional, tag = "2")]
+ pub message_queue: ::core::option::Option<MessageQueue>,
+ #[prost(int64, tag = "3")]
+ pub offset: i64,
+ #[prost(int32, tag = "4")]
+ pub batch_size: i32,
+ #[prost(message, optional, tag = "5")]
+ pub filter_expression: ::core::option::Option<FilterExpression>,
+ #[prost(message, optional, tag = "6")]
+ pub long_polling_timeout: ::core::option::Option<::prost_types::Duration>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct PullMessageResponse {
+ #[prost(oneof = "pull_message_response::Content", tags = "1, 2, 3")]
+ pub content: ::core::option::Option<pull_message_response::Content>,
+}
+/// Nested message and enum types in `PullMessageResponse`.
+pub mod pull_message_response {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+ #[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum Content {
+ #[prost(message, tag = "1")]
+ Status(super::Status),
+ #[prost(message, tag = "2")]
+ Message(super::Message),
+ #[prost(int64, tag = "3")]
+ NextOffset(i64),
+ }
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct UpdateOffsetRequest {
+ #[prost(message, optional, tag = "1")]
+ pub group: ::core::option::Option<Resource>,
+ #[prost(message, optional, tag = "2")]
+ pub message_queue: ::core::option::Option<MessageQueue>,
+ #[prost(int64, tag = "3")]
+ pub offset: i64,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct UpdateOffsetResponse {
+ #[prost(message, optional, tag = "1")]
+ pub status: ::core::option::Option<Status>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct GetOffsetRequest {
+ #[prost(message, optional, tag = "1")]
+ pub group: ::core::option::Option<Resource>,
+ #[prost(message, optional, tag = "2")]
+ pub message_queue: ::core::option::Option<MessageQueue>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct GetOffsetResponse {
+ #[prost(message, optional, tag = "1")]
+ pub status: ::core::option::Option<Status>,
+ #[prost(int64, tag = "2")]
+ pub offset: i64,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct QueryOffsetRequest {
+ #[prost(message, optional, tag = "1")]
+ pub message_queue: ::core::option::Option<MessageQueue>,
+ #[prost(enumeration = "QueryOffsetPolicy", tag = "2")]
+ pub query_offset_policy: i32,
+ #[prost(message, optional, tag = "3")]
+ pub timestamp: ::core::option::Option<::prost_types::Timestamp>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct QueryOffsetResponse {
+ #[prost(message, optional, tag = "1")]
+ pub status: ::core::option::Option<Status>,
+ #[prost(int64, tag = "2")]
+ pub offset: i64,
+}
+/// Generated client implementations.
+pub mod messaging_service_client {
+ #![allow(unused_variables, dead_code, missing_docs,
clippy::let_unit_value)]
+ use tonic::codegen::*;
+ use tonic::codegen::http::Uri;
+ /// 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`.
+ #[derive(Debug, Clone)]
+ pub struct MessagingServiceClient<T> {
+ inner: tonic::client::Grpc<T>,
+ }
+ impl MessagingServiceClient<tonic::transport::Channel> {
+ /// Attempt to create a new client by connecting to a given endpoint.
+ pub async fn connect<D>(dst: D) -> Result<Self,
tonic::transport::Error>
+ where
+ D: TryInto<tonic::transport::Endpoint>,
+ D::Error: Into<StdError>,
+ {
+ let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
+ Ok(Self::new(conn))
+ }
+ }
+ impl<T> MessagingServiceClient<T>
+ where
+ T: tonic::client::GrpcService<tonic::body::BoxBody>,
+ T::Error: Into<StdError>,
+ T::ResponseBody: Body<Data = Bytes> + Send + 'static,
+ <T::ResponseBody as Body>::Error: Into<StdError> + Send,
+ {
+ pub fn new(inner: T) -> Self {
+ let inner = tonic::client::Grpc::new(inner);
+ Self { inner }
+ }
+ pub fn with_origin(inner: T, origin: Uri) -> Self {
+ let inner = tonic::client::Grpc::with_origin(inner, origin);
+ Self { inner }
+ }
+ pub fn with_interceptor<F>(
+ inner: T,
+ interceptor: F,
+ ) -> MessagingServiceClient<InterceptedService<T, F>>
+ where
+ F: tonic::service::Interceptor,
+ T::ResponseBody: Default,
+ T: tonic::codegen::Service<
+ http::Request<tonic::body::BoxBody>,
+ Response = http::Response<
+ <T as
tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
+ >,
+ >,
+ <T as tonic::codegen::Service<
+ http::Request<tonic::body::BoxBody>,
+ >>::Error: Into<StdError> + Send + Sync,
+ {
+ MessagingServiceClient::new(InterceptedService::new(inner,
interceptor))
+ }
+ /// Compress requests with the given encoding.
+ ///
+ /// This requires the server to support it otherwise it might respond
with an
+ /// error.
+ #[must_use]
+ pub fn send_compressed(mut self, encoding: CompressionEncoding) ->
Self {
+ self.inner = self.inner.send_compressed(encoding);
+ self
+ }
+ /// Enable decompressing responses.
+ #[must_use]
+ pub fn accept_compressed(mut self, encoding: CompressionEncoding) ->
Self {
+ self.inner = self.inner.accept_compressed(encoding);
+ self
+ }
+ /// Limits the maximum size of a decoded message.
+ ///
+ /// Default: `4MB`
+ #[must_use]
+ pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
+ self.inner = self.inner.max_decoding_message_size(limit);
+ self
+ }
+ /// Limits the maximum size of an encoded message.
+ ///
+ /// Default: `usize::MAX`
+ #[must_use]
+ pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
+ self.inner = self.inner.max_encoding_message_size(limit);
+ self
+ }
+ /// 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`.
+ pub async fn query_route(
+ &mut self,
+ request: impl tonic::IntoRequest<super::QueryRouteRequest>,
+ ) -> std::result::Result<
+ tonic::Response<super::QueryRouteResponse>,
+ tonic::Status,
+ > {
+ self.inner
+ .ready()
+ .await
+ .map_err(|e| {
+ tonic::Status::new(
+ tonic::Code::Unknown,
+ format!("Service was not ready: {}", e.into()),
+ )
+ })?;
+ let codec = tonic::codec::ProstCodec::default();
+ let path = http::uri::PathAndQuery::from_static(
+ "/apache.rocketmq.v2.MessagingService/QueryRoute",
+ );
+ let mut req = request.into_request();
+ req.extensions_mut()
+ .insert(
+ GrpcMethod::new("apache.rocketmq.v2.MessagingService",
"QueryRoute"),
+ );
+ self.inner.unary(req, path, codec).await
+ }
+ /// 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`
+ pub async fn heartbeat(
+ &mut self,
+ request: impl tonic::IntoRequest<super::HeartbeatRequest>,
+ ) -> std::result::Result<
+ tonic::Response<super::HeartbeatResponse>,
+ tonic::Status,
+ > {
+ self.inner
+ .ready()
+ .await
+ .map_err(|e| {
+ tonic::Status::new(
+ tonic::Code::Unknown,
+ format!("Service was not ready: {}", e.into()),
+ )
+ })?;
+ let codec = tonic::codec::ProstCodec::default();
+ let path = http::uri::PathAndQuery::from_static(
+ "/apache.rocketmq.v2.MessagingService/Heartbeat",
+ );
+ let mut req = request.into_request();
+ req.extensions_mut()
+ .insert(
+ GrpcMethod::new("apache.rocketmq.v2.MessagingService",
"Heartbeat"),
+ );
+ self.inner.unary(req, path, codec).await
+ }
+ /// 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`.
+ pub async fn send_message(
+ &mut self,
+ request: impl tonic::IntoRequest<super::SendMessageRequest>,
+ ) -> std::result::Result<
+ tonic::Response<super::SendMessageResponse>,
+ tonic::Status,
+ > {
+ self.inner
+ .ready()
+ .await
+ .map_err(|e| {
+ tonic::Status::new(
+ tonic::Code::Unknown,
+ format!("Service was not ready: {}", e.into()),
+ )
+ })?;
+ let codec = tonic::codec::ProstCodec::default();
+ let path = http::uri::PathAndQuery::from_static(
+ "/apache.rocketmq.v2.MessagingService/SendMessage",
+ );
+ let mut req = request.into_request();
+ req.extensions_mut()
+ .insert(
+ GrpcMethod::new("apache.rocketmq.v2.MessagingService",
"SendMessage"),
+ );
+ self.inner.unary(req, path, codec).await
+ }
+ /// 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`.
+ pub async fn query_assignment(
+ &mut self,
+ request: impl tonic::IntoRequest<super::QueryAssignmentRequest>,
+ ) -> std::result::Result<
+ tonic::Response<super::QueryAssignmentResponse>,
+ tonic::Status,
+ > {
+ self.inner
+ .ready()
+ .await
+ .map_err(|e| {
+ tonic::Status::new(
+ tonic::Code::Unknown,
+ format!("Service was not ready: {}", e.into()),
+ )
+ })?;
+ let codec = tonic::codec::ProstCodec::default();
+ let path = http::uri::PathAndQuery::from_static(
+ "/apache.rocketmq.v2.MessagingService/QueryAssignment",
+ );
+ let mut req = request.into_request();
+ req.extensions_mut()
+ .insert(
+ GrpcMethod::new(
+ "apache.rocketmq.v2.MessagingService",
+ "QueryAssignment",
+ ),
+ );
+ self.inner.unary(req, path, codec).await
+ }
+ /// 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.
+ pub async fn receive_message(
+ &mut self,
+ request: impl tonic::IntoRequest<super::ReceiveMessageRequest>,
+ ) -> std::result::Result<
+
tonic::Response<tonic::codec::Streaming<super::ReceiveMessageResponse>>,
+ tonic::Status,
+ > {
+ self.inner
+ .ready()
+ .await
+ .map_err(|e| {
+ tonic::Status::new(
+ tonic::Code::Unknown,
+ format!("Service was not ready: {}", e.into()),
+ )
+ })?;
+ let codec = tonic::codec::ProstCodec::default();
+ let path = http::uri::PathAndQuery::from_static(
+ "/apache.rocketmq.v2.MessagingService/ReceiveMessage",
+ );
+ let mut req = request.into_request();
+ req.extensions_mut()
+ .insert(
+ GrpcMethod::new(
+ "apache.rocketmq.v2.MessagingService",
+ "ReceiveMessage",
+ ),
+ );
+ self.inner.server_streaming(req, path, codec).await
+ }
+ /// 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`.
+ pub async fn ack_message(
+ &mut self,
+ request: impl tonic::IntoRequest<super::AckMessageRequest>,
+ ) -> std::result::Result<
+ tonic::Response<super::AckMessageResponse>,
+ tonic::Status,
+ > {
+ self.inner
+ .ready()
+ .await
+ .map_err(|e| {
+ tonic::Status::new(
+ tonic::Code::Unknown,
+ format!("Service was not ready: {}", e.into()),
+ )
+ })?;
+ let codec = tonic::codec::ProstCodec::default();
+ let path = http::uri::PathAndQuery::from_static(
+ "/apache.rocketmq.v2.MessagingService/AckMessage",
+ );
+ let mut req = request.into_request();
+ req.extensions_mut()
+ .insert(
+ GrpcMethod::new("apache.rocketmq.v2.MessagingService",
"AckMessage"),
+ );
+ self.inner.unary(req, path, codec).await
+ }
+ /// Forwards one message to dead letter queue if the max delivery
attempts is
+ /// exceeded by this message at client-side, return `OK` if success.
+ pub async fn forward_message_to_dead_letter_queue(
+ &mut self,
+ request: impl tonic::IntoRequest<
+ super::ForwardMessageToDeadLetterQueueRequest,
+ >,
+ ) -> std::result::Result<
+ tonic::Response<super::ForwardMessageToDeadLetterQueueResponse>,
+ tonic::Status,
+ > {
+ self.inner
+ .ready()
+ .await
+ .map_err(|e| {
+ tonic::Status::new(
+ tonic::Code::Unknown,
+ format!("Service was not ready: {}", e.into()),
+ )
+ })?;
+ let codec = tonic::codec::ProstCodec::default();
+ let path = http::uri::PathAndQuery::from_static(
+
"/apache.rocketmq.v2.MessagingService/ForwardMessageToDeadLetterQueue",
+ );
+ let mut req = request.into_request();
+ req.extensions_mut()
+ .insert(
+ GrpcMethod::new(
+ "apache.rocketmq.v2.MessagingService",
+ "ForwardMessageToDeadLetterQueue",
+ ),
+ );
+ self.inner.unary(req, path, codec).await
+ }
+ pub async fn pull_message(
+ &mut self,
+ request: impl tonic::IntoRequest<super::PullMessageRequest>,
+ ) -> std::result::Result<
+
tonic::Response<tonic::codec::Streaming<super::PullMessageResponse>>,
+ tonic::Status,
+ > {
+ self.inner
+ .ready()
+ .await
+ .map_err(|e| {
+ tonic::Status::new(
+ tonic::Code::Unknown,
+ format!("Service was not ready: {}", e.into()),
+ )
+ })?;
+ let codec = tonic::codec::ProstCodec::default();
+ let path = http::uri::PathAndQuery::from_static(
+ "/apache.rocketmq.v2.MessagingService/PullMessage",
+ );
+ let mut req = request.into_request();
+ req.extensions_mut()
+ .insert(
+ GrpcMethod::new("apache.rocketmq.v2.MessagingService",
"PullMessage"),
+ );
+ self.inner.server_streaming(req, path, codec).await
+ }
+ pub async fn update_offset(
+ &mut self,
+ request: impl tonic::IntoRequest<super::UpdateOffsetRequest>,
+ ) -> std::result::Result<
+ tonic::Response<super::UpdateOffsetResponse>,
+ tonic::Status,
+ > {
+ self.inner
+ .ready()
+ .await
+ .map_err(|e| {
+ tonic::Status::new(
+ tonic::Code::Unknown,
+ format!("Service was not ready: {}", e.into()),
+ )
+ })?;
+ let codec = tonic::codec::ProstCodec::default();
+ let path = http::uri::PathAndQuery::from_static(
+ "/apache.rocketmq.v2.MessagingService/UpdateOffset",
+ );
+ let mut req = request.into_request();
+ req.extensions_mut()
+ .insert(
+ GrpcMethod::new(
+ "apache.rocketmq.v2.MessagingService",
+ "UpdateOffset",
+ ),
+ );
+ self.inner.unary(req, path, codec).await
+ }
+ pub async fn get_offset(
+ &mut self,
+ request: impl tonic::IntoRequest<super::GetOffsetRequest>,
+ ) -> std::result::Result<
+ tonic::Response<super::GetOffsetResponse>,
+ tonic::Status,
+ > {
+ self.inner
+ .ready()
+ .await
+ .map_err(|e| {
+ tonic::Status::new(
+ tonic::Code::Unknown,
+ format!("Service was not ready: {}", e.into()),
+ )
+ })?;
+ let codec = tonic::codec::ProstCodec::default();
+ let path = http::uri::PathAndQuery::from_static(
+ "/apache.rocketmq.v2.MessagingService/GetOffset",
+ );
+ let mut req = request.into_request();
+ req.extensions_mut()
+ .insert(
+ GrpcMethod::new("apache.rocketmq.v2.MessagingService",
"GetOffset"),
+ );
+ self.inner.unary(req, path, codec).await
+ }
+ pub async fn query_offset(
+ &mut self,
+ request: impl tonic::IntoRequest<super::QueryOffsetRequest>,
+ ) -> std::result::Result<
+ tonic::Response<super::QueryOffsetResponse>,
+ tonic::Status,
+ > {
+ self.inner
+ .ready()
+ .await
+ .map_err(|e| {
+ tonic::Status::new(
+ tonic::Code::Unknown,
+ format!("Service was not ready: {}", e.into()),
+ )
+ })?;
+ let codec = tonic::codec::ProstCodec::default();
+ let path = http::uri::PathAndQuery::from_static(
+ "/apache.rocketmq.v2.MessagingService/QueryOffset",
+ );
+ let mut req = request.into_request();
+ req.extensions_mut()
+ .insert(
+ GrpcMethod::new("apache.rocketmq.v2.MessagingService",
"QueryOffset"),
+ );
+ self.inner.unary(req, path, codec).await
+ }
+ /// Commits or rollback one transactional message.
+ pub async fn end_transaction(
+ &mut self,
+ request: impl tonic::IntoRequest<super::EndTransactionRequest>,
+ ) -> std::result::Result<
+ tonic::Response<super::EndTransactionResponse>,
+ tonic::Status,
+ > {
+ self.inner
+ .ready()
+ .await
+ .map_err(|e| {
+ tonic::Status::new(
+ tonic::Code::Unknown,
+ format!("Service was not ready: {}", e.into()),
+ )
+ })?;
+ let codec = tonic::codec::ProstCodec::default();
+ let path = http::uri::PathAndQuery::from_static(
+ "/apache.rocketmq.v2.MessagingService/EndTransaction",
+ );
+ let mut req = request.into_request();
+ req.extensions_mut()
+ .insert(
+ GrpcMethod::new(
+ "apache.rocketmq.v2.MessagingService",
+ "EndTransaction",
+ ),
+ );
+ self.inner.unary(req, path, codec).await
+ }
+ /// 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.
+ pub async fn telemetry(
+ &mut self,
+ request: impl tonic::IntoStreamingRequest<Message =
super::TelemetryCommand>,
+ ) -> std::result::Result<
+ tonic::Response<tonic::codec::Streaming<super::TelemetryCommand>>,
+ tonic::Status,
+ > {
+ self.inner
+ .ready()
+ .await
+ .map_err(|e| {
+ tonic::Status::new(
+ tonic::Code::Unknown,
+ format!("Service was not ready: {}", e.into()),
+ )
+ })?;
+ let codec = tonic::codec::ProstCodec::default();
+ let path = http::uri::PathAndQuery::from_static(
+ "/apache.rocketmq.v2.MessagingService/Telemetry",
+ );
+ let mut req = request.into_streaming_request();
+ req.extensions_mut()
+ .insert(
+ GrpcMethod::new("apache.rocketmq.v2.MessagingService",
"Telemetry"),
+ );
+ self.inner.streaming(req, path, codec).await
+ }
+ /// Notify the server that the client is terminated.
+ pub async fn notify_client_termination(
+ &mut self,
+ request: impl
tonic::IntoRequest<super::NotifyClientTerminationRequest>,
+ ) -> std::result::Result<
+ tonic::Response<super::NotifyClientTerminationResponse>,
+ tonic::Status,
+ > {
+ self.inner
+ .ready()
+ .await
+ .map_err(|e| {
+ tonic::Status::new(
+ tonic::Code::Unknown,
+ format!("Service was not ready: {}", e.into()),
+ )
+ })?;
+ let codec = tonic::codec::ProstCodec::default();
+ let path = http::uri::PathAndQuery::from_static(
+ "/apache.rocketmq.v2.MessagingService/NotifyClientTermination",
+ );
+ let mut req = request.into_request();
+ req.extensions_mut()
+ .insert(
+ GrpcMethod::new(
+ "apache.rocketmq.v2.MessagingService",
+ "NotifyClientTermination",
+ ),
+ );
+ self.inner.unary(req, path, codec).await
+ }
+ /// 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.
+ pub async fn change_invisible_duration(
+ &mut self,
+ request: impl
tonic::IntoRequest<super::ChangeInvisibleDurationRequest>,
+ ) -> std::result::Result<
+ tonic::Response<super::ChangeInvisibleDurationResponse>,
+ tonic::Status,
+ > {
+ self.inner
+ .ready()
+ .await
+ .map_err(|e| {
+ tonic::Status::new(
+ tonic::Code::Unknown,
+ format!("Service was not ready: {}", e.into()),
+ )
+ })?;
+ let codec = tonic::codec::ProstCodec::default();
+ let path = http::uri::PathAndQuery::from_static(
+ "/apache.rocketmq.v2.MessagingService/ChangeInvisibleDuration",
+ );
+ let mut req = request.into_request();
+ req.extensions_mut()
+ .insert(
+ GrpcMethod::new(
+ "apache.rocketmq.v2.MessagingService",
+ "ChangeInvisibleDuration",
+ ),
+ );
+ self.inner.unary(req, path, codec).await
+ }
+ }
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ChangeLogLevelRequest {
+ #[prost(enumeration = "change_log_level_request::Level", tag = "1")]
+ pub level: i32,
+}
+/// Nested message and enum types in `ChangeLogLevelRequest`.
+pub mod change_log_level_request {
+ #[derive(
+ Clone,
+ Copy,
+ Debug,
+ PartialEq,
+ Eq,
+ Hash,
+ PartialOrd,
+ Ord,
+ ::prost::Enumeration
+ )]
+ #[repr(i32)]
+ pub enum Level {
+ Trace = 0,
+ Debug = 1,
+ Info = 2,
+ Warn = 3,
+ Error = 4,
+ }
+ impl Level {
+ /// String value of the enum field names used in the ProtoBuf
definition.
+ ///
+ /// The values are not transformed in any way and thus are considered
stable
+ /// (if the ProtoBuf definition does not change) and safe for
programmatic use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ Level::Trace => "TRACE",
+ Level::Debug => "DEBUG",
+ Level::Info => "INFO",
+ Level::Warn => "WARN",
+ Level::Error => "ERROR",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "TRACE" => Some(Self::Trace),
+ "DEBUG" => Some(Self::Debug),
+ "INFO" => Some(Self::Info),
+ "WARN" => Some(Self::Warn),
+ "ERROR" => Some(Self::Error),
+ _ => None,
+ }
+ }
+ }
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ChangeLogLevelResponse {
+ #[prost(string, tag = "1")]
+ pub remark: ::prost::alloc::string::String,
+}
+/// Generated client implementations.
+pub mod admin_client {
+ #![allow(unused_variables, dead_code, missing_docs,
clippy::let_unit_value)]
+ use tonic::codegen::*;
+ use tonic::codegen::http::Uri;
+ #[derive(Debug, Clone)]
+ pub struct AdminClient<T> {
+ inner: tonic::client::Grpc<T>,
+ }
+ impl AdminClient<tonic::transport::Channel> {
+ /// Attempt to create a new client by connecting to a given endpoint.
+ pub async fn connect<D>(dst: D) -> Result<Self,
tonic::transport::Error>
+ where
+ D: TryInto<tonic::transport::Endpoint>,
+ D::Error: Into<StdError>,
+ {
+ let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
+ Ok(Self::new(conn))
+ }
+ }
+ impl<T> AdminClient<T>
+ where
+ T: tonic::client::GrpcService<tonic::body::BoxBody>,
+ T::Error: Into<StdError>,
+ T::ResponseBody: Body<Data = Bytes> + Send + 'static,
+ <T::ResponseBody as Body>::Error: Into<StdError> + Send,
+ {
+ pub fn new(inner: T) -> Self {
+ let inner = tonic::client::Grpc::new(inner);
+ Self { inner }
+ }
+ pub fn with_origin(inner: T, origin: Uri) -> Self {
+ let inner = tonic::client::Grpc::with_origin(inner, origin);
+ Self { inner }
+ }
+ pub fn with_interceptor<F>(
+ inner: T,
+ interceptor: F,
+ ) -> AdminClient<InterceptedService<T, F>>
+ where
+ F: tonic::service::Interceptor,
+ T::ResponseBody: Default,
+ T: tonic::codegen::Service<
+ http::Request<tonic::body::BoxBody>,
+ Response = http::Response<
+ <T as
tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
+ >,
+ >,
+ <T as tonic::codegen::Service<
+ http::Request<tonic::body::BoxBody>,
+ >>::Error: Into<StdError> + Send + Sync,
+ {
+ AdminClient::new(InterceptedService::new(inner, interceptor))
+ }
+ /// Compress requests with the given encoding.
+ ///
+ /// This requires the server to support it otherwise it might respond
with an
+ /// error.
+ #[must_use]
+ pub fn send_compressed(mut self, encoding: CompressionEncoding) ->
Self {
+ self.inner = self.inner.send_compressed(encoding);
+ self
+ }
+ /// Enable decompressing responses.
+ #[must_use]
+ pub fn accept_compressed(mut self, encoding: CompressionEncoding) ->
Self {
+ self.inner = self.inner.accept_compressed(encoding);
+ self
+ }
+ /// Limits the maximum size of a decoded message.
+ ///
+ /// Default: `4MB`
+ #[must_use]
+ pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
+ self.inner = self.inner.max_decoding_message_size(limit);
+ self
+ }
+ /// Limits the maximum size of an encoded message.
+ ///
+ /// Default: `usize::MAX`
+ #[must_use]
+ pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
+ self.inner = self.inner.max_encoding_message_size(limit);
+ self
+ }
+ pub async fn change_log_level(
+ &mut self,
+ request: impl tonic::IntoRequest<super::ChangeLogLevelRequest>,
+ ) -> std::result::Result<
+ tonic::Response<super::ChangeLogLevelResponse>,
+ tonic::Status,
+ > {
+ self.inner
+ .ready()
+ .await
+ .map_err(|e| {
+ tonic::Status::new(
+ tonic::Code::Unknown,
+ format!("Service was not ready: {}", e.into()),
+ )
+ })?;
+ let codec = tonic::codec::ProstCodec::default();
+ let path = http::uri::PathAndQuery::from_static(
+ "/apache.rocketmq.v2.Admin/ChangeLogLevel",
+ );
+ let mut req = request.into_request();
+ req.extensions_mut()
+ .insert(GrpcMethod::new("apache.rocketmq.v2.Admin",
"ChangeLogLevel"));
+ self.inner.unary(req, path, codec).await
+ }
+ }
+}