问题描述
我需要找到一种方法将多个自定义操作添加到 Azure 服务总线主题订阅规则 sql 操作。
Azure CLI 只允许一个 - 即将到来的将替换现有的(无论如何,我还没有找到传递超过 1 个参数的方法):
az servicebus topic subscription rule update --resource-group xxxxx --namespace-name xxxxxx --topic-name xxxxxx --subscription-name "xxxxxxx" --name NoArchive --action-sql-expression "set CustomProp2 = 'BBB'"
--action-sql-expression "set CustomProp1 = 'AAA'","set customProp2 = 'BBB'"
的格式导致
BadRequest: There was an error parsing the sql expression. [Token line=1,column=23,Token in error=,Additional details= Unrecognized character. ','] TrackingId:8bbf145d-3f10-476b-b58a-acc3e1014977_B61,SystemTracker:NoSystemTracker,Timestamp:2021-03-03T13:55:13 CorrelationId: 6a0a073c-ed11-4054-8261-777756a2ec3c
似乎不支持多个值。
official documentation 也有点没用。
尝试使用 ARM 模板 (as stated here) 找到一种方法,但不确定也可以使用它传递多个值:
"properties": {
"action": {
"sqlExpression": "set CustomProp2 = 'BBB'","compatibilityLevel": 20
},"filterType": "sqlFilter","sqlFilter": {
"sqlExpression": "NoArchive IS NOT NULL","compatibilityLevel": 20
}
Here's the ref 到官方 ARM 模板文档,我不确定此参数是否支持多个值。
"resources": [{
"apiVersion": "[variables('sbVersion')]","name": "[parameters('serviceBusNamespaceName')]","type": "Microsoft.ServiceBus/Namespaces","location": "[variables('location')]","sku": {
"name": "Standard",},"resources": [{
"apiVersion": "[variables('sbVersion')]","name": "[parameters('serviceBusTopicName')]","type": "Topics","dependsOn": [
"[concat('Microsoft.ServiceBus/namespaces/',parameters('serviceBusNamespaceName'))]"
],"properties": {
"path": "[parameters('serviceBusTopicName')]"
},"resources": [{
"apiVersion": "[variables('sbVersion')]","name": "[parameters('serviceBusSubscriptionName')]","type": "Subscriptions","dependsOn": [
"[parameters('serviceBusTopicName')]"
],"properties": {},"resources": [{
"apiVersion": "[variables('sbVersion')]","name": "[parameters('serviceBusRuleName')]","type": "Rules","dependsOn": [
"[parameters('serviceBusSubscriptionName')]"
],"properties": {
"filterType": "sqlFilter","sqlFilter": {
"sqlExpression": "StoreName = 'Store1'","requiresPreprocessing": "false"
},"action": {
"sqlExpression": "set FilterTag = 'true'"
}
}
}]
}]
}]
}]
我有点困惑。
谢谢。
解决方法
您需要按如下方式使用它。 --action-sql-expression 参数只接受一个值。如果您有多个操作,则需要指定如下。 ARM 模板也是如此。
az servicebus 主题订阅规则更新 --resource-group xxxxx --namespace-name xxxxxx --topic-name xxxxxx --subscription-name "xxxxxxx" --name NoArchive --action-sql-expression "set CustomProp1 = 'AAA' 设置 customProp2 = 'BBB'"