Создание раздела служебной шины и подписок на него с помощью Azure CLI
В этом кратком руководстве описано, как создать раздел служебной шины и подписки на него с помощью Azure CLI.
Что такое разделы и подписки служебной шины?
Разделы и подписки служебной шины поддерживают модель обмена сообщениями " публикация и подписка ". При использовании разделов и подписок компоненты распределенного приложения не взаимодействуют между собой напрямую, а обмениваются сообщениями через раздел, который выступает в качестве посредника.
В отличие от очередей служебной шины, где каждое сообщение обрабатывается одним потребителем, разделы и подписки предоставляют вид связи одного со многими с помощью шаблона публикации/подписки. Можно зарегистрировать несколько подписок на раздел. Когда сообщение отправляется в раздел, оно затем может обрабатываться независимо каждой подпиской. Раздел подписки напоминает виртуальную очередь, которая получает копии сообщений, отправленных в раздел. Вы можете зарегистрировать правила фильтрации для раздела на основе подписки, которые позволят указать, какие сообщения и от каких подписок могут быть получены разделом.
Разделы и подписки служебной шины обеспечивают возможность масштабирования для обработки большого количества сообщений для большого количества пользователей и приложений.
Необходимые компоненты
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
В этом кратком руководстве описано, как запустить Azure Cloud Shell после входа в портал Azure. Дополнительные сведения об Azure Cloud Shell см. в статье Обзор Azure Cloud Shell. Вы также можете установить и использовать Azure PowerShell на компьютере.
Создание раздела и подписок служебной шины
Каждая подписка на раздел может получать копию любого сообщения. Разделы полностью совместимы с очередями служебной шины на уровнях протоколов и семантики. Разделы служебной шины поддерживают широкий набор правил отбора и условий фильтра, а также позволяют создать действия для присвоения или изменения свойств сообщения. Каждый раз, когда срабатывает правило, создается новое сообщение. Чтобы узнать больше о правилах, фильтрах и действиях, перейдите по этой ссылке.
Войдите на портал Azure.
Запустите Azure Cloud Shell, щелкнув значок, показанный на следующем изображении. Переключитесь на режим Bash, если CloudShell работает в режиме PowerShell.
Выполните следующую команду, чтобы создать группу ресурсов Azure. При желании измените имя группы ресурсов и расположение.
az group create --name MyResourceGroup --location eastus
Выполните следующую команду, чтобы создать пространство имен Служебной шины для обмена сообщениями. Обновите имя пространства имен, чтобы оно было уникальным.
namespaceName=MyNameSpace$RANDOM az servicebus namespace create --resource-group MyResourceGroup --name $namespaceName --location eastus
Чтобы создать раздел в пространстве имен, выполните следующую команду.
az servicebus topic create --resource-group MyResourceGroup --namespace-name $namespaceName --name MyTopic
Создание первой подписки на раздел
az servicebus topic subscription create --resource-group MyResourceGroup --namespace-name $namespaceName --topic-name MyTopic --name S1
Создание второй подписки на раздел
az servicebus topic subscription create --resource-group MyResourceGroup --namespace-name $namespaceName --topic-name MyTopic --name S2
Создание третьей подписки на раздел
az servicebus topic subscription create --resource-group MyResourceGroup --namespace-name $namespaceName --topic-name MyTopic --name S3
Создайте фильтр для первой подписки, используя фильтр с пользовательскими свойствами (
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')"
Создайте фильтр для второй подписки, используя фильтр с пользовательскими свойствами (
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'"
Создайте фильтр для третьей подписки, используя фильтр с пользовательскими свойствами (
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')"
Выполните следующую команду, чтобы получить первичную строку подключения для пространства имен. Эта строка подключения используется для подключения к очереди и отправки и получения сообщений.
az servicebus namespace authorization-rule keys list --resource-group MyResourceGroup --namespace-name $namespaceName --name RootManageSharedAccessKey --query primaryConnectionString --output tsv
Запишите строку подключения и имя раздела. Они используются для отправки и получения сообщений.
Следующие шаги
Чтобы узнать, как отправлять сообщения в раздел и получать эти сообщения с помощью подписки, ознакомьтесь с приведенной ниже статьей (выберите язык программирования в оглавлении).