26 个版本 (7 个重大更改)
0.20.0 | 2024 年 4 月 26 日 |
---|---|
0.19.4 | 2024 年 2 月 22 日 |
0.19.2 | 2024 年 1 月 25 日 |
0.18.3 | 2023 年 12 月 17 日 |
0.1.1 | 2023 年 5 月 1 日 |
#1536 in 网络编程
每月 663 次下载
450KB
9K SLoC
azeventhubs
一个非官方和实验性的 Rust Azure Event Hubs 客户端库。
此 crate 拥有与 Azure SDK for .Net 类似的结构,因此对于使用过 dotnet SDK 的人来说应该很熟悉。此 crate 仍在开发中,并非所有功能都已实现。
示例
事件中心生产者示例
use azeventhubs::producer::{
EventHubProducerClient, EventHubProducerClientOptions, SendEventOptions,
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut producer_client =
EventHubProducerClient::new_from_connection_string(
"<CONNECTION_STRING>", // Replace with your connection string
"<EVENT_HUB_NAME>".to_string(), // Replace with your hub name
EventHubProducerClientOptions::default()
).await?;
let partition_ids = producer_client.get_partition_ids().await?;
let event = "Hello, world to first partition!";
let options = SendEventOptions::new().with_partition_id(&partition_ids[0]);
producer_client.send_event(event, options).await?;
producer_client.close().await?;
Ok(())
}
事件中心消费者示例
use futures_util::StreamExt;
use azeventhubs::consumer::{EventHubConsumerClient, EventHubConsumerClientOptions, EventPosition, ReadEventOptions};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create a consumer client
let mut consumer_client =
EventHubConsumerClient::new_from_connection_string(
EventHubConsumerClient::DEFAULT_CONSUMER_GROUP_NAME,
"<CONNECTION_STRING>", // Replace with your connection string
"<EVENT_HUB_NAME>".to_string(), // Replace with your hub name
EventHubConsumerClientOptions::default(),
).await?;
let partition_ids = consumer_client.get_partition_ids().await?;
let starting_position = EventPosition::earliest();
let options = ReadEventOptions::default();
// Get a stream of events from the first partition
let mut stream = consumer_client
.read_events_from_partition(&partition_ids[0], starting_position, options)
.await?;
// Receive 30 events
let mut counter = 0;
while let Some(event) = stream.next().await {
let event = event?;
let body = event.body()?;
let value = std::str::from_utf8(body)?;
log::info!("{:?}", value);
log::info!("counter: {}", counter);
counter += 1;
if counter > 30 {
break;
}
}
// Close the stream
stream.close().await?;
// Close the consumer client
consumer_client.close().await?;
Ok(())
}
已实现和未实现的功能?
功能 | 支持 |
---|---|
事件中心连接 | 是 |
事件中心生产者 | 是 |
事件中心消费者 | 是 |
分区接收器 | 是 |
事件中心缓冲生产者 | 尚未实现 |
事件中心处理器 | 尚未实现 |
检查点存储 | 尚未实现 |
TLS 支持
客户端应用程序与 Azure 服务事件中心命名空间之间的通信使用传输层安全性 (TLS) 加密。TLS 实现通过相应的功能标志公开给用户(请参阅以下功能标志部分)。用户应确保启用 rustls
或 native-tls
功能,并且只能启用一个 TLS 实现。同时启用这两个功能是不受支持的,并将导致错误。
native-tls
功能默认启用,并将使用 native-tls
crate 提供TLS 支持。 rustls
功能将使用 rustls
crate 和 webpki-roots
crate 提供TLS 支持。
功能标志
此 crate 支持以下功能标志
功能 | 描述 |
---|---|
默认 |
启用 "native-tls" 功能 |
rustls |
启用使用 rustls crate 提供TLS 支持 |
native-tls |
启用使用 native-tls crate 提供TLS 支持 |
WebAssembly 支持
WebAssembly 目前还不受支持。
MSRV
1.75.0
许可证:MIT
依赖关系
~15–30MB
~483K SLoC