Client SDKsRustReference
Queues
QueueMessage, QueuePolicy, and point-to-point queue operations
QueueMessage
A message for the point-to-point queue pattern. Messages are persisted and delivered to exactly one consumer.
| Field | Type | Description |
|---|---|---|
id | String | Message ID (auto-generated UUID v4 when empty) |
client_id | String | Sender identity override |
channel | String | Target queue channel name (required) |
metadata | String | Optional UTF-8 metadata |
body | Vec<u8> | Message payload bytes |
tags | HashMap<String, String> | Arbitrary key-value pairs |
policy | Option<QueuePolicy> | Delivery policy (expiration, delay, dead-letter) |
attributes | Option<QueueMessageAttributes> | Server-assigned attributes (receive only) |
Builder
let msg = QueueMessage::builder()
.channel("tasks")
.body(b"process-order-42".to_vec())
.expiration_seconds(300)
.max_receive_count(3)
.max_receive_queue("tasks.dead-letter")
.build();QueuePolicy
Controls expiration, delayed delivery, and dead-letter routing.
| Field | Type | Default | Description |
|---|---|---|---|
expiration_seconds | i32 | 0 | Seconds until message expires (0 = no expiration) |
delay_seconds | i32 | 0 | Seconds to delay before visible (0 = immediate) |
max_receive_count | i32 | 0 | Max delivery attempts before dead-letter (0 = unlimited) |
max_receive_queue | String | "" | Dead-letter queue channel |
QueueSendResult
Returned by send_queue_message.
| Field | Type | Description |
|---|---|---|
message_id | String | Server-assigned message identifier |
sent_at | i64 | Acceptance timestamp (Unix nanoseconds) |
expiration_at | i64 | Expiration timestamp |
delayed_to | i64 | Delay-until timestamp |
is_error | bool | Whether the server reported an error |
error | String | Error message when is_error is true |
QueueMessageAttributes
Server-assigned attributes on received messages.
| Field | Type | Description |
|---|---|---|
timestamp | i64 | Enqueue timestamp (Unix nanoseconds) |
sequence | u64 | Monotonic sequence within the queue |
md5_of_body | String | MD5 hash of the message body |
receive_count | i32 | Number of deliveries (including current) |
re_routed | bool | Whether re-routed from another queue |
re_routed_from_queue | String | Original queue when re_routed is true |
expiration_at | i64 | Expiration timestamp |
delayed_to | i64 | Delay-until timestamp |
Client Methods
send_queue_message
let result = client.send_queue_message(msg).await?;
println!("Sent: {}", result.message_id);send_queue_messages
Batch send multiple messages.
let results = client.send_queue_messages(vec![msg1, msg2]).await?;receive_queue_messages
Pull messages from a queue.
let messages = client.receive_queue_messages("tasks", 10, 5, false).await?;ack_all_queue_messages
Acknowledge all pending messages.
let req = AckAllQueueMessagesRequest {
request_id: String::new(),
client_id: String::new(),
channel: "tasks".to_string(),
wait_time_seconds: 5,
};
let resp = client.ack_all_queue_messages(&req).await?;Was this page helpful?