如何基于Azure Service Bus主题订阅的消息实现Azure容器应用自动缩放?
Azure容器应用基于Service Bus主题特定订阅消息数配置自动缩放
Azure容器应用的自动缩放支持通过Azure Monitor指标触发,而Service Bus的每个订阅都有独立的监控指标,你可以利用这一点实现基于特定订阅消息数的缩放,具体操作如下:
1. 确认可用的订阅指标
Service Bus订阅提供的核心缩放指标包括:
ActiveMessages:订阅中待处理的活跃消息数DeadletteredMessages:订阅中死信队列的消息数
这些指标会关联到具体的订阅,可通过Azure Monitor筛选维度获取。
2. 使用CLI配置缩放规则
通过Azure CLI执行以下命令,替换占位符为你的实际资源信息:
az containerapp update \ --name <container-app-name> \ --resource-group <resource-group-name> \ --set properties.scale.rules[0].name=servicebus-subscription-scale \ --set properties.scale.rules[0].type=azure-monitor \ --set properties.scale.rules[0].metadata.metricName=ActiveMessages \ --set properties.scale.rules[0].metadata.metricNamespace=Microsoft.ServiceBus/namespaces \ --set properties.scale.rules[0].metadata.resourceUri=/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ServiceBus/namespaces/<service-bus-namespace> \ --set properties.scale.rules[0].metadata.dimension=EntityName \ --set properties.scale.rules[0].metadata.dimensionValue=<topic-name>/subscriptions/<subscription-name> \ --set properties.scale.rules[0].metadata.targetValue=100 \ --set properties.scale.rules[0].minReplicas=1 \ --set properties.scale.rules[0].maxReplicas=10
关键参数说明:
dimensionValue:格式为主题名/subscriptions/订阅名,用来指定要监控的特定订阅targetValue:触发缩放的消息数阈值,比如当活跃消息数超过100时扩容minReplicas/maxReplicas:设置容器应用的实例数范围
3. 门户配置方式
如果偏好可视化操作:
- 进入目标容器应用的“缩放”页面,点击“添加规则”
- 选择“Azure Monitor指标”类型,关联你的Service Bus命名空间
- 在指标筛选中,选择
ActiveMessages指标,添加维度EntityName并指定为主题名/subscriptions/订阅名 - 设置阈值、实例数范围后保存规则
4. 权限配置
确保容器应用的标识(系统分配或用户分配)拥有Service Bus命名空间的Monitoring Reader权限,否则无法读取监控指标完成缩放判断。
内容的提问来源于stack exchange,提问作者Kevin M Ziegler
相关产品推荐
相关产品推荐

