Appearance
使用 TypeScript 实现 Azure Service Bus 企业级消息队列
解决复杂系统中的组件解耦问题:通过 TypeScript SDK 实现对 Azure Service Bus 队列(Queue)和主题(Topic)的精准控制,支持异步消息传递、延迟调度及死信队列处理。
为什么需要这个技能
在构建微服务或分布式系统时,同步的 HTTP 调用容易导致级联失效。企业需要一种可靠的异步通信机制来处理高并发请求、保证最终一致性以及实现任务削峰填谷。
Azure Service Bus 提供了比简单队列更强大的功能,如消息会话(Sessions)保证顺序、主题订阅实现发布/订阅模式,以及死信队列(DLQ)确保异常消息可追溯。掌握该 SDK 能让开发者快速构建具有金融级可靠性的消息流转体系。
适用场景
- 异步任务处理:如订单创建后的邮件发送、报表生成等耗时操作。
- 事件驱动架构:利用 Topic 和 Subscription 将一个事件分发给多个不同的微服务。
- 顺序消息处理:使用 Session 确保同一用户的操作请求按顺序执行。
- 错误容忍与恢复:通过死信队列处理无法解析或处理失败的异常消息。
核心工作流
1. 环境准备与认证
安装依赖并使用 DefaultAzureCredential 实现无密钥认证,避免在代码中硬编码连接字符串。
bash
npm install @azure/service-bus @azure/identitytypescript
import { ServiceBusClient } from "@azure/service-bus";
import { DefaultAzureCredential } from "@azure/identity";
const fullyQualifiedNamespace = process.env.SERVICEBUS_NAMESPACE!;
const client = new ServiceBusClient(fullyQualifiedNamespace, new DefaultAzureCredential());2. 消息发送与接收
支持单条发送、批量发送以及基于事件的实时订阅。
typescript
// 发送消息
const sender = client.createSender("my-queue");
await sender.sendMessages({ body: { orderId: "12345" } });
// 订阅处理(事件驱动)
const receiver = client.createReceiver("my-queue");
receiver.subscribe({
processMessage: async (message) => {
console.log(`Processing: ${message.body}`);
},
processError: async (args) => {
console.error(`Error: ${args.error}`);
},
});3. 高级特性应用
- 死信处理:当消息无法处理时,将其移至
deadLetter队列,防止阻塞主队列。 - 延迟调度:使用
scheduleMessages设置消息在未来某个时间点可见。 - 会话管理:通过
acceptSession锁定特定会话 ID 的消息流。
下载和安装
下载 azure-servicebus-ts 中文版 Skill ZIP
解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md。
你可能还需要
暂无推荐