Azure Service Bus主题订阅配置:单实例消费对应类型消息
Azure Service Bus 主题/订阅配置方案
1. 创建核心主题
在Azure Service Bus命名空间下创建主题DocumentUploads,作为Document-Uploader发布消息的统一入口。
2. 创建带过滤规则的专属订阅
针对两个处理器分别创建订阅,通过过滤规则实现消息的精准分发:
- 订阅:LegalDocuments
为Legal-Processor服务创建此订阅,添加SQL过滤规则:DocumentType = 'legal',仅接收文档类型为legal的消息。 - 订阅:PurchaseOrderDocuments
为Purchase-Order-processor服务创建此订阅,添加SQL过滤规则:DocumentType = 'Purchase-order',仅接收文档类型为Purchase-order的消息。
3. 配置独占消息处理机制
确保每个消息仅被对应应用的单个实例处理,需做以下配置:
- 启用PeekLock接收模式:这是Azure Service Bus的默认接收模式,实例获取消息后会触发锁定(锁定时长可根据业务处理需求调整,默认30秒,最长支持5分钟),锁定期间其他实例无法读取该消息。只有当实例处理完成并调用
CompleteAsync()确认,或锁定超时未处理时,消息才会恢复可接收状态。 - 控制客户端并发数:在每个处理器应用的消息消费者配置中,将
MaxConcurrentCalls(对应SDK中的并发接收参数)设置为1,确保单个实例同一时间仅处理一条消息;依赖PeekLock的锁定机制,即可保证同一消息不会被多个实例同时获取。
4. 配置消息发布规则
Document-Uploader发布消息时,必须在消息的自定义属性中添加DocumentType字段,赋值为文档对应的类型(legal或Purchase-order),确保订阅的过滤规则能正确匹配并分发消息。
内容的提问来源于stack exchange,提问作者user1250720
相关产品推荐
相关产品推荐

