Neste tutorial, você implementará um cenário 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 a situação, vamos supor que você está desenvolvendo um aplicativo nativo em nuvem que envia uma mensagem Amazon SNS para um tópico sempre que um pedido é realizado em uma loja online. Cada uma das filas do Amazon SQS que está subscrita nesse tópico receberá notificações idênticas para o novo pedido.

Os serviços da AWS que você usa neste tutorial estão dentro do nível gratuito da AWS.

Você precisa de uma conta para notificações de eventos de distribuição na AWS

Criar conta gratuita

O 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.

Veja 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 você possa manter aberto esse guia detalhado. Quando a tela carregar, digite seu nome de usuário e senha para começar. Em seguida, digite notification na barra de pesquisa e selecione Simple Notification Service para abrir o console de serviço.

tmt_send-fanout-event-notifications_1a

(clique para ampliar)

tmt_send-fanout-event-notifications_1a

a. Se a página inicial do console do SNS for exibida, clique em Get Started Now.

tmt_send-fanout-event-notifications_1b

(clique para ampliar)

tmt_send-fanout-event-notifications_1b

Nesta etapa, você criará um tópico com o Amazon SNS. Um tópico é um canal de comunicação que permite o envio de mensagens e o recebimento de notificações. Neste exemplo, uma amostra de aplicativo de comércio eletrônico enviará uma mensagem para um tópico do Amazon SNS sempre que um novo pedido é feito na loja online. 


a. Em Common Actions, clique em Create topic.

tmt_send-fanout-event-notifications_2a

(clique para ampliar)

tmt_send-fanout-event-notifications_2a

b. A caixa de diálogo Create topic é exibida. Na caixa Topic name, digite New-Orders e, em seguida, clique em Create topic.

tmt_send-fanout-event-notifications_2b

(clique para ampliar)

tmt_send-fanout-event-notifications_2b

c. A página Topic Details é exibida.

tmt_send-fanout-event-notifications_2c

(clique para ampliar)

tmt_send-fanout-event-notifications_2c

Agora que você criou o tópico com o Amazon SNS, você criará filas do Amazon SQS que serão inscritas no tópico.

Quando você inscreve várias filas em um tópico, cada fila recebe notificações idênticas sempre que uma mensagem for enviada para o tópico. Serviços associados a essas filas podem, em seguida, processar os pedidos de forma assíncrona e em paralelo.

Por exemplo, a instância de servidor do Amazon EC2 associada a uma das filas pode lidar com o processamento ou o preenchimento do pedido enquanto a outra instância do servidor pode estar associada a um data warehouse para análise de todos os pedidos recebidos.

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


a. Click here para abrir o console do Amazon SQS em uma nova janela do navegador. Se a página de entrada do SQS for exibida, clique em Get Started Now. Caso contrário, vá para a próxima etapa.

 

tmt_send-fanout-event-notifications_3a

(clique para ampliar)

tmt_send-fanout-event-notifications_3a

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, conforme necessário.  

Na página Create New Queue , insira Orders-for-Inventory no campo Queue Name. Deixe selecionada a opção Standard Queue e clique em Quick-Create Queue.

tmt_send-fanout-event-notifications_3b

(clique para ampliar)

tmt_send-fanout-event-notifications_3b

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

Clique em Create New Queue para criar outra fila para armazenar pedidos para o serviço analítico.

tmt_send-fanout-event-notifications_3c

(clique para ampliar)

tmt_send-fanout-event-notifications_3c

d. Insira Orders-for-Analytics no campo Queue Name e clique em Quick-Create Queue.

tmt_send-fanout-event-notifications_3d

(clique para ampliar)

tmt_send-fanout-event-notifications_3d

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

tmt_send-fanout-event-notifications_3e

(clique para ampliar)

tmt_send-fanout-event-notifications_3e

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.


a. Na lista de filas, selecione as filas Orders-for-Inventory e Orders-for-Analytics. Em Queue Actions, selecione Subscribe Queues to SNS Topic.

tmt_send-fanout-event-notifications_4a

(clique para ampliar)

tmt_send-fanout-event-notifications_4a

b. A caixa de diálogo Subscribe to a Topic é exibida. Na lista suspensa, Choose a Topic e selecione New-Orders no tópico do Amazon SNS.

O tópico SNS é exibido na lista porque foi criado a partir da mesma conta que você usou para criar as filas do Amazon SQS. Se o tópico do SNS foi feito a partir de outra conta, você pode inscrevê-lo usando o tópico ARN. Para obter mais detalhes, consulte a documentação do Amazon SNS.

Deixe a Topic Region inalterada e clique em Subscribe. .

tmt_send-fanout-event-notifications_4b

(clique para ampliar)

tmt_send-fanout-event-notifications_4b

c. A caixa de diálogo Topic Subscription Result é exibida. Clique em OK.

tmt_send-fanout-event-notifications_4c

(clique para ampliar)

tmt_send-fanout-event-notifications_4c

As filas agora 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 para o tópico com os detalhes do pedido.


a. No console do Amazon SNS, clique em Topics.

 

tmt_send-fanout-event-notifications_5a

(clique para ampliar)

tmt_send-fanout-event-notifications_5a

b. Selecione o tópico New-Orders e, em seguida, clique no botão Publish to topic.


tmt_send-fanout-event-notifications_5b

(clique para ampliar)

tmt_send-fanout-event-notifications_5b

c. A página Publish a Message é exibida.

Na caixa Subject , digite Order 123-4567890-1234567.

Em Message format, selecione Raw.

No campo Message , insira o seguinte texto para representar um exemplo de pedido:
1 x Widget @ 29,99 USD
2 x Widget Cables @ 4,99 USD

Clique em Publish Message. Será exibida uma caixa de diálogo de confirmação.

tmt_send-fanout-event-notifications_5c

(clique para ampliar)

tmt_send-fanout-event-notifications_5c

Quando uma nova mensagem é publicada, o Amazon SNS entregará essa mensagem para cada endpoint inscrito no tópico. Em um cenário fan-out como esse, as filas do Amazon SQS são os endpoints.

Nesta etapa, você confirmará que as filas receberam a nova notificação de pedido por meio da visualização da mensagem enviado pelo tópico às filas.


a. No console do Amazon SQS, marque a caixa Orders-for-Inventory a partir da lista de filas. Na lista suspensa Queue Action, selecione View/Delete Messages.

 

tmt_send-fanout-event-notifications_6a

(clique para ampliar)

tmt_send-fanout-event-notifications_6a

b. Clique em Start Polling for Messages.


tmt_send-fanout-event-notifications_6b

(clique para ampliar)

tmt_send-fanout-event-notifications_6b

c. A caixa de diálogo View/Delete Messages in Orders-for-Inventory é exibida.

tmt_send-fanout-event-notifications_6c

(clique para ampliar)

tmt_send-fanout-event-notifications_6c

d. Na corpo da coluna, clique em More Details. A caixa Message Details contém um documento JSON que contém o assunto e a mensagem publicada no tópico.

Você confirmou que a fila Orders-for-Inventory recebeu a notificação do novo pedido do tópico New-Orders.

Clique em Close.

 

tmt_send-fanout-event-notifications_6d

(clique para ampliar)

tmt_send-fanout-event-notifications_6d

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

Clique em Delete 1 Message. Para confirmar, clique em Yes, Delete Checked Messages. Em seguida, clique em Close.

 

tmt_send-fanout-event-notifications_6e

(clique para ampliar)

tmt_send-fanout-event-notifications_6e

f. Repita as etapas 6a a 6e para confirmar que a fila Orders-for-Analytics também recebeu a notificação do novo pedido.

tmt_send-fanout-event-notifications_6f

(clique para ampliar)

tmt_send-fanout-event-notifications_6f

Nesta etapa, você excluirá os recursos criados para este tutorial, que incluem os inscrições de tópico, os tópicos e as filas. A exclusão de recursos não utilizados é uma melhor prática para que você não seja cobrado por eles.


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

Selecione o tópico New-Orders.

Na lista suspensa, clique em Actions e selecione Delete topics.


tmt_send-fanout-event-notifications_7a

(clique para ampliar)

tmt_send-fanout-event-notifications_7a

b. A caixa de diálogo de confirmação Delete é exibida. Clique em Delete. O tópico e suas inscrições serã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 SQS).

 

tmt_send-fanout-event-notifications_7b

(clique para ampliar)

tmt_send-fanout-event-notifications_7b

c. No console da Amazon SQS, selecione as filas Orders-for-Inventory e Orders-for-Analytics. Em Queue Actions, selecione Delete Queues.


tmt_send-fanout-event-notifications_7c

(clique para ampliar)

tmt_send-fanout-event-notifications_7c

d. A caixa de diálogo Delete Queues é exibida. Clique em Yes, Delete 2 Queues. As filas serão excluídas.

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

tmt_send-fanout-event-notifications_7d

(clique para ampliar)

tmt_send-fanout-event-notifications_7d

Você implementou um cenário fan-out 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 mensagens em filas do Amazon SQS para outros aplicativos processarem posteriormente.

 


Agora que você aprendeu como implementar notificações fan-out de mensagem usando o Amazon Simple Notification Service e Amazon Simple Queue Service, selecione uma das seguintes opções para conhecer mais sistemas de mensagens em nuvem da AWS.

Saiba mais

Obtenha uma visão geral dos recursos, componentes e casos de uso para os tópicos de mensagem da Amazon Web Services (AWS). Acesse a página da web do Amazon SNS »

Conheça mais

Explore como permitir que aplicativos, usuários finais e dispositivos enviem e recebam notificações da nuvem instantaneamente. Leia a documentação »

Veja-o em ação

Ouça como clientes como a Capital One usam o Amazon SQS e o Amazon SNS para desacoplar e escalar aplicativos. Assista ao webinar »

Sim
Não