К основному содержанию
скилл

azure-eventhub-rust — скилл для Claude Code: обзор и установка

Набор инструкций для Claude Code и Copilot по работе с крейтом azure_messaging_eventhubs в Rust. Помогает настроить стриминг событий, батчинг и чтение из партиций.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add microsoft/skills --skill azure-eventhub-rust -a claude-code
Открыть на GitHub

Что делает azure-eventhub-rust

Скилл даёт ассистенту правила работы с официальным крейтом azure_messaging_eventhubs. Он учит модель не брать сторонние пакеты и сразу подключать нужный стек: azure_identity, tokio и futures через вызовы cargo add.

Внутри собраны паттерны для отправки одиночных сообщений и батчей через ProducerClient, а также стриминга из партиций с помощью ConsumerClient. Скилл прямо учитывает сигнатуры: в ProducerClient::builder().open() имя хаба передаётся как &str, а в ConsumerClient требуется String. Тело события извлекается через цепочку event.event_data().body().

В Rust-клиенте нет привычного DefaultAzureCredential, поэтому код упадёт при попытке его импортировать: локально нужно инициализировать DeveloperToolsCredential, а в продакшене — ManagedIdentityCredential.

Какие задачи решает

  • настроить отправку событий батчами через ProducerClient
  • читать стрим сообщений из партиции с заданной позиции
  • сконфигурировать аутентификацию в Azure без несуществующего DefaultAzureCredential
  • подключить официальный крейт azure_messaging_eventhubs командами cargo add

Примеры запросов агенту

  • Напиши код на Rust для отправки батча событий в Azure Event Hubs
  • Покажи пример чтения событий из партиции 0 с самого начала стрима на Rust
  • Как настроить аутентификацию в Event Hubs локально через DeveloperToolsCredential?

Как установить azure-eventhub-rust

1Через Skills CLI (Vercel)

npx skills add microsoft/skills --skill azure-eventhub-rust -a claude-code

2Вручную: положить файлы

~/.claude/skills/azure-eventhub-rust/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/azure-eventhub-rust/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о azure-eventhub-rust

Как установить azure-eventhub-rust в Claude Code?

Для установки выполните команду npx skills add microsoft/skills --skill azure-eventhub-rust -a claude-code. Файл навыка сохранится в ~/.claude/skills/azure-eventhub-rust/SKILL.md.

Для чего нужен этот скилл?

Он обучает ИИ-ассистента использовать официальный крейт azure_messaging_eventhubs. Это предотвращает генерацию устаревшего кода и ошибок с типами аргументов и авторизацией.

Почему в коде нельзя использовать DefaultAzureCredential?

Крейт azure_identity для Rust не содержит типа DefaultAzureCredential. Вместо него для локальной разработки применяется DeveloperToolsCredential, а на сервере — ManagedIdentityCredential.

Исходный текст

SKILL.md · MIT
---
name: azure-eventhub-rust
description: |
  Azure Event Hubs library for Rust. Send and receive events for streaming data ingestion and batch processing.
  Triggers: "event hubs rust", "ProducerClient rust", "ConsumerClient rust", "send event rust", "streaming rust", "eventhub rust".
license: MIT
metadata:
  author: Microsoft
  package: azure_messaging_eventhubs
---

# Azure Event Hubs library for Rust

Client library for Azure Event Hubs — send and receive events for streaming data ingestion.

Use this skill when:

- An app needs to send events to Azure Event Hubs from Rust
- You need to receive and process events from partitions
- You need batch sending for throughput optimization
- You need to control consumer start position

> **IMPORTANT:** Only use the official `azure_messaging_eventhubs` 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_eventhubs azure_identity tokio futures
```

> `DeveloperToolsCredential::new(None)?` already returns an `Arc<DeveloperToolsCredential>`, so you can pass or clone it directly into `.open()`. Add `azure_core` only when you need direct `azure_core` imports such as `ErrorKind`.

## Environment Variables

```bash
EVENTHUBS_HOST=<namespace>.servicebus.windows.net # Required — fully qualified namespace
EVENTHUB_NAME=<eventhub-name>                     # Required — name of the Event Hub
```

## Key Concepts

| Concept       | Description                                          |
| ------------- | ---------------------------------------------------- |
| **Namespace** | Container for one or more Event Hubs                 |
| **Event Hub** | Stream of events, partitioned for parallel reads     |
| **Partition** | Ordered, append-only sequence of events              |
| **Producer**  | Sends events via `ProducerClient`                    |
| **Consumer**  | Receives events from partitions via `ConsumerClient` |

## Authentication

Rust Azure SDK code must not use `DefaultAzureCredential`. The Rust identity crate does not provide that type.

```rust
use azure_identity::DeveloperToolsCredential;
use azure_messaging_eventhubs::ProducerClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Local dev: DeveloperToolsCredential. Production: use ManagedIdentityCredential.
    let credential = DeveloperToolsCredential::new(None)?;

    let producer = ProducerClient::builder()
        .open(
            "<namespace>.servicebus.windows.net",
            "<eventhub-name>",
            credential.clone(),
        )
        .await?;
    Ok(())
}
```

Prefer the crate README/examples when checking builder signatures and receive-stream event wrapper shapes.

## Core Workflow

### Send Events

```rust
// Send a single event
producer.send_event(vec![1, 2, 3, 4], None).await?;
```

### Send Batch

```rust
let batch = producer.create_batch(None).await?;
batch.try_add_event_data(vec![1, 2, 3, 4], None)?;

producer.send_batch(batch, None).await?;
```

### Receive Events

```rust
use azure_identity::DeveloperToolsCredential;
use azure_messaging_eventhubs::ConsumerClient;

// Local dev: DeveloperToolsCredential. Production: use ManagedIdentityCredential.
let credential = DeveloperToolsCredential::new(None)?;
let consumer = ConsumerClient::builder()
    .open(
        "<namespace>.servicebus.windows.net",
        "<eventhub-name>".to_string(),
        credential.clone(),
    )
    .await?;
```

### Receive from Partition

```rust
use futures::stream::StreamExt;
use azure_messaging_eventhubs::{
    ConsumerClient, OpenReceiverOptions, StartLocation, StartPosition,
};

let receiver = consumer
    .open_receiver_on_partition(
        "0".to_string(),
        Some(OpenReceiverOptions {
            start_position: Some(StartPosition {
                location: StartLocation::Earliest,
                ..Default::default()
            }),
            ..Default::default()
        }),
    )
    .await?;

let mut stream = receiver.stream_events();
while let Some(event_result) = stream.next().await {
    match event_result {
        // Body is on the inner event data, not the received wrapper: `event.event_data().body()`.
        Ok(event) => {
            let body = event.event_data().body().unwrap_or_default();
            println!("Received: {:?}", body);
        }
        Err(err) => eprintln!("Error: {:?}", err),
    }
}
```

## RBAC Roles

For Entra ID auth, assign one of these roles:

| Role                             | Access         |
| -------------------------------- | -------------- |
| `Azure Event Hubs Data Sender`   | Send events    |
| `Azure Event Hubs Data Receiver` | Receive events |
| `Azure Event Hubs 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. **Pass or clone credentials directly into `.open()`.** `DeveloperToolsCredential::new(None)?` already returns an `Arc`, so you do not need to annotate the binding as `Arc<dyn TokenCredential>` unless you are naming that trait object type explicitly.
3. **Match the builder signature.** `ProducerClient::builder().open(...)` takes the hub name as `&str`, while `ConsumerClient::builder().open(...)` takes an owned `String`.
4. **Use `DeveloperToolsCredential`** for local dev, **`ManagedIdentityCredential`** for production — Rust does not provide a single `DefaultAzureCredential` type
5. **Never hardcode credentials** — use environment variables or managed identity
6. **Use batching** — `create_batch` + `send_batch` for throughput optimization
7. **Handle errors per event** — match on `Ok`/`Err` in the event stream
8. **Extract event bodies via `event.event_data().body()`**, not `event.body()` — `ReceivedEventData` wraps the underlying `EventData`.
9. **Specify start position** — use `StartLocation::Earliest` or `StartLocation::Latest` to control where consumption begins
10. **Run `cargo clippy -- -D warnings`** when the prompt, eval, or CI expects lint-clean output

## Reference Links

| Resource      | Link                                                                                          |
| ------------- | --------------------------------------------------------------------------------------------- |
| API Reference | https://docs.rs/azure_messaging_eventhubs/latest/azure_messaging_eventhubs                    |
| crates.io     | https://crates.io/crates/azure_messaging_eventhubs                                            |
| Source Code   | https://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/eventhubs/azure_messaging_eventhubs |

© Microsoft · MIT · microsoft/skills

Похожие скиллы

Все скиллы по теме «Облака: AWS, Azure, GCP» →
caveman-manage JuliusBrussee Проверяет состояние и результаты экспериментов Caveman Cloud, предлагает одно действие или блокирует рискованный запрос. Нужен перед запуском, одобрением, отменой или откатом. CX Codex +1 104 200установок workers-best-practices cloudflare Скилл настраивает ИИ на проверку продакшен-кода Cloudflare Workers по актуальным правилам рантайма, типам Wrangler и антипаттернам. CX Codex +1 126 100установок cloudflare-email-service cloudflare Скилл для работы с Cloudflare Email Sending и Email Routing: помогает настроить отправку и приём писем в Workers. CX Codex +1 102 300установок firebase-basics официальный google Скилл настраивает Firebase CLI, помогает войти в аккаунт, создать или выбрать проект и скачать конфигурацию Android или iOS. CX Codex 14 100установок cloudflare-one cloudflare Помогает агенту проектировать, настраивать и разбирать развёртывания Cloudflare One Zero Trust и SASE. Пригодится, когда нужно спланировать Access, Gateway или туннели без похода в документацию вручную. CX Codex +1 93 100установок cloudflare-one-migrations cloudflare Помогает спланировать переход с VPN, SWG или SASE на Cloudflare One: сопоставляет политики, находит пробелы и расписывает порядок выката. CX Codex +1 89 500установок

Из того же набора232

Весь набор →
frontend-ui-dark-ts Скилл для сборки тёмных React-интерфейсов на Tailwind CSS: тема, glassmorphism, анимации Framer Motion. Пригодится для дашбордов и админок. 5установок azure-storage-blob-rust Подсказывает агенту, как работать с Azure Blob Storage из Rust: загрузка и скачивание блобов, контейнеры, аутентификация через RBAC. 5установок azure-keyvault-certificates-rust Помогает писать на Rust код для X.509-сертификатов в Azure Key Vault: создание, обновление, удаление, подпись. Пригодится, когда агенту нужно выдать самоподписанный сертификат или разобраться с LRO. 5установок azure-identity-rust Скилл подсказывает агенту, как подключить Microsoft Entra ID к Rust-приложению: какой credential взять для локальной разработки, а какой для продакшена. 5установок azure-cosmos-rust Подсказывает агенту, как работать с Azure Cosmos DB NoSQL API из Rust: CRUD документов, контейнеры, ключи разделов и аутентификация. 5установок pydantic-models-py Скилл задаёт структуру моделей Pydantic v2 по шаблону из пяти вариантов: Base, Create, Update, Response и InDB. Пригодится, когда нужны схемы запросов и ответов API. 5установок azure-validate Прогоняет конфигурацию, инфраструктуру, RBAC и разрешения managed identity до того, как вы что-то выкатите в Azure. Полезен, когда деплой падает на правах или на неверном azure.yaml. 4установок azure-deploy Скилл запускает деплой уже подготовленного приложения в Azure через azd, Terraform или Azure CLI. Перед этим нужны план и пройденная валидация. 4установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой