16个不稳定版本 (7个破坏性更新)
新功能 0.20.3 | 2024年8月14日 |
---|---|
0.20.1 | 2024年7月19日 |
0.19.2 | 2024年2月22日 |
0.18.0 | 2023年12月13日 |
0.1.2 | 2023年2月7日 |
#492 in 网络编程
每月1,262次下载
590KB
11K SLoC
azservicebus
为Azure Service Bus提供非官方和实验性的AMQP 1.0客户端。
此crate的结构与dotnet sdk类似(Azure.Messaging.ServiceBus),并且比azure_messaging_servicebus提供更多功能。支持的服务总线功能列表如下(支持的服务总线功能)。在REST客户端和AMQP 1.0客户端中支持的功能的完整比较可以在此处找到(此处)。
因为此crate目前位于azure-sdk-for-rust
的分支中,而GitHub似乎不允许在分支中提出问题。如果您有任何问题/功能请求,请使用GitHub上游的AMQP 1.0 crate fe2o3-amqp。
内容
示例
以下是发送和接收队列消息的两个示例。更多示例可以在示例中找到
向队列发送消息
use azservicebus::prelude::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Replace "<NAMESPACE-CONNECTION-STRING>" with your connection string,
// which can be found in the Azure portal and should look like
// "Endpoint=sb://<NAMESPACE>.servicebus.windows.net/;SharedAccessKeyName=<KEY_NAME>;SharedAccessKey=<KEY_VALUE>"
let mut client = ServiceBusClient::new_from_connection_string(
"<NAMESPACE-CONNECTION-STRING>",
ServiceBusClientOptions::default()
)
.await?;
// Replace "<QUEUE-NAME>" with the name of your queue
let mut sender = client.create_sender(
"<QUEUE-NAME>",
ServiceBusSenderOptions::default()
)
.await?;
// Create a batch
let mut message_batch = sender.create_message_batch(Default::default())?;
for i in 0..3 {
// Create a message
let message = ServiceBusMessage::new(format!("Message {}", i));
// Try to add the message to the batch
if let Err(e) = message_batch.try_add_message(message) {
// If the batch is full, an error will be returned
println!("Failed to add message {} to batch: {:?}", i, e);
break;
}
}
// Send the batch of messages to the queue
match sender.send_message_batch(message_batch).await {
Ok(()) => println!("Batch sent successfully"),
Err(e) => println!("Failed to send batch: {:?}", e),
}
sender.dispose().await?;
client.dispose().await?;
Ok(())
}
从队列接收消息
use azservicebus::prelude::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Replace "<NAMESPACE-CONNECTION-STRING>" with your connection string,
// which can be found in the Azure portal and should look like
// "Endpoint=sb://<NAMESPACE>.servicebus.windows.net/;SharedAccessKeyName=<KEY_NAME>;SharedAccessKey=<KEY_VALUE>"
let mut client = ServiceBusClient::new_from_connection_string(
"<NAMESPACE-CONNECTION-STRING>",
ServiceBusClientOptions::default()
)
.await?;
// Replace "<QUEUE-NAME>" with the name of your queue
let mut receiver = client.create_receiver_for_queue(
"<QUEUE-NAME>",
ServiceBusReceiverOptions::default()
)
.await?;
// Receive messages from the queue
// This will wait indefinitely until at least one message is received
let messages = receiver.receive_messages(3).await?;
for message in &messages {
let body = message.body()?;
println!("Received message: {:?}", std::str::from_utf8(body)?);
// Complete the message so that it is removed from the queue
receiver.complete_message(message).await?;
}
receiver.dispose().await?;
client.dispose().await?;
Ok(())
}
支持的服务总线功能
以下显示支持的服务总线功能
功能 | 支持 |
---|---|
向队列/主题发送消息 | 是 |
从队列/订阅接收消息 | 是 |
队列/订阅的会话接收器 | 是 |
预取 | 是 |
计划消息 | 是 |
取消计划的消息 | 是 |
预览消息 | 是 |
完成消息 | 是 |
放弃消息 | 是 |
延迟消息 | 是 |
接收延迟消息 | 是 |
死信消息 | 是 |
接收死信消息 | 是 |
批处理 | 是 |
管理订阅的规则筛选器 | 是 |
锁续订 | 是 |
交易 | 尚未 |
处理器 | 尚未 |
会话处理器 | 尚未 |
TLS支持
客户端应用程序与Azure Service Bus命名空间的通信使用传输层安全性(TLS)加密。TLS实现通过相应的功能标志暴露给用户(请参阅下面的功能标志部分)。用户应确保启用rustls
或native-tls
功能,并且只能启用一个TLS实现。同时启用这两个功能是不支持的,会导致编译时错误。
native-tls
功能默认启用,并使用native-tls
存储库提供TLS支持。rustls
功能将使用rustls
存储库和webpki-roots
存储库提供TLS支持。
功能标志
此存储库支持以下功能标志
功能 | 描述 |
---|---|
默认 |
启用"native-tls"功能 |
rustls |
启用使用rustls 存储库以支持TLS |
native-tls |
启用使用native-tls 存储库以支持TLS |
事务 |
此部分保留用于将来对事务的支持,目前尚未实现 |
WebAssembly支持
WebAssembly受支持。请参阅wasm32_in_browser
示例以获取更多详细信息。
MSRV(最低支持的Rust版本)
1.75.0
许可:MIT
依赖项
~15–30MB
~483K SLoC