Azure Service Bus Rust 技能
帮助 Rust 开发者使用 Azure Service Bus 构建队列与发布订阅消息流程。
文档明确要求使用官方 crate、避免硬编码凭据,并给出 DeveloperToolsCredential/ManagedIdentityCredential 与细粒度 RBAC 角色;但发送、接收和完成消息都会产生外部状态变化,未要求用户确认,也未说明消息数据流、敏感数据处理、幂等性、回滚或恢复策略,因此扣分。
安装、认证、队列/主题/订阅及结算流程相互一致,示例使用 Result 传播错误;但 crate 明示处于早期开发、没有提供重试、锁过期、死信、连接故障或异常输入处理,也没有该技能专属测试证据,故仅给出静态可支持的中低分。
触发短语、Rust 受众和队列/主题/订阅场景较清楚;但未明确不适用范围、版本/API 边界、输入输出契约或环境要求,亦未提供中文支持说明。核心功能依赖 Azure Service Bus 网络可达性,面向中国大陆的可达性未被材料验证,因此扣分。
文档结构清晰,包含安装、环境变量、认证、核心流程、RBAC、最佳实践、参考链接、MIT 许可证和作者元数据;但缺少版本锁定示例、变更记录、维护责任与更新路径、故障排查和已知限制,且“不要直接编辑 Cargo.toml”与常规 Rust 工作流的适用边界未解释。
内容覆盖发送、接收、主题和订阅等核心任务,代码片段具有较直接的起点价值;但 crate 被明确标为不可用于生产,示例缺少完整配置、生命周期管理、重试和生产级可靠性处理,静态材料也未证明代码可编译或结果完整,因此限制在静态上限内。
提供 docs.rs、crates.io 和 Azure SDK 源码链接,并有仓库级 CI/测试材料作为有限佐证;但提供的证据没有展示该技能的专属测试、编译结果或第三方交叉验证,且本次未执行任何内容,故不能给出更高分。
- 该 crate 明确处于早期开发阶段,不应直接用于生产;请在采用前锁定并核验实际版本和 API。
- 发送、完成和放弃消息涉及外部状态变化;部署前应补充用户确认边界、幂等性、重试、锁续期、死信、审计和恢复策略。
- 不要将消息正文或凭据输出到日志;应验证 Azure Service Bus 在目标网络环境中的可达性。
它能做什么 & 适用场景
该技能面向使用 Rust 的 Azure Service Bus 开发,覆盖队列、主题和订阅的消息发送与接收。它提供官方 azure_messaging_servicebus crate 的安装、身份验证、核心工作流和消息结算示例。技能要求使用 Entra ID 相关凭据并配置 Service Bus 命名空间。该 crate 仍处于早期开发阶段,不应用于生产环境,API 可能变化。
指导开发者通过 cargo add 安装 azure_messaging_servicebus、azure_identity 和 tokio;配置 SERVICEBUS_NAMESPACE;使用 DeveloperToolsCredential 或生产环境的 ManagedIdentityCredential 创建 ServiceBusClient;创建队列或主题发送器、队列或订阅接收器;发送和接收消息;成功处理后调用 complete_message,或在需要重试时放弃消息;根据发送、接收或完全访问需求配置 Azure Service Bus RBAC 角色。
- Rust 应用需要向 Azure Service Bus 队列发送消息时,使用该技能建立发送器并发送 Message。
- Rust 服务需要从队列批量接收消息并在处理成功后完成消息时,使用该技能参考接收与结算流程。
- 多个消费者需要接收同一消息时,使用主题和订阅实现发布订阅或扇出模式。
- 本地开发者需要使用 DeveloperToolsCredential 连接 Azure Service Bus,或生产部署需要使用托管身份时,使用该技能配置认证。
优缺点一览
- 覆盖队列、主题、订阅、消息发送、接收和完成语义。
- 提供官方 crate、认证方式、RBAC 角色和安全实践说明。
- 包含可复制的 Rust 异步代码示例。
- 明确区分本地开发凭据与生产托管身份。
- azure_messaging_servicebus crate 处于早期开发阶段,不应在生产环境使用。
- API 可能在未来变化,源材料未提供稳定性承诺或版本兼容矩阵。
- 源材料未显示该技能自身的测试套件或平台覆盖证据。
- 使用 Azure Service Bus 需要有效的 Azure 资源、网络连接和适当权限;费用信息未在源材料中说明。
如何安装
在支持该技能集合的代理目录中运行 npx skills add microsoft/skills,并在向导中选择此技能。也可以克隆集合后,将 .github/plugins/azure-sdk-rust/skills/azure-servicebus-rust/ 复制到目标代理的技能目录。项目依赖可运行:cargo add azure_messaging_servicebus azure_identity tokio。若代码直接使用 azure_core 类型,再运行 cargo add azure_core。
如何使用
可用触发语句:"service bus rust"、"ServiceBusClient rust"、"send message servicebus rust"、"receive message servicebus rust"、"queue rust messaging" 或 "topic subscription rust"。随后提供 Rust 项目要连接的 Service Bus 命名空间、队列或主题名称,并根据场景说明需要发送、接收或订阅消息。配置 SERVICEBUS_NAMESPACE=<namespace>.servicebus.windows.net,并确保身份具有相应的 Azure Service Bus Data Sender、Data Receiver 或 Data Owner 角色。