Azure 服务总线 Python SDK
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/azure-servicebus-py。
技能介绍
要解决什么问题
在 Azure 上做多服务解耦、削峰填谷或事件驱动架构时,队列与发布/订阅主题是常见选型。直接用 azure-servicebus 文档往往分散在鉴权、客户端生命周期、接收模式与消息处置之间,生产代码还容易混用连接字符串与同步/异步客户端,导致资源泄漏或 Entra 审计缺口。
技能如何组织内容
本技能以 Azure Service Bus Python SDK 为主线,强调两条贯穿规则:优先 DefaultAzureCredential(本地与云端同一套凭据链,生产可用 AZURE_TOKEN_CREDENTIALS 收窄),以及 客户端与异步凭据一律放在上下文管理器(with / async with)里释放传输与令牌缓存。
核心能力覆盖:
- 客户端分工:
ServiceBusClient管连接,get_queue_sender/get_topic_sender发消息,get_queue_receiver/get_subscription_receiver收消息 - 接收模式:默认
PEEK_LOCK(需complete_message/abandon_message等处置)与RECEIVE_AND_DELETE(最多一次) - 进阶场景:主题与订阅、会话 FIFO、计划消息、死信队列与毒消息处理
- 参考与脚本:
references/patterns.md、references/dead-letter.md,以及scripts/setup_servicebus.py做队列/主题管理与 DLQ 监控
适用边界与注意点
- 同步与异步二选一:不要在同一路径混用
azure.servicebus与azure.servicebus.aio。 - 生产负载优先异步;简单脚本可用同步客户端,但仍需上下文管理器与成功处理后 complete。
- 高吞吐用消息批、有序用会话、无限阻塞用
max_wait_time约束;毒消息应走 dead-letter,而非反复 abandon。
技能不替代 Azure 门户上的命名空间/实体 provisioning 策略,实体创建与权限仍须在订阅与 RBAC 层面单独规划。
使用场景
- 在 Python 微服务里用异步 Receiver 从 Service Bus 队列拉取任务,处理成功后调用 complete_message 确认消费。
- 为多个下游订阅同一业务事件,用 Topic Sender 发布消息并为各团队配置独立 Subscription Receiver。
- 订单或流水必须按会话 ID 严格 FIFO 处理时,启用 Session Receiver 并在同一会话内顺序 complete。
- 消费反复失败的消息需隔离排查时,按技能参考对毒消息 dead_letter_message 并配合 DLQ 监控脚本复查。
适合人员
- 在 Azure 上维护 Python 后端、要把订单/任务从 HTTP 同步调用改为队列异步解耦的工程师
- 负责 Service Bus 命名空间与 RBAC,需要统一 DefaultAzureCredential 而非连接字符串的团队平台同学
- 编写事件驱动流水线、要在 PEEK_LOCK 下正确处置 complete/abandon/defer 的应用开发者
- 需要按计划投递、批发送或 DLQ 重处理策略落地,并对照 patterns/dead-letter 文档的同事