簡體   English   中英

ARM 模板:訂閱中的多個規則(過濾器)

[英]ARM template : Multiple rules(filters) with in an subscription

您好我正在使用 ARM 模板創建服務總線、主題、訂閱和過濾器。 我已經創建了所有內容,但我面臨的問題是在訂閱中創建多個過濾器。 這是我正在使用的模板的片段

      "copy": {
        "name": "subscriptions-outer-loop",
        "count": "[length(parameters('topics'))]"
        },
        "name": "[concat(parameters('serviceBus').name,'-subscriptions')]",
        "type": "Microsoft.Resources/deployments",
        "apiVersion": "2019-10-01",
        "properties": {
            "mode": "Incremental",
            "expressionEvaluationOptions": {
                "scope": "inner"
            },
            "parameters": {
                "serviceBus": {
                    "value": "[parameters('serviceBus').name]"
                },
                "currentTopic": {
                    "value": "[parameters('topics')[copyIndex()]]"
                }
              },
            "template": {
                "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
                "contentVersion": "1.0.0.0",
                "parameters": {
                    "serviceBus": { "type": "string" },
                    "currentTopic": { "type": "object" }
                },
                "resources": [
                    {
                        "copy": {
                            "name": "subscriptions-inner-loop",
                            "count": "[length(parameters('currentTopic').subscriptions)]"
                        },
                        "name": "[concat(
                                parameters('serviceBus'),'/',
                                parameters('currentTopic').name, '/',
                                parameters('currentTopic').subscriptions[copyIndex()].name)]",
                        "type": "Microsoft.ServiceBus/namespaces/topics/subscriptions",
                        "apiVersion": "2017-04-01",
                        "properties": {
                          "forwardTo":"[parameters('currentTopic').subscriptions[copyIndex()].queueName]"
                        },
                        "resources": [
                          {
                            
                            "apiVersion": "2017-04-01",
                            "name": "[concat(parameters('currentTopic').subscriptions[copyIndex()].name,'1234')]",
                            "type": "Rules",
                            "dependsOn": [
                              "[resourceId('Microsoft.ServiceBus/namespaces/topics/subscriptions',
                                          parameters('serviceBus'), 
                                          parameters('currentTopic').name, parameters('currentTopic').subscriptions[copyIndex()].name)]"
                            ],
                            "properties": {
                                "filterType": "CorrelationFilter",
                                "correlationFilter": {
                                  "correlationId":"[parameters('currentTopic').subscriptions[copyIndex()].filter]" 
                              }
                            }
                          }
                        ]
                    }
                ]
            }
      },
        "dependsOn": [ "topics-loop" ]
    },

它能夠創建單個過濾器,但我無法為多個過濾器管理它。

下面是我的參數文件的樣子:

            "value": [
                {
                    "name": "ka-integration",
                    "subscriptions": [
                        {
                            "name":"email_notify",
                            "queueName":"notification",
                            "filter":["email_notification"]
                        },
                        {
                            "name":"onboard-organization",
                            "queueName":"onboard-organization",
                            "filter":["onboard_organization"]

                        },
                        {
                            "name":"sync-user",
                            "queueName":"sync-user",
                            "filter":["sync_user"]

                        },
                        {
                            "name":"master-data",
                            "queueName":"sync-master-data",
                            "filter":["sync_master_data"]
                        },
                        {
                            "name":"onboard_user",
                            "queueName":"onboard-user",
                            "filter":["user_onboard","onboard-organization"]

                        }  
                                           
                    ]
                }
            ]
        }

在上面的工作階段,過濾器是字符串,但由於我想要它多個,我已將其更改為數組,但無法實現循環。

歡迎任何幫助或路徑建議。

謝謝

@robo98 您需要為同一訂閱添加多個Microsoft.ServiceBus/namespaces/topics/subscriptions/rules類型的屬性。

在下面的示例中,我為主題“mytopicname”的同一訂閱“mysubscriptionname”定義了兩個規則。

filter1 if 屬於 SqlFilter 類型,而 filter2 屬於 CorrelationFilter 類型。 同樣,您只需定義 Microsoft.ServiceBus/namespaces/topics/subscriptions/rules 類型的屬性即可定義 n 個過濾器

{
   "type":"Microsoft.ServiceBus/namespaces/topics/subscriptions/rules",
   "apiVersion":"2021-06-01-preview",
   "name":"[concat(parameters('namespaces_name'), '/mytopicname/mysubscriptionname/filter1')]",
   "location":"UK West",
   "dependsOn":[
      "[resourceId('Microsoft.ServiceBus/namespaces/topics/subscriptions', parameters('namespaces_name'), 'mytopicname', 'mysubscriptionname')]",
      "[resourceId('Microsoft.ServiceBus/namespaces/topics', parameters('namespaces_name'), 'mytopicname')]",
      "[resourceId('Microsoft.ServiceBus/namespaces', parameters('namespaces_name'))]"
   ],
   "properties":{mysubscriptionname
      "action":{
         
      },
      "filterType":"SqlFilter",
      "sqlFilter":{
         "sqlExpression":"1=1",
         "compatibilityLevel":20
      }
   }
},
{
   "type":"Microsoft.ServiceBus/namespaces/topics/subscriptions/rules",
   "apiVersion":"2021-06-01-preview",
   "name":"[concat(parameters('namespaces_name'), '/mytopicname/mysubscriptionname/filter2')]",
   "location":"UK West",
   "dependsOn":[
      "[resourceId('Microsoft.ServiceBus/namespaces/topics/subscriptions', parameters('namespaces_name'), 'mytopicname', 'mysubscriptionname')]",
      "[resourceId('Microsoft.ServiceBus/namespaces/topics', parameters('namespaces_name'), 'mytopicname')]",
      "[resourceId('Microsoft.ServiceBus/namespaces', parameters('namespaces_name'))]"
   ],
   "properties":{
      "action":{
         
      },
      "filterType":"CorrelationFilter",
      "correlationFilter":{
         "correlationId":"mycorrelationId",
         "label":"mylabelname",
         "properties":{
            
         }
      }
   }
},

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM