Articulo de referencia

Mensajería basada en eventos

La mensajería basada en eventos es un patrón de diseño que permite a los consumidores de servicios, interesados ​​en eventos que ocurren dentro del entorno de un proveedor de se...

La mensajería basada en eventos es un patrón de diseño que permite a los consumidores de servicios, interesados ​​en eventos que ocurren dentro del entorno de un proveedor de servicios, recibir notificaciones sobre estos eventos a medida que ocurren, sin recurrir al mecanismo tradicional e ineficiente basado en sondeo . [ 1 ]

Es importante diferenciar entre servicios basados ​​en eventos y servicios basados ​​en mensajes ( también conocidos como servicios basados ​​en colas) : Los servicios basados ​​en eventos (por ejemplo, AWS SNS ) están desacoplados de sus consumidores. Mientras que los servicios basados ​​en colas/mensajes (por ejemplo, AWS SQS ) están acoplados a sus consumidores. [ 2 ]

Razón fundamental

La interacción entre un consumidor y un proveedor de servicios normalmente la inicia el consumidor, ya que necesita responder a un evento que ocurre dentro de su propio entorno, por ejemplo, requerir datos de un recurso externo (es decir, el proveedor de servicios) para realizar un cálculo cuyos resultados deben transmitirse a una interfaz de usuario en respuesta a una acción realizada por el usuario. [ 3 ] Sin embargo, hay situaciones en las que el consumidor de servicios necesita esperar a que ocurra un evento dentro del propio entorno del proveedor de servicios. En estas circunstancias, el consumidor de servicios necesita ser informado del evento en el momento en que ocurre. Una forma es programar al consumidor de servicios para que consulte al proveedor de servicios a intervalos regulares para comprobar si el evento ha ocurrido o no. Este enfoque no solo manifiesta ineficiencia, sino también imprevisibilidad en el comportamiento. Ineficiencia porque el consumidor y el proveedor de servicios participan en interacciones improductivas e imprevisibilidad porque podría ocurrir el evento más de una vez antes de que el consumidor de servicios pueda consultar al proveedor de servicios, perdiendo así los eventos anteriores y sus datos relacionados. Además de estos problemas, esta técnica también introduce latencia, ya que el intervalo con el que el consumidor del servicio realiza el sondeo es fijo y, por lo tanto, solo recupera los datos del evento en ese momento y no cuando realmente ocurrió. Esta situación se agrava aún más si varios consumidores del servicio dependen de un proveedor específico.

Para abordar este problema, el patrón de diseño de mensajería basada en eventos sugiere un mecanismo de comunicación publicador-suscriptor que garantiza la notificación oportuna de datos relacionados con eventos al consumidor del servicio, [ 4 ] eliminando así las ineficiencias vinculadas con el mecanismo de comunicación tradicional basado en sondeo.

Uso

Diagrama A
Diagrama A Para averiguar si ha ocurrido o no un evento en particular, el consumidor del servicio consulta al proveedor del servicio a intervalos regulares, lo que da como resultado interacciones de servicio ineficientes.
Diagrama B
Diagrama B El gestor de eventos notifica automáticamente a todos los consumidores de servicios interesados ​​sobre la ocurrencia de un evento en particular en el momento en que realmente sucede.

La aplicación del patrón de diseño de mensajería orientada a eventos requiere un gestor de eventos con quien el proveedor de servicios registra sus eventos. Los consumidores del servicio registran entonces su interés en algunos o todos los eventos anunciados. Cuando ocurre un evento, el proveedor de servicios informa al gestor de eventos, quien notifica instantáneamente a todos los consumidores registrados. [ 5 ] Este mecanismo de comunicación comparte sus raíces con el patrón Observador , aplicado tradicionalmente en el mundo orientado a objetos . [ 5 ] Este patrón de diseño también toma prestados algunos conceptos de la Arquitectura Orientada a Eventos , ya que la razón fundamental detrás de este patrón de diseño es la respuesta a eventos. [ 6 ]

La implementación real de un mecanismo de comunicación basado en publicador-suscriptor requiere extensiones arquitectónicas para proporcionar un mecanismo tan complejo de seguimiento y reenvío de mensajes. Un producto ESB maduro debería ofrecer esta funcionalidad. La aplicación de este patrón contribuye a desacoplar aún más [ 7 ] a los consumidores de servicios de los proveedores de servicios y aumenta la fiabilidad general de la composición del servicio.

Referencias

  1. Wajid Khattak, Vijay Narayanan. Mensajería basada en eventos [En línea]. Fecha de acceso: 27 de abril de 2010.
  2. Diseño orientado al dominio con Java: una guía práctica . 2022. ISBN 9781800564763.
  3. "Guía completa para la validación de sistemas informáticos (CSV): ¿Qué es y por qué la necesitamos?" . Grupo QbD . Consultado el 23 de mayo de 2023 .
  4. Mauro. et al. Integración de dispositivos orientada a servicios: un análisis de patrones de diseño SOA. Archivado el 3 de febrero de 2011 en Wayback Machine [en línea], pp. 1–10, 43.ª Conferencia Internacional de Hawái sobre Ciencias de Sistemas, 2010. Fecha de acceso: 4 de abril de 2010.
  5. 1 2 Mauro et al. Servicios de dispositivos estandarizados: un patrón de diseño para la integración orientada a servicios de dispositivos médicos [En línea]. Fecha de acceso: 4 de abril de 2010.
  6. Thomas Erl . Introducción a los patrones de diseño SOA. Archivado el 13 de septiembre de 2010 en Wayback Machine [En línea]. Fecha de acceso: 4 de abril de 2010.
  7. Tipos de acoplamiento
  • Erl et al., (2009). Patrones de diseño SOA . Prentice Hall. ISBN 0-13-613516-1.
  • Michael Stal. Uso de patrones arquitectónicos y planos para la arquitectura orientada a servicios [En línea]. Fecha de acceso: 1 de mayo de 2010.
  • Patrones SOA