#azure-sdk #azure #amqp #amqp-client #cloud #sdk #client-connection

azeventhubs

为 Azure Event Hubs 未经官方认证的 AMQP 1.0 Rust 客户端

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 网络编程

Download history 119/week @ 2024-04-21 35/week @ 2024-04-28 17/week @ 2024-05-05 159/week @ 2024-05-12 142/week @ 2024-05-19 129/week @ 2024-05-26 138/week @ 2024-06-02 188/week @ 2024-06-09 129/week @ 2024-06-16 140/week @ 2024-06-23 191/week @ 2024-06-30 93/week @ 2024-07-07 102/week @ 2024-07-14 148/week @ 2024-07-21 280/week @ 2024-07-28

每月 663 次下载

MIT 许可证

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 实现通过相应的功能标志公开给用户(请参阅以下功能标志部分)。用户应确保启用 rustlsnative-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