Con este tutorial aprenderá a enviar mensajes de distribución ramificada con Amazon Simple Notification Service (SNS) y Amazon Simple Queue Service (Amazon SQS). En este caso, los mensajes se envían mediante notificaciones push a varios suscriptores, lo que evita tener que verificar u obtener periódicamente actualizaciones y permite que los suscriptores procesen el mensaje de manera asíncrona y en paralelo.

A modo de ejemplo, asumiremos que está desarrollando una aplicación nativa en la nube que envía un mensaje de Amazon SNS a un tema cada vez que se realiza un pedido en una tienda online. Las colas de Amazon SQS suscritas a dicho tema recibirán notificaciones idénticas para el nuevo pedido.

Los servicios de AWS que se utilizan en este tutorial están dentro de la capa gratuita de AWS.

Es necesario tener una cuenta para poder enviar notificaciones de eventos de distribución ramificada en AWS

Crear una cuenta gratuita

La capa gratuita de AWS incluye 1 000 000 de publicaciones para Amazon Simple Notification Service y 1 000 000 de solicitudes de Amazon Simple Queue Service.

Consulte los detalles de la capa gratuita de AWS »

 

Cuando haga clic aquí, se abrirá la consola de administración de AWS en una ventana nueva del navegador para que pueda seguir teniendo abierta esta guía paso a paso. Cuando la pantalla se cargue, escriba su nombre de usuario y contraseña para comenzar. A continuación, escriba notification en la barra de búsqueda y seleccione Simple Notification Service para abrir la consola del servicio.

tmt_send-fanout-event-notifications_1a

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_1a

a. Si se muestra la página de inicio de la consola de SNS, haga clic en Next step (Siguiente paso).

1a-sns-console-home

(Haga clic para ampliar).

1a-sns-console-home

En este paso, creará un tema de Amazon SNS. Un tema es un canal de comunicación para enviar mensajes y suscribirse a notificaciones. En este ejemplo, un aplicación de eCommerce de muestra enviará un mensaje mediante una notificación push a un tema de Amazon SNS cada vez que se realice un pedido nuevo en la tienda online. 


a.  En la página Create topic (Crear tema), escriba Nuevos-Pedidos en el cuadro de nombres y, a continuación, haga clic en Create topic (Crear tema).

2a-topic-create-wf

(Haga clic para ampliar).

2a-topic-create-wf

b. En la página Topic details (Detalles del tema) se confirma si el tema se creó correctamente.

2b-topic-create-confirm

(Haga clic para ampliar).

2b-topic-create-confirm

Ahora que ya creó el tema con Amazon SNS, creará colas de Amazon SQS que se suscribirán al tema.

Cuando suscribe varias colas a un tema, cada cola recibe notificaciones idénticas cada vez que un mensaje se envía mediante una notificación push al tema. A continuación, los servicios asociados a dichas colas pueden procesar los pedidos de manera asíncrona y en paralelo.

Por ejemplo, una instancia de servidor de Amazon EC2 asociada a una de las colas podría encargarse del procesamiento o la ejecución del pedido, mientras la otra instancia de servidor se puede asociar a un almacén de datos para realizar análisis de todos los pedidos recibidos.

Para simplificar el ejemplo, en este tutorial no vamos a asociar instancias EC2 a las colas.


a. Haga clic aquí para abrir la consola de Amazon SQS en una ventana de navegador nueva. Si se muestra la página de inicio de SQS, haga clic en Get Started Now (Empezar ahora). De lo contrario, continúe con el siguiente paso.

 

tmt_send-fanout-event-notifications_3a

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_3a

b. La primera cola almacenará pedidos para un servicio de inventario ficticio que realiza un seguimiento de los productos, y los agrega y elimina del inventario según sea necesario en función de cada pedido.  

En la página Create New Queue (Crear cola nueva), escriba Pedidos-para-Inventario en el campo Queue Name (Nombre de cola). Deje la opción Standard Queue (Cola estándar) seleccionada y haga clic en Quick-Create Queue (Creación rápida de cola).

tmt_send-fanout-event-notifications_3b

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_3b

c. La nueva cola está creada y seleccionada en la lista de colas. A continuación, creará una segunda cola para gestionar análisis relacionados con los pedidos.

Haga clic en Create New Queue (Crear cola nueva) a fin de crear otra cola para almacenar pedidos destinados al servicio de análisis.

tmt_send-fanout-event-notifications_3c

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_3c

d. Escriba Pedidos-para-Análisis en el campo Queue Name (Nombre de cola) y haga clic en Quick-Create Queue (Creación rápida de cola). 

tmt_send-fanout-event-notifications_3d

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_3d

e. La cola nueva aparecerá en la lista de colas.

tmt_send-fanout-event-notifications_3e

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_3e

Ahora que ya creó las dos colas de Amazon SQS, debe suscribirlas al tema de Amazon SNS que transmite notificaciones de los pedidos nuevos.


a. En la lista de colas, seleccione las colas Pedidos-para-Inventario y Pedidos-para-Análisis. En Queue Actions (Acciones para colas), seleccione Subscribe Queues to SNS Topic (Suscribir colas a tema de SNS).

tmt_send-fanout-event-notifications_4a

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_4a

b. Se muestra el cuadro de diálogo Subscribe to a Topic (Suscribir a un tema). En la lista desplegable Choose a Topic (Elegir un tema), seleccione el tema Nuevos-Pedidos de Amazon SNS.

Su tema de SNS aparece en la lista porque lo creó a partir de la misma cuenta que utilizó para crear sus colas de Amazon SQS. Si el tema de SNS se creó con otra cuenta, puede suscribirse a él con el tema ARN. Para leer más detalles, consulte la documentación de Amazon SNS.

Deje la sección Topic Region (Región del tema) sin modificar y haga clic en Subscribe (Suscribir).  

tmt_send-fanout-event-notifications_4b

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_4b

c. Se muestra el cuadro de diálogo Topic Subscription Result (Resultado de suscripción al tema). Haga clic en OK (Aceptar).

tmt_send-fanout-event-notifications_4c

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_4c

Las colas ya están suscritas al tema. En este paso, vamos a simular un pedido nuevo. Para ello, vamos a hacer que la aplicación de eCommerce ficticia envíe un mensaje mediante una notificación push al tema con los detalles del pedido.


a. En la página de detalles del tema Nuevos pedidos de la consola de Amazon SNS, haga clic en Publish message (Publicar mensaje).

 

5a-topic-create-confirm

(Haga clic para ampliar).

5a-topic-create-confirm

b. Aparecerá la página Publish Message to topic (Publicar mensaje en tema). En el cuadro Subject (Asunto), escriba Pedido 123-4567890-1234567. En el campo Message (Mensaje), escriba el siguiente texto para representar un pedido de muestra:

1 x dispositivo de 29,99 USD

2 x cables para dispositivo de 4,99 USD

Haga clic en Publish Message (Publicar mensaje). Aparecerá un cuadro de diálogo de confirmación.

 

5b-sns-send-message-wf

(Haga clic para ampliar).

5b-sns-send-message-wf

Una vez publicado el mensaje nuevo, Amazon SNS entregará dicho mensaje en cada punto de enlace que esté suscrito al tema. En un caso de distribución ramificada como este, las colas de Amazon SQS son los puntos de enlace.

En este paso, confirmará que las colas recibieron la notificación sobre el nuevo pedido mediante la visualización del mensaje que el tema envió a las colas.


a. En la consola de Amazon SQS, seleccione el cuadro para la cola Pedidos-para-Inventario en la lista de colas. En la lista desplegable Queue Action (Acción para cola), seleccione View/Delete Messages (Ver o eliminar mensajes).

 

tmt_send-fanout-event-notifications_6a

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_6a

b. Haga clic en Start Polling for Messages (Iniciar sondeo de mensajes).


tmt_send-fanout-event-notifications_6b

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_6b

c. Aparecerá el cuadro de diálogo View/Delete Messages in Pedidos-para-Inventario (Ver o eliminar mensajes en Pedidos-para-Inventario).

tmt_send-fanout-event-notifications_6c

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_6c

d. En la columna Body (Cuerpo), haga clic en More Details (Más detalles). El cuadro Message Details (Detalles de mensajes) incluye un documento JSON con el asunto y el mensaje que publicó en el tema.  

Ya confirmó que la cola Pedidos-para-Inventario recibió la notificación del pedido nuevo proveniente del tema Nuevos-Pedidos.  

Haga clic en Close (Cerrar).

 

tmt_send-fanout-event-notifications_6d

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_6d

e. Asumiremos que el servicio de inventario ficticio ya finalizó el procesamiento de este mensaje y que ahora podemos eliminar el mensaje de la cola de manera segura. 

Haga clic en Delete 1 Message (Eliminar 1 mensaje). Para confirmar la acción, haga clic en Yes, Delete Checked Messages (Sí, eliminar mensajes seleccionados). A continuación, haga clic en Close (Cerrar).

 

tmt_send-fanout-event-notifications_6e

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_6e

f. Repita los pasos 6a a 6e para confirmar que la cola Pedidos-para-Análisis también haya recibido la notificación del pedido nuevo.

tmt_send-fanout-event-notifications_6f

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_6f

En este paso, eliminará los recursos que creó para el tutorial, que incluyen las suscripciones al tema, los temas y las colas. Una práctica recomendada consiste en eliminar los recursos que ya no utiliza para evitar cargos adicionales.


a. Abra la consola de Amazon SNS y haga clic en Topics (Temas), ubicado en el panel de navegación izquierdo.

Seleccione el tema Nuevos-Pedidos.

Haga clic en Delete (Eliminar) para eliminar temas.

 

7a

(Haga clic para ampliar).

7a

b. Aparecerá el cuadro de diálogo de confirmación Delete (Eliminar). Escriba delete me (eliminarme) en el cuadro de diálogo y haga clic en Delete (Eliminar). El tema y sus suscripciones se eliminarán. Ahora puede cerrar la ventana del navegador de SNS (pero no cierre la sesión, ya que aún necesita eliminar las colas en la consola de SQS).

7b

(Haga clic para ampliar).

7b

c. En la consola de Amazon SQS, seleccione las colas Pedidos-para-Inventario y Pedidos-para-Análisis. En Queue Actions (Acciones para colas), seleccione Delete Queues (Eliminar colas).


tmt_send-fanout-event-notifications_7c

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_7c

d. Se mostrará el cuadro de diálogo Delete Queues (Eliminar colas). Haga clic en Yes, Delete 2 Queues (Sí, eliminar 2 colas). Las colas se eliminarán.

Ahora puede cerrar la sesión en la consola de Amazon SQS.

tmt_send-fanout-event-notifications_7d

(Haga clic para ampliar).

tmt_send-fanout-event-notifications_7d

Envió notificaciones de distribución ramificada con Amazon SNS y Amazon SQS. Ya está listo para utilizar los servicios Amazon SNS y Amazon SQS juntos para entregar mensajes en aplicaciones que necesiten recibir una notificación inmediata de un evento o para almacenar en búfer mensajes en colas de Amazon SQS para procesamientos ulteriores en otras aplicaciones.

 


Ahora que ya aprendió a implementar notificaciones de distribución ramificada de mensajes con Amazon Simple Notification Service y Amazon Simple Queue Service, elija una de las siguientes opciones para leer información más detallada acerca del envío de mensajes a través de la nube en AWS.

Más información

Obtenga información general sobre las capacidades, los componentes y los casos de uso de los temas de mensajes en Amazon Web Services (AWS). Visite la página web de Amazon SNS »

Profundizar conocimientos

Aprenda a habilitar aplicaciones, usuarios finales y dispositivos para enviar y recibir notificaciones de manera instantánea a partir de la nube. Lea la documentación »

Ver en acción

Averigüe de qué manera clientes como Capital One usan Amazon SQS y Amazon SNS para desacoplar aplicaciones y ajustar su escala. Vea el seminario web »

No