オプション
家 Skill API開発 azure-servicebus-rust

azure-servicebus-rust

microsoft/skills microsoft/skills

Rust アプリケーションから Azure Service Bus のキュー、トピック、サブスクリプションを使用してメッセージを送信および受信します。

...すべて拡張します
8
更新された時間 2026年9月13日

Rust 用 Azure Service Bus ライブラリ

Azure Service Bus のクライアントライブラリ — キューおよびパブリッシュサブスクライブトピックを備えたエンタープライズ向けメッセージブローカー。

⚠️ 警告: このクレートは初期開発段階にあり、本番環境では使用しないでください。API は予告なく変更される場合があります。

以下の場面でこのスキルを使用してください:

  • アプリケーションが Rust から Azure Service Bus を介してメッセージを送受信する必要がある場合
  • 競合消費者を伴うキューベースのメッセージングが必要な場合
  • トピックおよびサブスクリプションを伴うパブリッシュサブスクライブメッセージングが必要な場合
  • 完了セマンティクスを伴う信頼性の高いメッセージ配信が必要な場合

重要: azure-sdk crates.io ユーザーによって公開された公式の azure_messaging_servicebus クレートのみを使用してください。非公式またはコミュニティ製のクレートは使用しないでください。公式クレートは名前にアンダースコアを使用し、いずれもバージョン 0.21.0 を持っていません。

インストール

cargo add azure_messaging_servicebus azure_identity tokio

コードで azure_core 型を直接使用する場合は、Cargo.tomlazure_core を追加してください。azure_messaging_servicebus の再エクスポートのみを使用する場合は、azure_core の直接依存関係はオプションです。

環境変数

SERVICEBUS_NAMESPACE=<namespace>.servicebus.windows.net # 必須 — 完全修飾ネームスペース
</namespace>

主要な概念

概念説明
**ネームスペース**すべてのメッセージングコンポーネントのコンテナ
**キュー**競合消費者を伴うポイントツーポイントメッセージング
**トピック**パブリッシュサブスクライブメッセージング — 1 人の送信者、複数の購読者
**サブスクリプション**トピックからメッセージを受信
**メッセージ**データとメタデータのパッケージ。完了/放棄セマンティクスを持つ

認証

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

#[tokio::main]
async fn main() -> Result> {
    // ローカル開発: DeveloperToolsCredential。本番環境: ManagedIdentityCredential を使用。
    let credential = DeveloperToolsCredential::new(None)?;
    let client = ServiceBusClient::builder()
        .open("your_namespace.servicebus.windows.net", credential.clone())
        .await?;
    Ok(())
}

コアワークフロー

キューへのメッセージ送信

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(())
}

キューからのメッセージ受信

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(())
}

トピックへのメッセージ送信

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

サブスクリプションからのメッセージ受信

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

メッセージの処理完了

アクション目的
`complete`キューからメッセージを削除 — 処理が成功した
`abandon`ロックを解放 — メッセージが再試行のために利用可能になる

処理が成功した後は常にメッセージを処理完了し、再配信を防いでください。

RBAC ロール

Entra ID 認証の場合、以下のロールのいずれかを割り当てます:

ロールアクセス権限
`Azure Service Bus Data Sender`メッセージの送信
`Azure Service Bus Data Receiver`メッセージの受信
`Azure Service Bus Data Owner`フルアクセス

ベストプラクティス

  1. 依存関係の管理には cargo add を使用し、Cargo.toml を直接編集しないでください。 手動のマニフェスト編集の代わりに、cargo コマンドを使用して Rust SDK の依存関係を追加および削除してください。
  2. azure_core 型を直接インポートする場合のみ azure_core を追加してください。 コードで azure_core::http::Urlazure_core::http::RequestContent、または azure_core::error::ErrorKind をインポートする場合は、azure_core を含めてください。それ以外の場合は、直接の依存関係はオプションです。
  3. ローカル開発には DeveloperToolsCredential を、本番環境には ManagedIdentityCredential を使用してください。 Rust には単一の DefaultAzureCredential 型は提供されていません。
  4. 資格情報をハードコードしないでください。 環境変数またはマネージドアイデンティティを使用してください。
  5. RBAC ロールを割り当ててください。 アイデンティティに適切な Service Bus データロールがあることを確認してください。
  6. 常にメッセージを処理完了してください。 処理後に complete_message を呼び出して、キューから削除してください。
  7. ファンアウトにはトピックを使用してください。 複数の消費者が同じメッセージを必要とする場合は、サブスクリプション付きのトピックを使用してください。
  8. このクレートはプレプロダクション段階です。 API は変更される可能性があります。依存関係ワークフローで cargo コマンドを使用して依存関係のバージョンを固定してください。

参照リンク

リソースリンク
API リファレンスhttps://docs.rs/azure\_messaging\_servicebus/latest/azure\_messaging\_servicebus
crates.iohttps://crates.io/crates/azure\_messaging\_servicebus
ソースコードhttps://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/servicebus/azure\_messaging\_servicebus
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 |

すべてのファイル

0件のファイル

azure-servicebus-rustをインストール

スキルファイルをダウンロードして、.claude/skills/ ディレクトリに展開してください。

ZIPをダウンロード

リポジトリをクローンし、スキルファイルをプロジェクトにコピーしてください。

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

コピー コピー
クイックセットアップ: スキルフォルダを .claude/skills/ にコピーしてください。Claude はそのスキルを自動的に検出し、使用します。
リポジトリ microsoft/skills

関連スキル

brightdata-cli
更新された時間 2026年6月29日
humanize
更新された時間 2026年7月7日
agentwallet
更新された時間 2026年7月7日
korean-stock-search
更新された時間 2026年7月8日
OR