Usar a CLI do Azure para criar um tópico do Barramento de Serviço e assinaturas para o tópico

Neste Início rápido, você usará a CLI do Azure para criar um tópico do Barramento de Serviço e, em seguida, criará assinaturas para esse tópico.

O que são os tópicos e as assinaturas do Barramento de Serviço?

Os tópicos e assinaturas do Barramento de Serviço dão suporte a um modelo de comunicação de mensagens de publicação/assinatura . Durante o uso de tópicos e assinaturas, os componentes de um aplicativo distribuído não se comunicam diretamente uns com os outros, eles trocam mensagens por meio de um tópico, que atua como um intermediário.

TopicConcepts

Ao contrário do que ocorre com as filas do Barramento de Serviço, em que cada mensagem é processada por um único consumidor, tópicos e assinaturas fornecem uma forma de comunicação de um para muitos usando um padrão de publicação/assinatura. É possível registrar várias assinaturas para um tópico. Quando uma mensagem é enviada a um tópico, é disponibilizada para cada assinatura para ser manipulada/processada de forma independente. Uma assinatura de tópico é semelhante a uma fila virtual que recebe cópias das mensagens enviadas para o tópico. Outra opção é registrar regras de filtro para um tópico por assinatura, o que permite que você filtre ou restrinja quais mensagens para um tópico são recebidas por quais assinaturas de tópico.

As assinaturas e os tópicos do Barramento de Serviço permitem o dimensionamento para processar um grande número de mensagens entre muitos usuários e aplicativos.

Pré-requisitos

Se você não tiver uma assinatura do Azure, poderá criar uma conta gratuita antes de começar.

Neste guia de início rápido, você usa o Azure Cloud Shell, que você pode iniciar depois de 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 seu computador.

Criar assinaturas e um tópico do Barramento de Serviço

Cada assinatura a um tópico pode receber uma cópia de cada mensagem. Os tópicos tem total compatibilidade de protocolo e semântica com filas do Barramento de Serviço. Os tópicos do Barramento de Serviço dão suporte a uma ampla matriz de regras de seleção com condições de filtro, com ações opcionais que definem ou modificam as propriedades da mensagem. Cada vez que uma regra corresponde, é produzida uma mensagem. Para saber mais sobre regras, filtros e ações, consulte este link.

  1. Entre 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 comando a seguir para criar um grupo de recursos do Azure. Atualize o nome e a localização do grupo de recursos, se desejar.

    az group create --name MyResourceGroup --location eastus
    
  4. Execute o comando a seguir para criar um namespace de mensagem do Barramento de Serviço. Atualize o nome do namespace para que seja exclusivo.

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

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

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

    az servicebus topic subscription create --resource-group MyResourceGroup --namespace-name $namespaceName --topic-name MyTopic --name S2    
    
  8. Criar a terceira assinatura 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 as propriedades personalizadas (StoreId é uma das Store1, Store2 e 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 está em Store1, Store2, Store3 ou 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 comando a seguir para obter a cadeia de conexão primária para o namespace. Você usa 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 usará para enviar e receber mensagens.

Próximas etapas

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