Создание раздела служебной шины и подписок на раздел с помощью Azure CLI

В этом кратком руководстве вы используете Azure CLI для создания раздела служебной шины и создания подписок на этот раздел.

Что такое темы и подписки служебной шины?

Разделы и подписки шины сервисов поддерживают модель обмена сообщениями типа публикация/подписка. При использовании разделов и подписок компоненты распределенного приложения не взаимодействуют напрямую друг с другом; вместо этого они обмениваются сообщениями через раздел, который выступает в качестве посредника.

Схема, демонстрирующая работу разделов и подписок.

В отличие от очередей Service Bus, в которых каждое сообщение обрабатывается одним потребителем, топики и подписки обеспечивают обмен данными по схеме один ко многим, используя модель публикации и подписки. Можно зарегистрировать несколько подписок на тему. Когда сообщение отправляется в тему, оно становится доступным для каждой подписки для обработки независимо. Подписка на раздел напоминает виртуальную очередь, которая получает копии сообщений, отправленных в раздел. При необходимости можно зарегистрировать правила фильтрации для раздела на основе каждой подписки, что позволяет фильтровать или ограничивать, какие сообщения получают подписки на раздел.

Разделы и подписки служебной шины позволяют масштабироваться для обработки большого количества сообщений в большом количестве пользователей и приложений.

Предпосылки

Если у вас нет подписки Azure, вы можете создать бесплатную учетную запись перед началом работы.

В этом быстром начале работы вы используете Azure Cloud Shell, который можно запустить после входа в портал Azure. Дополнительные сведения о Azure Cloud Shell см. в статье "Обзор Azure Cloud Shell". Вы также можете установить и использовать Azure PowerShell на компьютере.

Создание темы и подписок служебной шины

Каждая подписка на раздел может получать копию каждого сообщения. Разделы полностью протоколируются и семантически совместимы с очередями служебной шины. Разделы служебной шины поддерживают широкий набор правил выбора с условиями фильтра с необязательными действиями, которые задают или изменяют свойства сообщения. Каждый раз, когда правило совпадает, оно создает сообщение. Дополнительные сведения о правилах, фильтрах и действиях см. по этой ссылке.

  1. Войдите на портал Azure.

  2. Запустите Azure Cloud Shell, выбрав значок, показанный на следующем рисунке. Переключитесь в режим Bash , если Cloud Shell находится в режиме PowerShell .

  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. Создание второй подписки на раздел

    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 является одним из Store1, Store2 и Store3).

    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 не в Store1, Store2, Store3, или Store4).

    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. Выполните следующую команду, чтобы получить основную строку подключения для пространства имен (namespace). Эта строка подключения используется для подключения к очереди и отправки и получения сообщений.

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

    Запишите строку подключения и имя раздела. Вы используете их для отправки и получения сообщений.

Дальнейшие шаги

Чтобы узнать, как отправлять сообщения в раздел и получать эти сообщения через подписку, ознакомьтесь со следующей статьей: выберите язык программирования в TOC.