我在哪里可以从我的逻辑应用程序中为 Azure 服务总线主题订阅提供筛选器
Where can I provide filter for Azure Service Bus Topic Subscription from my logic app
我已经在 Azure 中创建了服务总线、主题和对该主题的订阅。我有一个在消息到达时触发的逻辑应用程序,但我需要对该订阅应用过滤器(或规则?),在逻辑应用程序处理消息之前,它会在消息 header 中查找特定值。我在逻辑应用程序或 Azure 门户中看不到任何地方可以为订阅创建筛选器。存在什么机制来为订阅创建过滤器?
您是如何创建主题订阅的?你用过ARM模板吗?
创建订阅时,您可以向主题订阅中应用的规则添加Sql过滤器。
下面的 ARM 模板 (taken from here) 向您展示了如何向主题订阅中的规则添加 Sql 过滤器
"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'"
}
}
}]
}]
}]
}]
您需要在规则子资源的属性成员中使用 Sql 类表达式来添加您的过滤器
例如
"sqlExpression": "YourMessageProperty='YourExpectedValue'",
如果您不使用 ARM 模板,Service Bus Explorer 允许您删除默认订阅规则并使用您自己的 Sql 过滤器创建一个新规则。
HTH
我已经在 Azure 中创建了服务总线、主题和对该主题的订阅。我有一个在消息到达时触发的逻辑应用程序,但我需要对该订阅应用过滤器(或规则?),在逻辑应用程序处理消息之前,它会在消息 header 中查找特定值。我在逻辑应用程序或 Azure 门户中看不到任何地方可以为订阅创建筛选器。存在什么机制来为订阅创建过滤器?
您是如何创建主题订阅的?你用过ARM模板吗?
创建订阅时,您可以向主题订阅中应用的规则添加Sql过滤器。
下面的 ARM 模板 (taken from here) 向您展示了如何向主题订阅中的规则添加 Sql 过滤器
"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'"
}
}
}]
}]
}]
}]
您需要在规则子资源的属性成员中使用 Sql 类表达式来添加您的过滤器
例如
"sqlExpression": "YourMessageProperty='YourExpectedValue'",
如果您不使用 ARM 模板,Service Bus Explorer 允许您删除默认订阅规则并使用您自己的 Sql 过滤器创建一个新规则。
HTH