Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
在本快速入门中,你将使用Azure CLI创建Service Bus主题,然后创建对该主题的订阅。
什么是“Service Bus”的主题和订阅?
Service Bus主题和订阅支持 publish/subscribe 消息传送通信模型。 在使用主题和订阅时,分布式应用程序的组件不会直接相互通信,而是通过充当中介的主题交换消息。
与Service Bus队列不同,其中每个消息由单个使用者处理,主题和订阅使用发布/订阅模式提供一对多通信形式。 可以为一个主题注册多个订阅。 当消息发送到主题时,每个订阅会分别对该消息进行处理。 主题订阅类似于接收发送至该主题的消息副本的虚拟队列。 可以选择为每个订阅单独注册主题的筛选规则,允许您筛选或限制哪些订阅会接收某个主题的哪些消息。
Service Bus 主题和订阅使你能够扩展规模,以处理分布在大量用户和应用程序上的大量消息。
先决条件
如果没有 Azure 订阅,可以在开始前创建 试用订阅。 可以在计算机上install并使用Azure CLI。
注意
在世纪互联运营的Microsoft Azure中使用Azure CLI之前,请先运行 az cloud set -n AzureChinaCloud 以更改云环境。 如果要切换回Azure公有云,请再次运行 az cloud set -n AzureCloud。
创建 Service Bus 主题和订阅
主题的每个订阅都可以接收每条消息的副本。 主题在完全协议和语义上与Service Bus队列兼容。 Service Bus 主题支持多样化的选择规则,并包含筛选条件,以及设置或修改消息属性的可选操作。 规则每次匹配时,都会生成一条消息。 若要详细了解规则、筛选器和操作,请遵循此 链接。
运行以下命令以登录到由世纪互联运营的Azure。
az cloud set -n AzureChinaCloud az login运行以下命令以创建Azure资源组。 如有需要,请更新资源组名称和位置。
az group create --name MyResourceGroup --location chinaeast运行以下命令以创建Service Bus消息命名空间。 更新命名空间的名称,使其成为唯一名称。
namespaceName=MyNameSpace$RANDOM az servicebus namespace create --resource-group MyResourceGroup --name $namespaceName --location chinaeast运行以下命令以在命名空间中创建主题。
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记下连接字符串和主题名称。 使用它们发送和接收消息。
后续步骤
要了解如何将消息发送到主题并通过订阅接收这些消息,请参阅以下文章:在目录中选择所需编程语言。