将多个值传递给 Azure 服务总线主题订阅操作规则

问题描述

我需要找到一种方法将多个自定义操作添加到 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'"

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...