opção
LarLar Skill Desenvolvimento de APIs azure-servicebus-rust

azure-servicebus-rust

microsoft/skills microsoft/skills

Envie e receba mensagens usando filas, tópicos e assinaturas do Azure Service Bus a partir de aplicativos Rust.

...Expandir tudo
8
Tempo atualizado 13 de Setembro de 2026

Biblioteca do Azure Service Bus para Rust

Biblioteca de cliente para o Azure Service Bus — corretor de mensagens empresarial com filas e tópicos de publicação e assinatura.

⚠️ AVISO: Este crate está em desenvolvimento inicial e NÃO DEVE ser usado em produção. As APIs podem ser alteradas sem aviso prévio.

Use esta habilidade quando:

  • Um aplicativo precisa enviar ou receber mensagens por meio do Azure Service Bus a partir do Rust
  • Você precisa de mensagens baseadas em filas com consumidores concorrentes
  • Você precisa de mensagens de publicação e assinatura com tópicos e assinaturas
  • Você precisa de entrega confiável de mensagens com semântica de conclusão

IMPORTANTE: Use apenas o crate oficial azure_messaging_servicebus publicado pelo usuário do crates.io azure-sdk. NÃO use crates não oficiais ou da comunidade. Os crates oficiais usam underscores nos nomes e nenhum deles possui a versão 0.21.0.

Instalação

cargo add azure_messaging_servicebus azure_identity tokio

Se o seu código usar tipos azure_core diretamente, adicione azure_core ao Cargo.toml. Se você usar apenas reexportações de azure_messaging_servicebus, a dependência direta do azure_core é opcional.

Variáveis de Ambiente

SERVICEBUS_NAMESPACE=<namespace>.servicebus.windows.net # Obrigatório — namespace totalmente qualificado
</namespace>

Conceitos Principais

ConceitoDescrição
**Namespace**Contêiner para todos os componentes de mensagens
**Fila**Mensagens ponto a ponto com consumidores concorrentes
**Tópico**Mensagens de publicação e assinatura — um remetente, muitos assinantes
**Assinatura**Recebe mensagens de um tópico
**Mensagem**Pacote de dados e metadados, com semântica de conclusão/abandono

Autenticação

use azure_identity::DeveloperToolsCredential;
use azure_messaging_servicebus::ServiceBusClient;

#[tokio::main]
async fn main() -> Result> {
    // Desenvolvimento local: DeveloperToolsCredential. Produção: use ManagedIdentityCredential.
    let credential = DeveloperToolsCredential::new(None)?;
    let client = ServiceBusClient::builder()
        .open("your_namespace.servicebus.windows.net", credential.clone())
        .await?;
    Ok(())
}

Fluxo de Trabalho Principal

Enviar uma Mensagem para uma Fila

use azure_identity::DeveloperToolsCredential;
use azure_messaging_servicebus::{ServiceBusClient, Message};

#[tokio::main]
async fn main() -> Result> {
    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(())
}

Receber Mensagens de uma Fila

use azure_identity::DeveloperToolsCredential;
use azure_messaging_servicebus::ServiceBusClient;

#[tokio::main]
async fn main() -> Result> {
    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(())
}

Enviar uma Mensagem para um Tópico

let sender = client.create_sender("my_topic", None).await?;
let message = Message::from("Hello, Topic subscribers!");
sender.send_message(message, None).await?;

Receber Mensagens de uma Assinatura

let 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?;
}

Acordo de Mensagens

AçãoFinalidade
`complete`Remover mensagem da fila — processamento bem-sucedido
`abandon`Liberar bloqueio — a mensagem fica disponível para nova tentativa

Sempre conclua as mensagens após o processamento bem-sucedido para evitar a reentrega.

Funções RBAC

Para autenticação do Entra ID, atribua uma destas funções:

FunçãoAcesso
`Azure Service Bus Data Sender`Enviar mensagens
`Azure Service Bus Data Receiver`Receber mensagens
`Azure Service Bus Data Owner`Acesso total

Melhores Práticas

  1. Use cargo add para gerenciar dependências, nunca edite o Cargo.toml diretamente. Adicione e remova dependências do SDK do Rust com comandos do cargo em vez de edições manuais do manifesto.
  2. Adicione azure_core apenas ao importar tipos azure_core diretamente. Se o seu código importar azure_core::http::Url, azure_core::http::RequestContent ou azure_core::error::ErrorKind, inclua o azure_core; caso contrário, uma dependência direta é opcional.
  3. Use DeveloperToolsCredential para desenvolvimento local, ManagedIdentityCredential para produção — o Rust não fornece um único tipo DefaultAzureCredential
  4. Nunca codifique credenciais — use variáveis de ambiente ou identidade gerenciada
  5. Atribua funções RBAC — garanta que a identidade tenha funções de dados apropriadas do Service Bus
  6. Sempre conclua as mensagens — chame complete_message após o processamento para removê-las da fila
  7. Use tópicos para distribuição — quando vários consumidores precisarem das mesmas mensagens, use tópicos com assinaturas
  8. Este crate é pré-produção — as APIs podem ser alteradas; fixe a versão da sua dependência com comandos do cargo no seu fluxo de trabalho de dependências

Links de Referência

RecursoLink
Referência da APIhttps://docs.rs/azure\_messaging\_servicebus/latest/azure\_messaging\_servicebus
crates.iohttps://crates.io/crates/azure\_messaging\_servicebus
Código Fontehttps://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/servicebus/azure\_messaging\_servicebus
Ver no GitHub
---
name: azure-servicebus-rust
description: Send and receive messages using Azure Service Bus queues, topics, and subscriptions from Rust applications.
license: MIT
---

# Azure Service Bus library for 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:

- An app needs to send or receive messages via Azure Service Bus from Rust
- You need queue-based messaging with competing consumers
- You need publish-subscribe messaging with topics and subscriptions
- You need reliable message delivery with completion semantics

> **IMPORTANT:** Only use the official `azure_messaging_servicebus` crate published by the [azure-sdk](https://crates.io/users/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.

## Installation

```sh
cargo 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.

## Environment Variables

```bash
SERVICEBUS_NAMESPACE=<namespace>.servicebus.windows.net # Required — fully qualified namespace
```

## Key Concepts

| 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 |

## Authentication

```rust
use 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(())
}
```

## Core Workflow

### Send a Message to a Queue

```rust
use 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(())
}
```

### Receive Messages from a Queue

```rust
use 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(())
}
```

### Send a Message to a Topic

```rust
let sender = client.create_sender("my_topic", None).await?;
let message = Message::from("Hello, Topic subscribers!");
sender.send_message(message, None).await?;
```

### Receive Messages from a Subscription

```rust
let 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?;
}
```

## Message Settlement

| 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.

## RBAC Roles

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      |

## Best Practices

1. **Use `cargo add` to manage dependencies, never edit `Cargo.toml` directly.** Add and remove Rust SDK dependencies with cargo commands instead of manual manifest edits.
2. **Add `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.
3. **Use `DeveloperToolsCredential`** for local dev, **`ManagedIdentityCredential`** for production — Rust does not provide a single `DefaultAzureCredential` type
4. **Never hardcode credentials** — use environment variables or managed identity
5. **Assign RBAC roles** — ensure the identity has appropriate Service Bus data roles
6. **Always complete messages** — call `complete_message` after processing to remove from queue
7. **Use topics for fan-out** — when multiple consumers need the same messages, use topics with subscriptions
8. **This crate is pre-production** — APIs may change; pin your dependency version with cargo commands in your dependency workflow

## Reference Links

| 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 |

Todos os arquivos

0 arquivos

Instalar azure-servicebus-rust

Baixe e extraia os arquivos de habilidade para o diretório .claude/skills/.

Baixar ZIP

Clone o repositório e copie os arquivos da habilidade para o seu projeto.

git clone https://github.com/microsoft/skills/tree/main/.github/plugins/azure-sdk-rust/skills/azure-servicebus-rust # Copy SKILL.md to your .claude/skills/ directory

Copiar Copiar
Configuração rápida: Copie a pasta de habilidades para .claude/skills/ O Claude detectará e usará automaticamente a habilidade
Repositório microsoft/skills

Habilidades relacionadas

agentwallet
Tempo atualizado 7 de Julho de 2026
brightdata-cli
Tempo atualizado 29 de Junho de 2026
humanize
Tempo atualizado 7 de Julho de 2026
korean-stock-search
Tempo atualizado 8 de Julho de 2026
OR