使用 Azure Resource Manager 範本建立服務匯流排命名空間與主題、訂用帳戶和規則

本文說明如何使用 Azure Resource Manager 範本,建立服務匯流排命名空間與主題、訂用帳戶和規則 (篩選器)。 本文說明如何指定要部署哪些資源,以及如何定義執行部署時所指定的參數。 您可以直接在自己的部署中使用此範本,或自訂此範本以符合您的需求

如需關於建立範本的詳細資訊,請參閱 編寫 Azure Resource Manager 範本

如需 Azure 資源命名慣例相關實務和模式的詳細資訊,請參閱 Azure 資源的建議命名慣例

如需完整的範本,請參閱服務匯流排命名空間與主題、訂用帳戶和規則範本。

注意

下列 Azure Resource Manager 範本可供下載和部署。

若要檢查最新的範本,請造訪 Azure 快速入門範本資源庫並搜尋「服務匯流排」。

您要部署什麼?

使用此範本,您將部署具有主題、訂用帳戶和規則 (篩選器) 的服務匯流排命名空間。

服務匯流排主題和訂用帳戶使用「發佈/訂閱」模式,提供一對多的通訊形式。 使用主題和訂用帳戶時,分散式應用程式的元件彼此不直接通訊,相反的,它們會透過扮演中繼角色的主題來交換訊息。主題的訂用帳戶類似於虛擬佇列,同樣可接收已傳送到主題的訊息複本。 訂用帳戶上的篩選器可讓您指定傳送至主題的哪些訊息應出現在特定主題訂用帳戶中。

什麼是規則 (篩選器)?

在許多情況下,必須以不同的方式處理具有特定特性的訊息。 若要這樣自訂處理,您可以設定訂用帳戶以尋找具有特定屬性的訊息,然後對這些屬性進行修改。 雖然服務匯流排訂用帳戶可看見所有傳送至主題的訊息,但您只可以將部分的訊息複製到虛擬訂用帳戶佇列。 使用訂用帳戶篩選器即可達成。 若要深入了解規則 (篩選條件),請參閱 規則和動作

若要自動執行部署,請按一下下列按鈕:

Deploy to Azure

參數

透過 Azure Resource Manager,定義在部署範本時想要指定之值的參數。 此範本有一個 Parameters 區段,內含所有參數值。 針對隨您要部署的專案或要部署到的環境而變化的值定義參數。 請不要為永遠保持不變的值定義參數。 每個參數值都可在範本中用來定義所部署的資源。

範本會定義下列參數:

serviceBusNamespaceName

要建立的服務匯流排命名空間名稱。

"serviceBusNamespaceName": {
"type": "string"
}

serviceBusTopicName

在服務匯流排命名空間中建立的主題名稱。

"serviceBusTopicName": {
"type": "string"
}

serviceBusSubscriptionName

在服務匯流排命名空間中建立的訂用帳戶名稱。

"serviceBusSubscriptionName": {
"type": "string"
}

serviceBusRuleName

在服務匯流排命名空間中建立的規則 (篩選器) 名稱。

   "serviceBusRuleName": {
   "type": "string",
  }

serviceBusApiVersion

範本的服務匯流排 API 版本。

"serviceBusApiVersion": {
       "type": "string",
       "defaultValue": "2017-04-01",
       "metadata": {
           "description": "Service Bus ApiVersion used by the template"
       }

要部署的資源

建立訊息類型的標準服務匯流排命名空間與主題、訂用帳戶和規則。

 "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'"
                        }
                    }
                }]
            }]
        }]
    }]

若要了解 JSON 語法和屬性,請參閱命名空間主題訂用帳戶規則

執行部署的命令

若要將資源部署至 Azure,您必須登入 Azure 帳戶,而且必須使用 Azure Resource Manager 模組。 若要了解如何搭配使用 Azure 資源管理員與 Azure PowerShell 或 Azure CLI,請參閱:

下例假設您的帳戶中已經有已指定名稱的資源群組。

PowerShell

New-AzureResourceGroupDeployment -Name \<deployment-name\> -ResourceGroupName \<resource-group-name\> -TemplateUri <https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/quickstarts/microsoft.servicebus/servicebus-create-topic-subscription-rule/azuredeploy.json>

Azure CLI

az deployment group create -g \<my-resource-group\> --template-uri <https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/quickstarts/microsoft.servicebus/servicebus-create-topic-subscription-rule/azuredeploy.json>

後續步驟

檢視下列文章以了解如何管理這些資源︰