トピック、サブスクリプション、ルールを含んだ Service Bus 名前空間を Azure Resource Manager テンプレートで作成します。

この記事では、Azure Resource Manager テンプレートを使用して、トピック、サブスクリプション、ルール (フィルター) を含んだ Service Bus の名前空間を作成する方法について説明します。 この記事では、デプロイ対象のリソースを定義する方法と、デプロイの実行時に指定されるパラメーターを指定する方法を説明します。 このテンプレートは、独自のデプロイに使用することも、要件に合わせてカスタマイズすることもできます。

テンプレートの作成の詳細については、「 Azure Resource Manager のテンプレートの作成」を参照してください。

Azure リソースの名前付け規則のプラクティスとパターンについて詳しくは、「Azure リソースの推奨される名前付け規則」をご覧ください。

完全なテンプレートについては、Service Bus の名前空間にトピック、サブスクリプション、ルールを追加するテンプレートを参照してください。

Note

次の Azure Resource Manager テンプレートは、ダウンロードしてデプロイすることができます。

最新のテンプレートを確認する場合は、「 Azure クイックスタート テンプレート 」ギャラリーで "Service Bus" を検索してください。

デプロイ対象

このテンプレートでデプロイされるのは、トピック、サブスクリプション、ルール (フィルター) を含んだ Service Bus 名前空間です。

Service Bus のトピックとサブスクリプションは、"発行とサブスクライブ" のパターンで一対多の形式の通信を実現します。 トピックとサブスクリプションを使用しているとき、分散アプリケーションのコンポーネントは互いに直接通信するのではなく、仲介者として機能するトピックを介してメッセージをやり取りします。トピックのサブスクリプションとは、トピックに送信されたメッセージのコピーを受け取るキューと実質的には考えることができます。 サブスクリプションにフィルターを設定すると、トピックに送信されたメッセージのうち、その特定のサブスクリプションで取得できるメッセージを指定することができます。

ルール (フィルター) とは

多くのシナリオでは、特性のあるメッセージは、異なる方法で処理する必要があります。 このカスタム プロセスを有効にするために、特定のプロパティを持つメッセージを検索し、該当するプロパティに変更を行うようにサブスクリプションを構成できます。 Service Bus のサブスクリプションには、トピックに送信されたすべてのメッセージが表示されますが、仮想サブスクリプション キューにコピーできるのは、これらのメッセージの一部のみです。 これを行うには、サブスクリプション フィルターを使用します。 ルール (フィルター) の詳細については、「Rules and actions」を参照してください。

デプロイメントを自動的に実行するには、次のボタンをクリックします。

Azure にデプロイする

パラメーター

Azure Resource Manager を使用して、テンプレートのデプロイ時に指定する値用のパラメーターを定義します。 テンプレートには、すべてのパラメーター値を含む Parameters という名前のセクションがあります。 これらの値用のパラメーターを定義する必要があります。これらの値は、デプロイするプロジェクトあるいはデプロイ先の環境によって異なります。 常に同じ値に対してはパラメーターを定義しないでください。 テンプレート内のそれぞれのパラメーターの値は、デプロイされるリソースを定義するために使用されます。

このテンプレートでは、次のパラメーターを定義します。

serviceBusNamespaceName

作成する Service Bus 名前空間の名前。

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

serviceBusTopicName

Service Bus 名前空間に作成するトピックの名前。

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

serviceBusSubscriptionName

Service Bus 名前空間に作成するサブスクリプションの名前。

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

serviceBusRuleName

Service Bus 名前空間に作成するルール (フィルター) の名前。

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

serviceBusApiVersion

テンプレートの Service Bus API バージョン。

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

デプロイ対象のリソース

Messaging タイプの標準的な Service Bus 名前空間を作成し、トピックとサブスクリプションとルールを追加します。

 "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 の構文とプロパティについては、namespacestopicssubscriptions、および rules を参照してください。

デプロイを実行するコマンド

リソースを 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>

次のステップ

次の記事を参照して、これらのリソースの管理方法を確認してください。