使用 Azure CLI 建立主題 服務匯流排 主題和訂用帳戶

在本快速入門中,您會使用 Azure CLI 來建立 服務匯流排 主題,然後建立該主題的訂用帳戶。

什麼是 服務匯流排 主題和訂用帳戶?

服務匯流排 主題和訂用帳戶支援發佈/訂閱傳訊通訊模型。 使用主題和訂用帳戶時,分散式應用程式的元件不會彼此直接通訊;相反地,它們會透過作為媒介的主題交換訊息。

TopicConcepts

相較於 服務匯流排 佇列,每個訊息都是由單一取用者處理,主題和訂用帳戶會使用發行/訂閱模式提供一對多的通訊形式。 可以註冊主題的多個訂用帳戶。 當訊息傳送至主題時,會提供給每個訂用帳戶獨立處理/處理。 主題的訂用帳戶類似於接收傳送至主題之訊息複本的虛擬佇列。 您可以選擇性地為每個訂用帳戶註冊主題的篩選規則,這可讓您篩選或限制主題接收哪些主題訂閱的訊息。

服務匯流排 主題和訂用帳戶可讓您調整規模,以跨大量使用者和應用程式處理大量訊息。

必要條件

如果您沒有 Azure 訂用帳戶,您可以在開始之前建立 免費帳戶

在本快速入門中,您會使用可在登入 Azure 入口網站 之後啟動的 Azure Cloud Shell。 如需 Azure Cloud Shell 的詳細資訊,請參閱 Azure Cloud Shell 概觀。 您也可以在電腦上安裝和使用 Azure PowerShell。

建立服務匯流排主題和個訂用帳戶

主題的每個 訂用帳戶 都可以接收每個訊息的複本。 主題與 服務匯流排 佇列完全通訊協議和語意相容。 服務匯流排 主題支援各種具有篩選條件的選取規則,以及設定或修改訊息屬性的選擇性動作。 每次規則相符時,都會產生訊息。 若要深入瞭解規則、篩選和動作,請遵循此 連結

  1. 登入 Azure 入口網站

  2. 選取下圖所示的圖示來啟動 Azure Cloud Shell。 如果 Cloud Shell 處於 PowerShell 模式,請切換至 Bash 模式。

  3. 執行下列命令以建立 Azure 資源群組。 如有需要,請更新資源組名和位置。

    az group create --name MyResourceGroup --location eastus
    
  4. 執行下列命令來建立 服務匯流排 傳訊命名空間。 將命名空間的名稱更新為唯一的名稱。

    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. 建立主題的第二個訂用帳戶

    az servicebus topic subscription create --resource-group MyResourceGroup --namespace-name $namespaceName --topic-name MyTopic --name S2    
    
  8. 建立主題的第三個訂用帳戶

    az servicebus topic subscription create --resource-group MyResourceGroup --namespace-name $namespaceName --topic-name MyTopic --name S3    
    
  9. 使用自訂屬性在第一個訂用帳戶上建立篩選條件 (StoreId是、 Store2Store3的其中一個 Store1)。

    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. 使用客戶屬性建立第二個訂用帳戶的篩選條件 (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. 使用客戶屬性在第三個訂用帳戶上建立篩選條件(StoreId不在Store1Store2Store3Store4中)。

    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 中的程式設計語言。