Azure Event Hubs Rust SDK
Azure Event Hubs SDK for Rust
Azure Event Hubs 的客户端库 —— 一个大数据流平台和事件摄取服务。
安装
cargo add azure_messaging_eventhubs azure_identity环境变量
EVENTHUBS_HOST=<namespace>.servicebus.windows.net
EVENTHUB_NAME=<eventhub-name>核心概念
- Namespace (命名空间) — Event Hubs 的容器
- Event Hub (事件中心) — 分区以支持并行处理的事件流
- Partition (分区) — 有序的事件序列
- Producer (生产者) — 向 Event Hub 发送事件
- Consumer (消费者) — 从分区接收事件
生产者客户端 (Producer Client)
创建生产者
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 Client)
创建消费者
use azure_messaging_eventhubs::ConsumerClient;
let credential = DeveloperToolsCredential::new(None)?;
let consumer = ConsumerClient::builder()
.open("<namespace>.servicebus.windows.net", "eventhub-name", credential.clone())
.await?;
接收事件
// 为特定分区打开接收器
let receiver = consumer.open_partition_receiver("0", None).await?;
// 接收事件
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);最佳实践
1. 复用客户端 — 创建一次,发送多次事件
2. 使用批处理 — 比单个发送更高效
3. 检查批次容量 — 当批次满时 try_add_event_data 会返回 false
4. 并行处理分区 — 每个分区可以独立消费
5. 使用消费者组 — 隔离不同的消费应用程序
6. 处理检查点 (Checkpointing) — 分布式消费者请使用 azure_messaging_eventhubs_checkpointstore_blob
检查点存储 (可选)
用于需要检查点的分布式消费者:
cargo add azure_messaging_eventhubs_checkpointstore_blob参考链接
| 资源 | 链接 |
|----------|------|
| API 参考 | https://docs.rs/azure_messaging_eventhubs |
| 源代码 | https://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/eventhubs/azure_messaging_eventhubs |
| crates.io | https://crates.io/crates/azure_messaging_eventhubs |
适用场景
此技能适用于执行概览中描述的工作流或操作。局限性
- 仅在任务明确符合其范围时使用此技能。
- 不要将输出结果视为针对特定环境的验证、测试或专家评审的替代方案。
- 如果缺少必要的输入、权限、安全边界或验收标准,请停止操作并请求澄清。