Azure Service Bus Filter Not Applied When Defined in ARM Template

Deadly 提交于 2019-12-02 05:01:01

Your subscription rule should be defined as follows:

"resources": [
                {
                  "apiVersion": "2017-04-01",
                  "name": "SUB-NAME-FILTER",
                  "type": "Rules",
                  "dependsOn": [
                    "[parameters('serviceBusSubscriptionName')]"
                  ],
                  "properties": {
                    "filterType": "SqlFilter",
                    "sqlFilter": {
                      "sqlExpression": "MessageType = 'TYPE-OF-MESSAGE' AND MajorVersion = 1"
                      "requiresPreprocessing": "false"
                    },
                    "action": {
                        "sqlExpression": "SET sys.Label='TYPE-OF-MESSAGE'"
                    }
                  }
                }
              ]

I create the service bus filter with the following ARM template, it works correctly on my side. More details we could refer to Create a Service Bus namespace with topic, subscription, and rule using an Azure Resource Manager template

I check it with Azure service bus explore

Deploy.json

{
  "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "serviceBusNamespaceName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Service Bus namespace"
      }
    },
    "serviceBusTopicName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Topic"
      }
    },
    "serviceBusSubscriptionName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Subscription"
      }
    },
    "serviceBusRuleName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Rule"
      }
    }
  },
  "variables": {
    "location": "[resourceGroup().location]",
    "defaultSASKeyName": "RootManageSharedAccessKey",
    "authRuleResourceId": "[resourceId('Microsoft.ServiceBus/namespaces/authorizationRules', parameters('serviceBusNamespaceName'), variables('defaultSASKeyName'))]",
    "sbVersion": "2017-04-01"
  },
  "resources": [
    {
      "apiVersion": "2017-04-01",
      "name": "[parameters('serviceBusNamespaceName')]",
      "type": "Microsoft.ServiceBus/Namespaces",
      "location": "[resourceGroup().location]",
      "sku": {
        "name": "Standard"
      },
      "properties": {},
      "resources": [
        {
          "apiVersion": "2017-04-01",
          "name": "[parameters('serviceBusTopicName')]",
          "type": "Topics",
          "dependsOn": [
            "[concat('Microsoft.ServiceBus/namespaces/', parameters('serviceBusNamespaceName'))]"
          ],
          "properties": {
            "defaultMessageTimeToLive": "P10675199DT2H48M5.4775807S",
            "maxSizeInMegabytes": "1024",
            "requiresDuplicateDetection": "false",
            "duplicateDetectionHistoryTimeWindow": "PT10M",
            "enableBatchedOperations": "false",
            "supportOrdering": "false",
            "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S",
            "enablePartitioning": "false",
            "enableExpress": "false"
          },
          "resources": [
            {
              "apiVersion": "2017-04-01",
              "name": "[parameters('serviceBusSubscriptionName')]",
              "type": "Subscriptions",
              "dependsOn": [
                "[parameters('serviceBusTopicName')]"
              ],
              "properties": {
                "lockDuration": "PT1M",
                "requiresSession": "false",
                "defaultMessageTimeToLive": "P10675199DT2H48M5.4775807S",
                "deadLetteringOnMessageExpiration": "false",
                "maxDeliveryCount": "10",
                "enableBatchedOperations": "false",
                "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S"
              },
              "resources": [
                {
                  "apiVersion": "2017-04-01",
                  "name": "[parameters('serviceBusRuleName')]",
                  "type": "Rules",
                  "dependsOn": [
                    "[parameters('serviceBusSubscriptionName')]"
                  ],
                  "properties": {
                    "filterType": "SqlFilter",
                    "sqlFilter": {
                      "sqlExpression": "MessageType = 'TYPE-OF-MESSAGE' AND MajorVersion = 1",
                      "requiresPreprocessing": "false"
                    },
                    "action": {
                      "sqlExpression": "SET sys.Label='TYPE-OF-MESSAGE'"
                    },
                    "CorrelationFilter": {}
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "outputs": {
    "NamespaceConnectionString": {
      "type": "string",
      "value": "[listkeys(variables('authRuleResourceId'), variables('sbVersion')).primaryConnectionString]"
    },
    "SharedAccessPolicyPrimaryKey": {
      "type": "string",
      "value": "[listkeys(variables('authRuleResourceId'), variables('sbVersion')).primaryKey]"
    }
  }
}

Paramters.json

{ 
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "serviceBusNamespaceName": {
      "value": "xxxx-test"
    },
    "serviceBusTopicName": {
      "value": "armtopipc-test"
    },
    "serviceBusSubscriptionName": {
      "value": "armsubscription-test"
    },
    "serviceBusRuleName": {
      "value": "filterRule-test"
    }
  }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!