SuperAPI AI 工具集

azure-eventhub-rust

数据与分析

查看项目

更新于 10-16 02:14

技能介绍

用途

Azure Event Hubs 是 Azure 上的大数据流式平台与事件摄取服务。本技能为 Rust 提供对应的客户端库 azure_messaging_eventhubs,用于向 Event Hub 发送事件以及从分区接收事件,实现流式数据摄取。

核心概念

  • Namespace:Event Hub 的容器。
  • Event Hub:可分区的事件流,用于并行处理。
  • Partition:有序的事件序列。
  • Producer:向 Event Hub 发送事件。
  • Consumer:从分区接收事件。

安装与配置

安装命令:

cargo add azure_messaging_eventhubs azure_identity

环境变量:

EVENTHUBS_HOST=<namespace>.servicebus.windows.net
EVENTHUB_NAME=<eventhub-name>

主要能力

生产者客户端

创建 Producer:

use azure_identity::DeveloperToolsCredential;
use azure_messaging_eventhubs::ProducerClient;

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

发送单个事件:

producer.send_event(vec![1, 2, 3, 4], None).await?;

发送批量事件:

let batch = producer.create_batch(None).await?;
batch.try_add_event_data(b"event 1".to_vec(), None)?;
batch.try_add_event_data(b"event 2".to_vec(), None)?;

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

消费者客户端

创建 Consumer:

use azure_messaging_eventhubs::ConsumerClient;

let credential = DeveloperToolsCredential::new(None)?;
let consumer = ConsumerClient::builder()
    .open("<namespace>.servicebus.windows.net", "eventhub-name", credential.clone())
    .await?;

接收事件:

// Open receiver for specific partition
let receiver = consumer.open_partition_receiver("0", None).await?;

// Receive events
let events = receiver.receive_events(100, None).await?;
for event in events {
    println!("Event data: {:?}", event.body());
}

获取 Event Hub 属性:

let properties = consumer.get_eventhub_properties(None).await?;
println!("Partitions: {:?}", properties.partition_ids);

获取分区属性:

let partition_props = consumer.get_partition_properties("0", None).await?;
println!("Last sequence number: {}", partition_props.last_enqueued_sequence_number);

最佳实践

  • 复用客户端:创建一次,多次发送事件。
  • 使用批量:比逐条发送更高效。
  • 检查批量容量:try_add_event_data 在批量已满时返回 false。
  • 并行处理分区:每个分区可独立消费。
  • 使用消费者组:隔离不同的消费应用程序。
  • 处理检查点:分布式消费者可使用 azure_messaging_eventhubs_checkpointstore_blob。

检查点存储(可选)

用于带检查点功能的分布式消费者:

cargo add azure_messaging_eventhubs_checkpointstore_blob

参考链接

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

适用场景

需要在 Rust 项目中接入 Azure Event Hubs,进行事件发送、接收或流式数据摄取时适用。

限制

  • 仅在任务明确匹配上述范围时使用。
  • 不应将输出视为环境特定验证、测试或专家评审的替代品。
  • 当缺少必要输入、权限、安全边界或成功标准时,应停止并请求澄清。
  • 收费、价格、平台、效果等其他信息暂未提供。