Neste tutorial, você implementará um cenário de sistema de distribuição 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 a vários assinantes, o que elimina a necessidade de verificar ou procurar periodicamente atualizações e permite 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 no nível gratuito da AWS.
Você precisa de uma conta para notificações de eventos de distribuição na AWS
Crie uma conta gratuitaO nível gratuito da AWS inclui 1.000.000 de publicações para o Amazon Simple Notification Service e 1.000.000 de solicitações do Amazon Simple Queue Service.
Consulte os detalhes do nível gratuito da AWS »
Clique aqui para abrir o Console de Gerenciamento da AWS em uma nova janela do navegador para que seja possível manter aberto este guia detalhado. Quando a tela carregar, digite seu nome do usuário e senha para começar. Em seguida, digite notification (notificação) na barra de pesquisa e selecione Simple Notification Service para abrir o console do serviço.
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.
Agora que o tópico com o Amazon SNS foi criado, 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.
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 Create New Queue (Criar nova fila), insira Orders-for-Inventory (Pedidos para inventário) no campo Queue Name (Nome da fila). Deixe a opção Standard Queue (Fila padrão) selecionada e clique em Quick-Create Queue (Criar fila rápido).
Agora que você criou duas filas no Amazon SQS, você precisa inscrevê-las no tópico do Amazon SNS que transmite notificações de novos pedidos.
b. A caixa de diálogo Subscribe to a Topic (Inscrever para um tópico) é exibida. Na lista suspensa Choose a Topic (Escolher um tópico), selecione o tópico New-Orders (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, leia a documentação do Amazon SNS.
Deixe a Topic Region (Região do tópico) inalterada e clique em Subscribe (Inscrever).
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.
b. A página Publish Message to topic (Publicar mensagem no tópico) é exibida. Na caixa Subject (Assunto), digite Order 123-4567890-1234567. No campo Message (Mensagem), insira o texto a seguir para representar um exemplo de pedido:
1 x Widget @ $29.99 USD
2 x Widget Cables @ $4.99
Clique em Publish Message (Publicar mensagem). Será exibida uma caixa de diálogo de confirmação.
Depois que uma nova mensagem é publicada, o Amazon SNS entregará 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.
d. Na coluna Body (Corpo), clique em More Details (Mais detalhes). A caixa Message Details (Detalhes da mensagem) contém um documento JSON com o assunto e a mensagem publicada no tópico.
Você confirmou que a fila Orders-for-Inventory (Pedidos para inventário) recebeu a notificação do novo pedido do tópico New-Orders (Novos pedidos).
Clique em Close (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 Delete 1 Message (Excluir 1 mensagem). Para confirmar, clique em Yes, Delete Checked Messages (Sim, excluir mensagens selecionadas). Em seguida, clique em Close (Fechar).
Nesta etapa, você excluirá os recursos criados para este tutorial, que incluem as inscrições de tópicos, tópicos e filas. É recomendado excluir os recursos que não estejam mais em uso para não incorrer em cobranças.
b. A caixa de diálogo de confirmação Delete (Excluir) é exibida. Digite delete me (excluir me) na caixa de diálogo e clique em Delete (Excluir). O tópico e suas inscrições são excluídos. Você pode fechar a janela do navegador SNS (mas não faça logout, pois ainda precisa excluir as filas no console do SQS).
Você implementou um cenário de distribuição usando o Amazon SNS e o Amazon SQS. Agora você está pronto para usar o Amazon SNS e o Amazon SQS para entregar mensagens para aplicativos que exigem uma notificação imediata de um evento ou para armazenar em buffer mensagens nas filas do Amazon SQS para outros aplicativos processarem posteriormente.
Agora que você aprendeu como implementar notificações de distribuição de mensagem usando o Amazon Simple Notification Service e o Amazon Simple Queue Service, selecione uma das seguintes opções para conhecer mais sistemas de mensagens em nuvem da AWS.
Saiba mais
Confira uma visão geral de recursos, componentes e casos de uso de tópicos de mensagem na Amazon Web Services (AWS). Acesse a página da web do Amazon SNS »
Detalhes
Explore como permitir que aplicativos, usuários finais e dispositivos enviem e recebam notificações instantaneamente da nuvem. Leia a documentação »
Veja em ação
Saiba como clientes como a Capital One usam o Amazon SQS e o Amazon SNS para desacoplar e alterar a escala de aplicativos. Assista ao webinar »