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

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.

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 Next step (Próxima etapa).

1a-sns-console-home

(clique para ampliar)

1a-sns-console-home

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 New-Orders (Novos pedidos), na caixa do nome do tópico, em seguida, clique em Create topic (Criar tópico).

2a-topic-create-wf

(clique para ampliar)

2a-topic-create-wf

b. A página de detalhes do tópico confirma que o tópico foi criado com sucesso.

2b-topic-create-confirm

(clique para ampliar)

2b-topic-create-confirm

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.

 

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, 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).

tmt_send-fanout-event-notifications_3b

(clique para ampliar)

tmt_send-fanout-event-notifications_3b

c. A 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 (Criar nova fila) para criar outra fila para armazenar pedidos ao serviço analítico.

tmt_send-fanout-event-notifications_3c

(clique para ampliar)

tmt_send-fanout-event-notifications_3c

d. Insira Orders-for-Analytics (Pedidos para análise) no campo Queue Name (Nome da fila) e clique em Quick-Create Queue (Criar fila rápido). 

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 (Pedidos para inventário) e Orders-for-Analytics (Pedidos para análise). Em Queue Actions (Ações de fila), selecione Subscribe Queues to SNS Topic (Inscrever filas para o tópico SNS).

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 (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).  

tmt_send-fanout-event-notifications_4b

(clique para ampliar)

tmt_send-fanout-event-notifications_4b

c. A caixa de diálogo Topic Subscription Result (Resultado da inscrição no tópico) é exibida. Clique em OK.

tmt_send-fanout-event-notifications_4c

(clique para ampliar)

tmt_send-fanout-event-notifications_4c

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 New Orders (Novos pedidos) do console do Amazon SNS, clique em Publish message (Publicar mensagem).

 

5a-topic-create-confirm

(clique para ampliar)

5a-topic-create-confirm

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.

 

5b-sns-send-message-wf

(clique para ampliar)

5b-sns-send-message-wf

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.


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 Queue Action (Ação da fila), selecione View/Delete Messages (Visualizar/Excluir mensagens).

 

tmt_send-fanout-event-notifications_6a

(clique para ampliar)

tmt_send-fanout-event-notifications_6a

b. Clique em Start Polling for Messages (Iniciar a sondagem por mensagens).


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 (Visualizar/Excluir mensagens nos pedidos para inventário) é exibida.

tmt_send-fanout-event-notifications_6c

(clique para ampliar)

tmt_send-fanout-event-notifications_6c

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

 

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

 

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 (Pedidos para análise) 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 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.


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

Selecione o tópico New-Orders (Novos pedidos).

Clique em Delete (Excluir) para excluir os tópicos.

 

7a

(clique para ampliar)

7a

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

7b

(clique para ampliar)

7b

c. No console do Amazon SQS, selecione as filas Orders-for-Inventory (Pedidos para inventário) e Orders-for-Analytics (Pedidos para análise). Em Queue Actions (Ações de fila), selecione Delete Queues (Excluir filas).


tmt_send-fanout-event-notifications_7c

(clique para ampliar)

tmt_send-fanout-event-notifications_7c

d. A caixa de diálogo Delete Queues (Excluir filas) é exibida. Clique em Yes, Delete 2 Queues (Sim, excluir 2 filas). As filas sã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 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 »

Sim
Não