Envie notificações de eventos de fanout

com o Amazon Simple Queue Service (SQS) e o Amazon Simple Notification Service (SNS)

Introdução

Neste tutorial, você implementará um cenário de fanout de mensagens usando o Amazon Simple Notification Service (SNS) e o Amazon Simple Queue Service (SQS). Nesse cenário, as mensagens são “enviadas por push” para diversos assinantes, o que elimina a necessidade de verificar ou procurar atualizações periodicamente e possibilita o processamento assíncrono em paralelo da mensagem pelos assinantes.

Para ilustrar isso, vamos supor que você esteja desenvolvendo um aplicativo nativo da nuvem que envia mensagem do Amazon SNS para um tópico sempre que um pedido é feito em uma loja online. As filas do Amazon SQS inscritas nesse tópico receberão notificações idênticas para o novo pedido.

Os serviços da AWS usados neste tutorial estão dentro do nível gratuito da AWS.

 Custo para a conclusão

Nível gratuito

 Serviços usados

O envio de notificações de eventos de fanout
na AWS requer uma conta

O nível gratuito da AWS inclui um milhão de publicações para o Amazon Simple Notification Service e um milhão de solicitações do Amazon Simple Queue Service. 

Consulte os detalhes do nível gratuito da AWS »

Implementação

  • Ao clicar aqui, o Console de Gerenciamento da AWS será aberto em uma nova janela do navegador, portanto, é possível manter este guia detalhado aberto. Quando a tela carregar, digite seu nome do usuário e senha para começar. Em seguida, digite notification na barra de pesquisa e selecione Simple Notification Service para abrir o console do serviço.

    Console de Gerenciamento da AWS

    a. Se a página inicial do console do SNS for exibida, clique em Próxima etapa.

    Se a página inicial do console do SNS for exibida, clique em Próxima etapa
  • Nesta etapa, você criará um tópico do Amazon SNS. Um tópico é um canal de comunicação para enviar mensagens e inscrever-se para notificações. Neste exemplo, um aplicativo de comércio eletrônico enviará uma mensagem para um tópico do Amazon SNS sempre que um novo pedido for feito na loja online. 

    a.  Na página Criar tópico, digite Novos pedidos na caixa de nome do tópico e, em seguida, clique em Criar tópico.

    Clique em Criar tópico

    b. A página Detalhes do tópico confirma que o tópico foi criado com êxito.

    A página Detalhes do tópico confirma que o tópico foi criado com êxito
  • Após a criação do tópico com o Amazon SNS, você criará as filas do Amazon SQS que serão inscritas no tópico.

    Quando você inscreve várias filas em um tópico, cada uma recebe notificações idênticas sempre que uma mensagem é enviada para o tópico. Os serviços anexados a essas filas podem processar os pedidos de forma assíncrona e paralela.

    Por exemplo, uma instância do servidor do Amazon EC2 vinculada a uma das filas poderia manipular o processamento ou o cumprimento do pedido, enquanto a outra instância do servidor poderia ser vinculada a um data warehouse para análise de todos os pedidos recebidos.

    Para simplificar, não associaremos as instâncias do EC2 às filas neste tutorial.

    a. Clique aqui para abrir o console do Amazon SQS em uma nova janela do navegador. Se a página inicial do SQS for exibida, clique em Get Started Now (Comece a usar agora). Caso contrário, prossiga para a próxima etapa.

    Clique em Começar a usar agora

    b. A primeira fila armazenará pedidos para um serviço de inventário fictício que mantém o controle de produtos, adicionando-os e excluindo-os do inventário a cada pedido, de acordo com a necessidade.  

    Na página Criar nova fila, insira Pedidos para inventário no campo Nome da fila. Deixe a opção Fila padrão selecionada e clique em Criar fila rápido.

    Clique em Criar fila rápido

    c. A nova fila é criada e selecionada na lista de filas. Em seguida, você criará uma segunda fila para lidar com análises de pedidos.

    Clique em Criar nova fila para criar outra fila para armazenar pedidos para serviços de análises.

    Clique em Criar nova fila

    d. Insira Pedidos para análises no campo Nome da fila e clique em Criar fila rápido

    Insira Pedidos para análises no campo Nome da fila e clique em Criar fila rápido

    e. A nova fila passará a ser exibida na lista de filas.

    A nova fila passará a ser exibida na lista de filas
  • Após a criação das duas filas do Amazon SQS, será necessário inscrevê-las no tópico do Amazon SNS que transmite notificações de novos pedidos.

    a. Na lista de filas, selecione as filas Orders-for-Inventory (Pedidos para inventário) e Orders-for-Analytics (Pedidos para análise). Em Ações de fila, selecione Inscrever filas no tópico do SNS.

    Em Ações de fila, selecione Inscrever filas no tópico do SNS

    b. A caixa de diálogo Inscrever-se em um tópico será exibida. Na lista suspensa Escolha um tópico, selecione o tópico Novos pedidos do Amazon SNS.

    O tópico do SNS aparece na lista porque você o criou com a mesma conta usada para criar suas filas do Amazon SQS. Se o tópico do SNS tiver sido criado por outra conta, você poderá inscrevê-lo usando o tópico ARN. Para obter mais detalhes, consulte a documentação do Amazon SNS.

    Deixe a Região do tópico inalterada e clique em Inscrever.

    Deixe a Região do tópico inalterada e clique em Inscrever

    c. A caixa de diálogo Resultado da inscrição do tópico será exibida. Clique em OK.

    A caixa de diálogo Resultado da inscrição do tópico será exibida. Clique em OK
  • Agora as filas estão inscritas no tópico. Nesta etapa, você simulará um novo pedido fazendo com que o aplicativo de comércio eletrônico fictício envie uma mensagem ao tópico com os detalhes do pedido.

    a. Na página de detalhes do tópico Novos pedidos do console do Amazon SNS, clique em Publicar mensagem.

    Clique em Publicar mensagem

    b. A página Publicar mensagem no tópico será exibida. Na caixa Assunto, digite Pedido 123-4567890-1234567. No campo Mensagem, insira o seguinte texto para representar um exemplo de pedido:

    1 x widget a USD 29,99
    2 x cabos de widget a USD 4,99

    Clique em Publicar mensagem. Uma caixa de diálogo de confirmação será exibida.

    Clique em Publicar mensagem
  • Após uma nova mensagem ser publicada, o Amazon SNS disponibilizará essa mensagem para cada endpoint inscrito no tópico. Em um cenário de distribuição como este, as filas do Amazon SQS são os endpoints.

    Nesta etapa, você confirmará que as filas receberam a notificação de novo pedido visualizando a mensagem que o tópico enviou para as filas.

    a. No console do Amazon SQS console, marque a caixa da fila Orders-for-Inventory (Pedidos para inventário) da lista de filas. Na lista suspensa Ação da fila, selecione Visualizar/excluir mensagens.

    Na lista suspensa Ação da fila, selecione Visualizar/excluir mensagens

    b. Clique em Iniciar busca por mensagens.

    Clique em Iniciar busca por mensagens

    c. A caixa de diálogo Visualizar/excluir mensagens nos pedidos para inventário será exibida.

    A caixa de diálogo Visualizar/excluir mensagens nos pedidos para inventário será exibida

    d. Na coluna Corpo, clique em Mais detalhes. A caixa Detalhes da mensagem contém um documento JSON com o assunto e a mensagem publicados no tópico.  

    Você confirmou que a fila Pedidos para inventário recebeu a notificação do novo pedido do tópico Novos pedidos.  

    Clique em Fechar.
     

    Clique em Fechar

    e. Vamos supor que nosso serviço de inventário fictício concluiu o processamento desta mensagem e que agora podemos excluir com segurança a mensagem da fila. 

    Clique em Excluir uma mensagem. Para confirmar, clique em Sim, excluir mensagens selecionadas. Em seguida, clique em Fechar.

    Para confirmar, clique em Sim, excluir mensagens selecionadas

    f. Repita as etapas 6a a 6e para confirmar que a fila Pedidos para análises também recebeu a notificação do novo pedido.

    Repita as etapas 6a a 6e para confirmar que a fila Pedidos para análises também recebeu a notificação do novo pedido
  • Nesta etapa, você excluirá os recursos criados para este tutorial, que incluem as inscrições de tópicos, os tópicos e as filas. É uma prática recomendada excluir os recursos que não estejam mais em uso para não incorrer em cobranças.

    a. Abra o console do Amazon SNS e clique em Tópicos no painel de navegação esquerdo.

    Selecione o tópico Novos pedidos.

    Clique em Excluir para excluir os tópicos.

    Clique em Excluir para excluir os tópicos

    b. A caixa de diálogo de confirmação Excluir será exibida. Digite exclua-me na caixa de diálogo e clique em Excluir. O tópico e as inscrições serão excluídos. Agora, você pode fechar a janela do navegador do SNS (mas não faça logout, pois ainda é necessário excluir as filas no console do SQS).

    Digite exclua-me na caixa de diálogo e clique em Excluir

    c. No console do Amazon SQS, selecione as filas Pedidos para inventário e Pedidos para análises. Em Ações de fila, selecione Excluir filas.

    Em Ações de fila, selecione Excluir filas

    d. A caixa de diálogo Excluir filas será exibida. Clique em Sim, excluir duas filas. As filas serão excluídas.

    Agora, você pode fazer logout do console do Amazon SQS.

     Clique em Sim, excluir duas filas

Este tutorial foi útil?

Parabéns!

Você implementou um cenário de distribuição usando o Amazon SNS e o Amazon SQS. Agora está tudo pronto para usar o Amazon SNS e o Amazon SQS em conjunto a fim de entregar mensagens para aplicações que exigem uma notificação imediata de um evento ou para armazenar mensagens em buffer nas filas do Amazon SQS para que outras aplicações as processem posteriormente.