Usar a CLI do Azure para criar um tópico do Service Bus e assinaturas para o tópico

Neste início rápido, você usa a CLI do Azure para criar um tópico do Service Bus e, em seguida, criar assinaturas para esse tópico.

O que são os tópicos e as subscrições do Service Bus?

Os tópicos e as subscrições do Service Bus suportam um modelo de comunicação de mensagens de publicação/subscrição. Ao utilizar tópicos e subscrições, os componentes de uma aplicação distribuída não comunicam diretamente entre si; trocam antes mensagens através de um tópico, que funciona como um intermediário.

TopicConcepts

Em contraste com as filas do Service Bus, em que cada mensagem é processada por um único consumidor, os tópicos e assinaturas fornecem uma forma de comunicação um-para-muitos, usando um padrão de publicação/assinatura. É possível registar várias subscrições num tópico. Quando uma mensagem é enviada para um tópico, é depois disponibilizada para que cada subscrição a processe de forma independente. Uma subscrição num tópico é semelhante a uma fila virtual que recebe cópias das mensagens que foram enviadas para o tópico. Opcionalmente, você pode registrar regras de filtro para um tópico por assinatura, o que permite filtrar ou restringir quais mensagens para um tópico são recebidas por quais assinaturas de tópico.

Os tópicos e assinaturas do Service Bus permitem dimensionar para processar um grande número de mensagens em um grande número de usuários e aplicativos.

Pré-requisitos

Se não tiver uma subscrição do Azure, pode criar uma conta gratuita antes de começar.

Neste início rápido, você usa o Azure Cloud Shell que pode ser iniciado após entrar no portal do Azure. Para obter detalhes sobre o Azure Cloud Shell, consulte Visão geral do Azure Cloud Shell. Você também pode instalar e usar o Azure PowerShell em sua máquina.

Criar um tópico do Service Bus e subscrições

Cada subscrição de um tópico pode receber uma cópia de cada mensagem. Os tópicos são totalmente compatíveis no que diz respeito a protocolo e semântica com as filas do Service Bus. Os tópicos do Service Bus suportam uma vasta gama de regras de seleção com condições de filtro, com ações opcionais que definem ou modificam propriedades de mensagem. Sempre que uma regra tem correspondência, é criada uma mensagem. Para saber mais sobre regras, filtros e ações, clique nesta hiperligação.

  1. Inicie sessão no portal do Azure.

  2. Inicie o Azure Cloud Shell selecionando o ícone mostrado na imagem a seguir. Mude para o modo Bash se o Cloud Shell estiver no modo PowerShell .

  3. Execute o seguinte comando para criar um grupo de recursos do Azure. Atualize o nome do grupo de recursos e o local, se desejar.

    az group create --name MyResourceGroup --location eastus
    
  4. Execute o seguinte comando para criar um namespace de mensagens do Service Bus. Atualize o nome do namespace para ser exclusivo.

    namespaceName=MyNameSpace$RANDOM
    az servicebus namespace create --resource-group MyResourceGroup --name $namespaceName --location eastus
    
  5. Execute o seguinte comando para criar um tópico no namespace.

    az servicebus topic create --resource-group MyResourceGroup   --namespace-name $namespaceName --name MyTopic
    
  6. Criar a primeira subscrição do tópico

    az servicebus topic subscription create --resource-group MyResourceGroup --namespace-name $namespaceName --topic-name MyTopic --name S1    
    
  7. Criar a segunda subscrição do tópico

    az servicebus topic subscription create --resource-group MyResourceGroup --namespace-name $namespaceName --topic-name MyTopic --name S2    
    
  8. Criar a terceira subscrição do tópico

    az servicebus topic subscription create --resource-group MyResourceGroup --namespace-name $namespaceName --topic-name MyTopic --name S3    
    
  9. Crie um filtro na primeira assinatura com um filtro usando propriedades personalizadas (StoreId é um dos Store1, Store2e 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. Criar um filtro na segunda assinatura com um filtro usando as propriedades do cliente (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. Crie um filtro na terceira assinatura com um filtro usando as propriedades do cliente (StoreId não em Store1, Store2, Store3ou 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. Execute o seguinte comando para obter a cadeia de conexão primária para o namespace. Use essa cadeia de conexão para se conectar à fila e enviar e receber mensagens.

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

    Anote a cadeia de conexão e o nome do tópico. Você os usa para enviar e receber mensagens.

Próximos passos

Para saber como enviar mensagens para um tópico e receber essas mensagens por meio de uma assinatura, consulte o seguinte artigo: selecione a linguagem de programação no sumário.