Envío de notificaciones de eventos de distribución ramificada

con Amazon Simple Queue Service (Amazon SQS) y Amazon Simple Notification Service (SNS)

Introducción

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 en el nivel gratuito de AWS.

 Costo de realización

Nivel gratuito

 Servicios utilizados

El envío de notificaciones de eventos de distribución ramificada
en AWS requiere una cuenta

El nivel gratuito 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 la información sobre el nivel gratuito de AWS »

Implementación

  • Al hacer clic aquí, se abrirá la Consola de administración de AWS en una ventana nueva del navegador de modo que pueda permanecer 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 (notificación) en la barra de búsqueda y seleccione Simple Notification Service para abrir la consola del servicio.

    Consola de administración de AWS

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

    Si se muestra la página de inicio de la consola de SNS, haga clic en Next step (Paso siguiente)
  • 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 New-Orders (Nuevos-Pedidos) en el cuadro de nombres y, luego, haga clic en Create topic.

    Haga clic en Create topic (Crear tema)

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

    En la página Topic details (Detalles del tema), se confirma si el tema se creó correctamente
  • 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.

    Haga clic en Get Started now (Empezar ahora)

    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 Orders-for-Inventory (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 la cola).

    Seleccione Quick-Create Queue (Creación rápida de la cola)

    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 para crear otra cola a fin de almacenar pedidos destinados al servicio de análisis.

    Haga clic en Create New Queue (Crear cola nueva)

    d. Ingrese Orders-for-Analytics (Pedidos-para-Análisis) en el campo Queue Name y haga clic en Quick-Create Queue

    Ingrese Orders-for-Analytics (Pedidos-para-Análisis) en el campo Queue Name y haga clic en Quick-Create Queue

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

    La cola nueva aparecerá en la lista de colas
  • 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 de la cola), seleccione Subscribe Queues to SNS Topic (Suscribir las colas a un tema de SNS).

    En Queue Actions (Acciones de la cola), seleccione Subscribe Queues to SNS Topic (Suscribir las colas a un tema de SNS)

    b. Se muestra el cuadro de diálogo Subscribe to a Topic (Suscribirse a un tema). En la lista desplegable Choose a Topic (Elegir un tema), seleccione el tema New-Orders 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 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 (Suscribirse).

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

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

    Se muestra el cuadro de diálogo Topic Subscription Result (Resultado de la suscripción a un tema). Haga clic en OK (Aceptar)
  • 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 New Orders (Nuevos pedidos) de la consola de Amazon SNS, haga clic en Publish message (Publicar mensaje).

    Haga clic en Publish Message (Publicar mensaje)

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

    1 x Widget @ $29.99 USD
    2 x Widget Cables @ $4.99
    (1 x dispositivo de 29,99 USD | 2 x cables para dispositivo de 4,99 USD)

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

    Haga clic en Publish Message
  • Una vez publicado el mensaje nuevo, Amazon SNS lo entregará a todos los puntos de conexión suscritos 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 de la cola), seleccione View/Delete Messages (Ver/eliminar mensajes).

    En la lista desplegable Queue Action (Acción de la cola), seleccione View/Delete Messages (Ver/eliminar mensajes)

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

    Haga clic en Start Polling for Messages (Comenzar el sondeo de mensajes)

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

    Aparecerá el cuadro de diálogo View/Delete Messages in Orders-for-Inventory (Ver/eliminar mensajes en Pedidos-para-Inventario)

    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.  

    Confirmó que la cola Orders-for-Inventory (Pedidos-para-Inventario) recibió la notificación del pedido nuevo proveniente del tema New-Orders (Nuevos-Pedidos).  

    Haga clic en Close (Cerrar).
     

    Haga clic en Close (Cerrar)

    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 los mensajes marcados). A continuación, haga clic en Close.

    Para confirmar la acción, haga clic en Yes, Delete Checked Messages (Sí, eliminar los mensajes marcados)

    f. Repita los pasos del 6a al 6e para confirmar que la cola Orders-for-Analytics también recibió la notificación del pedido nuevo.

    Repita los pasos del 6a al 6e para confirmar que la cola Orders-for-Analytics también recibió la notificación del pedido nuevo.
  • 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), en el panel de navegación izquierdo.

    Seleccione el tema New-Orders.

    Haga clic en Delete (Eliminar) para eliminar temas.

    Haga clic en Delete (Eliminar) para eliminar temas

    b. Aparecerá el cuadro de diálogo de confirmación Delete. Escriba delete me (eliminarme) en el cuadro de diálogo y haga clic en Delete. 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 debe eliminar las colas en la consola de SQS).

    Escriba “delete me” (eliminarme) en el cuadro de diálogo y haga clic en Delete

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

    En Queue Actions, seleccione Delete Queues (Eliminar colas)

    d. Se mostrará el cuadro de diálogo Delete Queues. 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.

     Haga clic en Yes, Delete 2 Queues (Sí, eliminar 2 colas)

¿Le resultó útil este tutorial?

¡Felicitaciones!

Envió notificaciones de distribución ramificada con Amazon SNS y Amazon SQS. Ya está todo 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 que los procesen otras aplicaciones más adelante.