Поделиться через


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

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

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

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

TopicConcepts

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

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

Необходимые компоненты

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

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

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

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

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

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

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

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

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

Следующие шаги

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