1

我正在使用 ARM 模板尝试部署对 Azure 服务总线主题的订阅,该主题根据 To 系统属性过滤消息。我想从 ARM 模板参数中提取过滤器的值,但我似乎无法获取模板来解析 SqlExpression 中的参数。

下面是我一直在搞乱的模板。我想我可能只是切换 requiresPreprocessing 开关以使其解决部署时的参数,但没有骰子。我还尝试使用方括号或冒号对其进行转义,如下面的链接所示

https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-sql-filter#propertyname

{
 "apiVersion": "2017-04-01",
 "name": "[concat(parameters('mynamespace'), '/', parameters('topic'), '/', parameters('myVariable'),'/direct')]",
 "type": "Microsoft.ServiceBus/namespaces/topics/subscriptions/rules",
 "dependsOn": [
   "[resourceId('Microsoft.ServiceBus/namespaces', parameters('mynamespace'))]",
   "[resourceId('Microsoft.ServiceBus/namespaces/topics', parameters('mynamespace'), parameters('topic'))]",
   "[resourceId('Microsoft.ServiceBus/namespaces/topics/subscriptions', parameters('mynamespace'), parameters('topic'), parameters('myVariable'))]"
 ],
 "properties": {
   "filterType": "SqlFilter",
   "sqlFilter": {
     "sqlExpression": "sys.To=[parameters('myVariable')] OR sys.To IS NULL",
     "requiresPreprocessing": true
     }
}

我得到的是与 sqlExpression 中显示的字符串完全相同的字符串,但我想在单引号字符串中获取变量解析为的值。

4

2 回答 2

0

此主题订阅规则可能只获取静态值。也许您可以尝试使用静态值而不是[parameters('myVariable')]. 这个问题可能是因为赋予属性动态值sys.To

于 2019-06-05T09:50:03.457 回答
0

你可以使用:"[concat('sys.To=',[parameters('myVariable')],' OR sys.To IS NULL')]".

我认为你不能在 ARM 模板中使用内联表达式,因此你应该将整个东西变成一个表达式,在这种情况下使用 concat 将各个部分粘合在一起。

提示:包含单引号很困难,所以像这样的变量可能会派上用场:

"SQ": "'"

于 2019-11-11T22:13:53.813 回答