Get desktop application:
View/edit binary Protocol Buffers messages
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`.
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`.
RPC tier status, which is used to represent RPC-level errors including authentication, authorization, throttling and other general failures.
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.
Unique receipt handle to identify message to change
New invisible duration
For message tracing
If true, server will not increment the retry times for this message
Server may generate a new receipt handle for the message.
Commits or rollback one transactional message.
Forwards one message to dead letter queue if the max delivery attempts is exceeded by this message at client-side, return `OK` if success.
Query the consumption progress of the designated queue of the consumer group to the remote.
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`
Notify the server that the client is terminated.
Consumer group, which is absent for producer.
PullMessage and ReceiveMessage RPCs serve a similar purpose, which is to attempt to get messages from the server, but with different semantics.
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`.
Query the offset of the designated queue by the query offset policy.
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`.
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.
Recall a message, for delay message, should recall before delivery time, like the rollback operation of transaction message, for normal message, not supported for now.
Refer to SendResultEntry.
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.
Required if client type is simple consumer.
For message auto renew and clean
The timestamp that brokers start to deliver status line or message.
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`.
Some implementation may have partial failure issues. Client SDK developers are expected to inspect each entry for best certainty.
Sync lite subscription info, lite push consumer only
bindTopic for lite push consumer
consumer group
lite subscription set of lite topics
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.
Client settings
These messages are from client. Report thread stack trace to server.
Report message verify result to server.
There messages are from server. Request client to recover the orphaned transaction message.
Request client to print thread stack trace.
Request client to verify the consumption of the appointed message.
Request client to reconnect server use the latest endpoints.
Request client to unsubscribe lite topic.
Update the consumption progress of the designated queue of the consumer group to the remote.
Used in:
Used in:
Acknowledge result may be acquired through inspecting `status.code`; In case acknowledgement failed, `status.message` is the explanation of the failure.
Used in:
Used in:
Used in:
Used in:
Name of the broker
Broker index. Canonically, index = 0 implies that the broker is playing leader role while brokers with index > 0 play follower role.
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
Used in:
Used in: ,
Used in:
Generic code for success.
Generic code for multiple return results.
Generic code for bad request, indicating that required fields or headers are missing.
Format of access point is illegal.
Format of topic is illegal.
Format of consumer group is illegal.
Format of message tag is illegal.
Format of message key is illegal.
Format of message group is illegal.
Format of message property key is illegal.
Transaction id is invalid.
Format of message id is illegal.
Format of filter expression is illegal.
The invisible time of request is invalid.
The delivery timestamp of message is invalid.
Receipt handle of message is invalid.
Message property conflicts with its type.
Client type could not be recognized.
Message is corrupted.
Request is rejected due to missing of x-mq-client-id header.
Polling time is illegal.
Offset is illegal.
Format of lite topic is illegal.
Client properties validation failed. This error occurs when: - The number of properties exceeds 32. - Key length exceeds 64 characters. - Key does not match the regex pattern: [a-zA-Z][a-zA-Z0-9_.-]* - Value length exceeds 256 characters. - Total serialized size exceeds 4KB.
Generic code indicates that the client request lacks valid authentication credentials for the requested resource.
Generic code indicates that the account is suspended due to overdue of payment.
Generic code for the case that user does not have the permission to operate.
Generic code for resource not found.
Message not found from server.
Topic resource does not exist.
Consumer group resource does not exist.
Offset not found from server.
Generic code representing client side timeout when connecting to, reading data from, or write data to server.
Generic code represents that the request entity is larger than limits defined by server.
Message body size exceeds the threshold.
Message body is empty.
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.
Generic code indicates that too many requests are made in short period of duration. Requests are throttled.
LiteTopic related quota exceeded
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.
Message properties total size exceeds the threshold.
Generic code indicates that server/client encountered an unexpected condition that prevented it from fulfilling the request.
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
The HA-mechanism is not working now.
Generic code means that the server or client does not support the functionality required to fulfill the request.
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
Message persistence timeout.
Slave persistence timeout.
Generic code for unsupported operation.
Operation is not allowed in current version.
Not allowed to verify message. Chances are that you are verifying a FIFO message, as is violating FIFO semantics.
Generic code for failed message consumption.
Used in:
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`
Used in:
Original topic for this DLQ message.
Original message id for this DLQ message.
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;
Used in:
Used in:
CRC algorithm achieves goal of detecting random data error with lowest computation overhead.
MD5 algorithm achieves good balance between collision rate and computation overhead.
SHA-family has substantially fewer collision with fair amount of computation.
Used in:
Used in: , , , ,
https://en.wikipedia.org/wiki/Exponential_backoff
Used in:
Used in: , ,
Used in:
Used in:
Used in:
Used in: , , , ,
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
Used in: , , , , , ,
Used in: ,
Sequenced message
Messages that are delivered after the specified duration.
Messages that are transactional. Only committed messages are delivered to subscribers.
lite topic
Messages that lower prioritised ones may need to wait for higher priority messages to be processed first
Used in:
Indicates that if client should export local metrics to server.
The endpoint that client metrics should be exported to, which is required if the switch is on.
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
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.
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.
When `validate_message_type` flag set `false`, no need to validate message's type with messageQueue's `accept_message_types` before publishing.
Used in:
Use this option if client wishes to playback all existing messages.
Use this option if client wishes to skip all existing messages.
Use this option if time-based seek is targeted.
Used in:
Used in:
Used in: , , , , , , , , , , , , , , , , , ,
Resource name identifier, which remains unique within the abstract resource namespace.
Used in:
Used in:
Unique handle to identify message to recall, support delay message for now.
Used in:
Configurations for all clients.
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.
Request timeout for RPCs excluding long-polling.
User agent details
Application-defined metadata associated with this client instance. These properties are for observability, troubleshooting, auditing and management only. Constraints: - Maximum 32 key-value pairs per client instance - Key length: 1-64 characters, must match pattern [a-zA-Z][a-zA-Z0-9_.-]* - Value length: 0-256 characters - Total serialized size: <= 4KB Reserved prefix: "rocketmq." for system use. Server-side validation: - Reject with INVALID_CLIENT_PROPERTIES if constraints are violated - Treat values as untrusted client-declared metadata - Do NOT use for security decisions (authentication/authorization) Lifecycle: - Reported once during Telemetry stream establishment via TelemetryCommand.settings - Stored in server-side client runtime - Discarded when stream/channel is closed - Exposed via admin query APIs (e.g., producerConnection, consumerConnection)
Used in: , , , , , , , , , , , , , , , , , ,
Used in:
Subscription settings below here is appointed by client, thus it is unnecessary for server to push at present. Consumer group.
Subscription for consumer.
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.
Message receive batch size here is essential for push consumer.
Long-polling timeout for `ReceiveMessageRequest`, which is essential for push consumer.
Only lite push consumer client-side lite subscription quota limit
Only lite push consumer Maximum length limit for lite topic
Used in:
Used in:
Tag, which is optional.
Message keys
Message identifier, client-side generated, remains unique. if message_id is empty, the send message request will be aborted with status `INVALID_ARGUMENT`
Message body digest
Message body encoding. Candidate options are identity, gzip, snappy etc.
Message type, normal, FIFO or transactional.
Message born time-point.
Message born host. Valid options are IPv4, IPv6 or client host domain name.
Time-point at which the message is stored in the broker, which is absent for message publishing.
The broker that stores this message. It may be broker name, IP or arbitrary identifier that uniquely identify the server.
Time-point at which broker delivers to clients, which is optional.
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.
Message queue identifier in which a message is physically stored.
Message-queue offset at which a message is stored, which is absent for message publishing.
Period of time servers would remain invisible once a message is acquired.
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.
Define the group name of message in the same topic, which is optional.
Trace context for each message, which is optional.
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
Information to identify whether this message is from dead letter queue.
lite topic
Priority of message, which is optional
Used in:
Used in:
Used in:
User Agent
Used in:
SDK language
SDK version
Platform details, including OS name, version, arch etc.
Hostname of the node
Used in:
Used in: