Información general
En este tutorial, aprenderá a utilizar la función de filtrado de mensajes de Amazon Simple Notification Service (Amazon SNS). La función de filtrado de mensajes permite a los suscriptores a un tema de SNS recibir solo el subconjunto de mensajes del tema en el que está interesado.
En nuestro ejemplo, los usuarios visitan un sitio web para solicitar cotizaciones de seguros. Estas solicitudes de cotización pueden ser para seguros de vehículos (por ejemplo, para carros y barcos), seguros de vida u otros tipos de seguros (por ejemplo, para viviendas). Cuando un usuario solicita una cotización de seguro, la solicitud se reenvía a una serie de sistemas de backend: un sistema de ventas gestiona el seguro de vehículos para carros y barcos, otro sistema de ventas gestiona el seguro de vida y un sistema de análisis procesa todas las solicitudes de cotización.
Como aprendimos en el Tutorial para enviar notificaciones de eventos de distribución ramificada, usaremos un patrón de mensajería de distribución ramificada con Amazon SNS y Amazon Simple Queue Service (Amazon SQS) para desacoplar el sitio web de los sistemas backend. Para que las notificaciones de eventos lleguen al sistema backend correcto, podría crear un tema independiente para cada tipo de solicitud de cotización y, a continuación, agregar la lógica de redireccionamiento de mensajes a su editor. Sin embargo, esta opción puede resultar en editores demasiado complicados, una proliferación de temas y un aumento adicional de los gastos de aprovisionamiento y gestión de los temas de SNS. El filtrado de mensajes Amazon SNS es mucho más sencillo.
Utilizará Amazon SNS y Amazon SQS en este tutorial. Ambos servicios están incluidos en el nivel gratuito de AWS.
Experiencia en AWS
Tiempo de realización
30 minutos
Costo de finalización (con métricas gratuitas)
Gratis
Costo de finalización (con métricas avanzadas)
Requisitos
Una cuenta de AWS y un bucket de Amazon S3 poblado
Servicios utilizados
Última actualización
23 de agosto de 2022
Implementación
Paso 1: Crear un tema de SNS
El primer paso será crear un tema de Amazon SNS para publicar mensajes cada vez que se soliciten cotizaciones en un sitio web de seguros. Estos cables pueden estar relacionados con el seguro de carro, barco o vida.
a. Abra la Consola de administración de AWS en una nueva ventana del navegador para poder mantener abierta esta guía paso a paso. Cuando la pantalla se cargue, ingrese 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.
b. Si se muestra la página de inicio de la consola de SNS, haga clic en Comenzar con información general. Si no aparece esta página, continúe con el siguiente paso.
c. En el panel de navegación, elija Temas.
d. Seleccione el botón Crear tema.
e. En Tipo, seleccione Estándar. En el campo Nombre, escriba Insurance-Quote-Requests, desplácese hacia abajo y seleccione el botón Crear tema.
f. El nuevo tema aparece en la página Detalles del tema.
Paso 2: Crear las colas de Amazon SQS
a. Abra la consola de Amazon SQS en una ventana de navegador nueva. Si aparece la página de inicio de Amazon SQS, seleccione Crear cola. De lo contrario, continúe con el siguiente paso.
b. En la página Crear cola, deje la opción Estándar seleccionada en Tipo. Introduzca Vehicle-Insurance-Quotes en el campo Nombre y, a continuación, desplácese hacia abajo y seleccione el botón Crear cola.
c. La nueva cola aparece en la página de Detalles de la cola. Seleccione Colaspara volver a la página de inicio de Colas.
d. Pulse el botón Crear cola y repita los pasos 2b y 2c para crear dos colas adicionales con los siguientes nombres: Life-Insurance-Quotes y All-Quotes.
e. Las tres colas ahora figuran en la consola de Amazon SQS.
Paso 3: Suscribir las colas al tema
Ahora que ya creó las tres colas de Amazon SQS, debe suscribirlas al tema de SNS que transmite solicitudes de cotización de seguros nuevas.
a. En la lista de colas, seleccione la cola All-Quotes.
Elija Acciones y seleccione Suscribir al tema de Amazon SNS.
Si el tema de SNS se creó con otra cuenta, puede suscribirse a él con el campo ARN del tema. Para obtener más información, consulte la documentación de Amazon SNS o nuestro blog, Integración entre cuentas con Amazon SNS.
c. Elija Guardar.
d. La cola ahora está suscrita al tema de SNS. Seleccione Colas para volver a la página de Colas y repita los pasos a-c para las colas Life-Insurance-Quotes y Vehicle-Insurance-Quotes.
Paso 4: Establecer políticas de filtrado para las suscripciones a SNS
Las suscripciones que no cuentan con políticas de filtrado recibirán todos los mensajes publicados en el tema de SNS, por lo que no tendrá que establecer ninguna política de filtrado para la cola All-Quotes en este caso.
Haga clic en el tema Insurance-Quote-Requests en la lista.
b. Esto lo enviará a la página de detalles del tema Insurance-Quote-Requests en la que podrá ver todas las colas de SQS suscritas a este tema de SNS. Seleccione la cola Vehicle-Insurance-Quotes y luego seleccione Editar.
c. Esto lo llevará a la página Editar suscripción. Seleccione la flecha situada a la izquierda de la Política de filtrado de la suscripción y, a continuación, seleccione Habilitada para editar la política.
d. En el cuadro de diálogo que aparece, escriba el siguiente objeto JSON en el editor JSON:
{"insurance_type": ["car", "boat"]}
Elija Guardar cambios
e. Aparece un mensaje de confirmación que confirma que la política de filtrado de suscripciones se guardó correctamente. Haga clic en Insurance-Quote-Requests para volver a la página de Detalles del tema,
f. Ahora repetirá el proceso agregando la política de filtrado a la segunda cola. Seleccione la cola Life-Insurance-Quotes y haga clic en Editar.
g. Seleccione la flecha situada a la izquierda de la Política de filtrado de la suscripción y, a continuación, seleccione Habilitada para editar la política.
h. En el cuadro de diálogo que aparece, escriba el siguiente objeto JSON en el editor JSON
{"insurance_type": ["life"]}
No tendrá que establecer ninguna política de filtrado para la suscripción relacionada con la cola All-Quotes. Esta falta de política hará que la cola reciba todos los eventos que se publiquen sobre el tema.
Paso 5: Publicar mensajes en el tema
Probémoslo. En este paso, podrá simular nuevas solicitudes de cotización de seguros que lleguen de su sitio web de generación de clientes potenciales al publicar mensajes en el tema.
a. En la página del tema Insurance-Quote-Requests, haga clic en Publicar mensaje.
2017 Volvo S60, Montreal
En Atributos del mensaje:
- Seleccione Cadena en el campo Tipo.
- Escriba insurance_type en el campo Nombre.
- Escriba car en el campo Valor.
Haga clic en Publicar mensaje.
c. Volverá a la página del tema Insurance-Quote-Requests. Vuelva a elegir Publicar mensaje.
d. Cree un segundo mensaje con los valores siguientes:
En Atributos del mensaje:
- Seleccione Cadena en el campo Tipo.
- Escriba insurance_type en el campo Nombre.
- Escriba life en el campo Valor.
Haga clic en Publicar mensaje.
e. Volverá a la página del tema Insurance-Quote-Requests. Vuelva a elegir Publicar mensaje.
Casa adosada, 140 000 metros cuadrados, Toronto
En Atributos del mensaje:
- Seleccione Cadena en el campo Tipo.
- Escriba insurance_type en el campo Nombre.
- Escriba home en el campo Valor.
Haga clic en Publicar mensaje.
Paso 6: Comprobar las entregas de mensajes
Es momento de verificar que cada tipo de solicitud de cotización de seguro se haya redireccionado a la cola de mensajes de SQS correspondiente, al inspeccionar las entregas de mensajes que tuvieron lugar.
a. Vuelva a la consola de Amazon SQS. Seleccione la cola de Vehicle-Insurance-Quotes y elija Enviar y recibir mensajes.
b. Seleccione Sondeo para mensajes.
c. Tenga en cuenta que solo un mensaje se introdujo en esta cola, relacionado con esa cotización de seguro de carro (Insurance Quote Request #1). Una vez finalizado el proceso de sondeo, seleccione el mensaje enviado a la cola al elegir el mensaje en Mensajes.
d. Vea el mensaje y, a continuación, seleccione Listo para cerrar el cuadro de diálogo.
e. Repita el proceso de la segunda cola. Seleccione la cola de Life-Insurance-Quotes y elija Enviar y recibir mensajes.
f. Seleccione Sondeo para mensajes.
g. Tenga en cuenta que solo un mensaje se introdujo en esta cola, relacionado con esa cotización de seguro de carro (Insurance Quote Request #2). Una vez finalizado el proceso de sondeo, seleccione el mensaje enviado a la cola al elegir el mensaje en Mensajes.
h. Vea el mensaje y, a continuación, seleccione Listo para cerrar el cuadro de diálogo.
i. Por último, seleccione la cola All-Quotes y elija Enviar y recibir mensajes.
j. Seleccione Sondeo para mensajes.
k. Vea que los tres mensajes se han enviado a esta cola (Insurance Quote Requests #1, #2, y #3).
Paso 7: Eliminar los recursos
En este paso, eliminará los recursos que creó para el tutorial, que incluyen un tema, las suscripciones y las colas. Una práctica recomendada consiste en eliminar los recursos que ya no utiliza para evitar cargos adicionales.
a. En el panel de navegación de la consola de Amazon SNS, seleccione Temas y, a continuación, elija el enlace al tema Insurance-Quote-Requests.
b. En la página de detalles del tema Insurance-Quote-Requests, seleccione cada una de las suscripciones y haga clic en Eliminar.
c. Haga clic en Eliminar en el cuadro de diálogo para confirmar la eliminación.
d. En la página de detalles del tema Insurance-Quote-Requests, haga clic en Eliminar.
e. Confirme la eliminación escribiendo eliminarme en el cuadro de diálogo y, a continuación, seleccione Eliminar.
f. Vuelva a la consola de Amazon SQS. Seleccione cada una de las colas utilizadas en este tutorial y elija Eliminar.
g. Confirme la eliminación introduciendo "eliminar" en el cuadro de diálogo y, a continuación, seleccione Eliminar.
Conclusión
Ahora puede utilizar el filtrado de mensajes de Amazon SNS para crear arquitecturas de publicación o suscripción más sencillas y optimizadas.
El filtrado de mensajes permite a los suscriptores de temas de Amazon SNS recibir de manera selectiva solo un subconjunto de mensajes de su interés, en lugar de recibir todos los mensajes publicados en un tema. Esto le permite descargar la lógica de filtrado de mensajes de sus suscriptores y la lógica de enrutamiento de mensajes de los sistemas de sus editores.