Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Azure Service Bus library for Rust. Send and receive messages using queues, topics, and subscriptions. Triggers: "service bus rust", "ServiceBusClient rust", "send message servicebus rust", "receive message servicebus rust", "queue rust messaging", "topic subscription rust".
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 45% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 12% | 0% |
Use this skill when you need azure Service Bus library for Rust. Send and receive messages using queues, topics, and subscriptions. Triggers: "service bus rust", "ServiceBusClient rust", "send message servicebus rust", "receive message servicebus rust", "queue rust messaging", "topic subscription rust".
Client library for Azure Service Bus — enterprise message broker with queues and publish-subscribe topics.
> ⚠️ WARNING: This crate is in early development and SHOULD NOT be used in production. APIs may change without notice.
Use this skill when:
> IMPORTANT: Only use the official azure_messaging_servicebus crate published by the azure-sdk crates.io user. Do NOT use unofficial or community crates. Official crates use underscores in names and none have version 0.21.0.
shcargo add azure_messaging_servicebus azure_identity tokio
> If your code uses azure_core types directly, add azure_core to Cargo.toml. If you only use azure_messaging_servicebus re-exports, direct azure_core dependency is optional.
bashSERVICEBUS_NAMESPACE=<namespace>.servicebus.windows.net # Required — fully qualified namespace
| Concept | Description | | ---------------- | --------------------------------------------------------------- | | Namespace | Container for all messaging components | | Queue | Point-to-point messaging with competing consumers | | Topic | Publish-subscribe messaging — one sender, many subscribers | | Subscription | Receives messages from a topic | | Message | Package of data and metadata, with completion/abandon semantics |
rustuse azure_identity::DeveloperToolsCredential; use azure_messaging_servicebus::ServiceBusClient; #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { // Local dev: DeveloperToolsCredential. Production: use ManagedIdentityCredential. let credential = DeveloperToolsCredential::new(None)?; let client = ServiceBusClient::builder() .open("your_namespace.servicebus.windows.net", credential.clone()) .await?; Ok(()) }
rustuse azure_identity::DeveloperToolsCredential; use azure_messaging_servicebus::{ServiceBusClient, Message}; #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { let credential = DeveloperToolsCredential::new(None)?; let client = ServiceBusClient::builder() .open("your_namespace.servicebus.windows.net", credential.clone()) .await?; let sender = client.create_sender("my_queue", None).await?; let message = Message::from("Hello, Service Bus!"); sender.send_message(message, None).await?; Ok(()) }
rustuse azure_identity::DeveloperToolsCredential; use azure_messaging_servicebus::ServiceBusClient; #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { let credential = DeveloperToolsCredential::new(None)?; let client = ServiceBusClient::builder() .open("your_namespace.servicebus.windows.net", credential.clone()) .await?; let receiver = client.create_receiver("my_queue", None).await?; let messages = receiver.receive_messages(5, None).await?; for message in messages { println!("Received: {}", message.body_as_string()?); receiver.complete_message(&message, None).await?; } Ok(()) }
rustlet sender = client.create_sender("my_topic", None).await?; let message = Message::from("Hello, Topic subscribers!"); sender.send_message(message, None).await?;
rustlet receiver = client .create_receiver_for_subscription("my_topic", "my_subscription", None) .await?; let messages = receiver.receive_messages(5, None).await?; for message in messages { println!("Received: {}", message.body_as_string()?); receiver.complete_message(&message, None).await?; }
| Action | Purpose | | ---------- | -------------------------------------------------- | | complete | Remove message from queue — processing succeeded | | abandon | Release lock — message becomes available for retry |
Always complete messages after successful processing to prevent redelivery.
For Entra ID auth, assign one of these roles:
| Role | Access | | --------------------------------- | ---------------- | | Azure Service Bus Data Sender | Send messages | | Azure Service Bus Data Receiver | Receive messages | | Azure Service Bus Data Owner | Full access |
cargo add to manage dependencies, never edit Cargo.toml directly. Add and remove Rust SDK dependencies with cargo commands instead of manual manifest edits.azure_core only when importing azure_core types directly. If your code imports azure_core::http::Url, azure_core::http::RequestContent, or azure_core::error::ErrorKind, include azure_core; otherwise a direct dependency is optional.DeveloperToolsCredential for local dev, ManagedIdentityCredential for production — Rust does not provide a single DefaultAzureCredential typecomplete_message after processing to remove from queue| Resource | Link | | ------------- | ----------------------------------------------------------------------------------------------- | | API Reference | https://docs.rs/azure_messaging_servicebus/latest/azure_messaging_servicebus | | crates.io | https://crates.io/crates/azure_messaging_servicebus | | Source Code | https://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/servicebus/azure_messaging_servicebus |
Other measured skills in the registry, with their headline benchmark lift.