次の方法で共有


Azure CLI を使用して Service Bus トピックとトピックのサブスクリプションを作成する

このクイック スタートでは、Azure CLI を使用して Service Bus トピックを作成し、そのトピックのサブスクリプションを作成します。

Service Bus のトピックとサブスクリプションとは

Service Bus のトピックとサブスクリプションでは、 発行/サブスクライブ メッセージング通信モデルがサポートされます。 トピックとサブスクリプションを使用する場合、分散アプリケーションのコンポーネントは相互に直接通信しません。代わりに、仲介役として機能するトピックを介してメッセージを交換します。

TopicConcepts

各メッセージが 1 つのコンシューマーによって処理される Service Bus キューとは対照的に、トピックとサブスクリプションは、発行/サブスクライブ パターンを使用して 1 対多の形式の通信を提供します。 トピックに複数のサブスクリプションを登録できます。 メッセージがトピックに送信されると、各サブスクリプションで独立して処理および対応できるようになります。 トピックのサブスクリプションは、トピックに送信されたメッセージのコピーを受け取る仮想キューに似ています。 必要に応じて、サブスクリプションごとにトピックのフィルター規則を登録できます。これにより、トピックに対してどのメッセージをどのトピック サブスクリプションで受信するかをフィルター処理または制限できます。

Service Bus のトピックとサブスクリプションを使用すると、多数のユーザーとアプリケーションにわたって大量のメッセージを処理するようにスケーリングできます。

[前提条件]

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成できます。

このクイック スタートでは、Azure Portal にサインインした後に起動できる Azure Cloud Shell を使用します。 Azure Cloud Shell の詳細については、「 Azure Cloud Shell の概要」を参照してください。 マシンに Azure PowerShell を インストール して使用することもできます。

Service Bus トピックとサブスクリプションを作成する

トピックの各サブスクリプションは、各メッセージのコピーを受け取ることができます。 トピックは、プロトコルおよびセマンティクスの両方で Service Bus キューと互換性があります。 Service Bus トピックでは、メッセージのプロパティを設定または変更するオプションのアクションを使用して、フィルター条件を含むさまざまな選択規則をサポートしています。 ルールが一致するたびに、メッセージが生成されます。 ルール、フィルター、アクションの詳細については、この リンクを参照してください。

  1. Azure portal にサインインします。

  2. 次の図に示すアイコンを選択して、Azure Cloud Shell を起動します。 Cloud Shell が PowerShell モードの場合は、Bash モードに切り替えます。

  3. 次のコマンドを実行して、Azure リソース グループを作成します。 必要にじて、リソース グループ名と場所を更新します。

    az group create --name MyResourceGroup --location eastus
    
  4. Service Bus メッセージング名前空間を作成するには、次のコマンドを実行します。 名前空間の名前を一意に更新します。

    namespaceName=MyNameSpace$RANDOM
    az servicebus namespace create --resource-group MyResourceGroup --name $namespaceName --location eastus
    
  5. 次のコマンドを実行して、名前空間にトピックを作成します。

    az servicebus topic create --resource-group MyResourceGroup   --namespace-name $namespaceName --name MyTopic
    
  6. トピックの最初のサブスクリプションを作成する

    az servicebus topic subscription create --resource-group MyResourceGroup --namespace-name $namespaceName --topic-name MyTopic --name S1    
    
  7. トピックの 2 番目のサブスクリプションを作成する

    az servicebus topic subscription create --resource-group MyResourceGroup --namespace-name $namespaceName --topic-name MyTopic --name S2    
    
  8. トピックの 3 番目のサブスクリプションを作成する

    az servicebus topic subscription create --resource-group MyResourceGroup --namespace-name $namespaceName --topic-name MyTopic --name S3    
    
  9. カスタム プロパティを使用してフィルターを使用して、最初のサブスクリプションにフィルターを作成します (StoreId は、 Store1Store2Store3のいずれかです)。

    az servicebus topic subscription rule create --resource-group MyResourceGroup --namespace-name $namespaceName --topic-name MyTopic --subscription-name S1 --name MyFilter --filter-sql-expression "StoreId IN ('Store1','Store2','Store3')"    
    
  10. 顧客のプロパティを使ったフィルターを 2 番目のサブスクリプションに作成する (StoreId = Store4)

    az servicebus topic subscription rule create --resource-group MyResourceGroup --namespace-name $namespaceName --topic-name myTopic --subscription-name S2 --name MySecondFilter --filter-sql-expression "StoreId = 'Store4'"    
    
  11. 顧客のプロパティ (StoreIdStore1Store2、またはStore3に含まれていないStore4) を使用して、3 番目のサブスクリプションにフィルターを作成します。

    az servicebus topic subscription rule create --resource-group MyResourceGroup --namespace-name $namespaceName --topic-name MyTopic --subscription-name S3 --name MyThirdFilter --filter-sql-expression "StoreId NOT IN ('Store1','Store2','Store3', 'Store4')"     
    
  12. 次のコマンドを実行して、名前空間のプライマリ接続文字列を取得します。 この接続文字列を使用して、キューに接続し、メッセージを送受信します。

    az servicebus namespace authorization-rule keys list --resource-group MyResourceGroup --namespace-name $namespaceName --name RootManageSharedAccessKey --query primaryConnectionString --output tsv    
    

    接続文字列とトピック名をメモしておきます。 メッセージの送受信に使用します。

次のステップ

トピックにメッセージを送信し、サブスクリプションを介してそれらのメッセージを受信する方法については、次の記事を参照してください。TOC でプログラミング言語を選択してください。