9. Describiendo procesamiento de eventos asíncronos


Explorar la comunicación asíncrona en Mulesoft abre un mundo de posibilidades. Ya estás familiarizado con lo que significa «asíncrono», pero recapitulemos brevemente: en una comunicación asíncrona, los resultados no se entregan en el mismo hilo de ejecución, lo que permite que tus flujos de Mule continúen sin tener que esperar por una respuesta.

 

Observa estas dos imágenes para entender la diferencia. La primera muestra un evento de Mule ejecutándose de forma asíncrona, mientras que la segunda lo hace de manera síncrona.

Evento Asíncrono Mulesoft
Evento Síncrono Mulesoft

 

Modelos de Procesamiento Asíncronos en Mulesoft

En Mulesoft, tienes múltiples opciones para implementar un comportamiento asíncrono.

 

Async Scope

Imagina que estás construyendo un flujo en Mulesoft que incluye consultar una base de datos, llamar a un servicio web y escribir en un archivo de log. Con Async Scope, puedes ejecutar estas acciones en paralelo, mejorando la eficiencia. Por ejemplo, mientras el flujo principal consulta la base de datos, un proceso paralelo podría estar llamando al servicio web.

Async Scope en Mulesoft

Este método no solo acelera el proceso sino que también te permite manejar los errores de forma más efectiva con la combinación de Async Scope, Try Scope y un Error Handler.

Manejo de Errores en Async Scope

Protocolo de Mensajería JMS

Cuando tienes que comunicarte de manera asíncrona siempre es necesaria una memoria, en este caso, uno de los mecanismos más comunes es un Broker de mensajería. Parecido a la vida real, cuando quieres comunicarte con alguien de forma asíncrona (enviar un correo) es necesario un tercero que almacene nuestro mensaje (gmail).

En el caso de Mulesoft para comunicar dos componentes de forma asíncrona es necesario almacenar el mensaje temporalmente, para ello, existe un estándar o protocolo llamado JMS «Java Messaging Service».

¿Qué es JMS?

  • Intermediario (Message Broker): JMS utiliza un intermediario para gestionar los mensajes entre productores y consumidores.
  • Almacenamiento y Reenvío: Los mensajes se almacenan temporalmente en el broker, garantizando que no se pierdan.
  • Tipos de Intercambio de Mensajes:
    • Publicar y Suscribir: Un modelo de comunicación uno-a-muchos, similar a una emisora de radio.
    • Punto a Punto: Comunicación directa entre un productor y un consumidor, como el envío de una carta.

Modelos de Mensajería JMS

ActiveMQ

ActiveMQ es una implementación de código abierto que utiliza JMS para facilitar la comunicación asíncrona entre aplicaciones. Veamos cómo se aplica en Mulesoft:

  1. API de Origen Envía Mensaje: La primera API crea un mensaje y lo envía al broker de ActiveMQ utilizando el protocolo JMS (Java Message Service).
  2. ActiveMQ Maneja el Mensaje: El broker de ActiveMQ, que opera con el protocolo JMS, recibe y almacena el mensaje, esperando a que la API de destino esté lista para recibirlo.
  3. API de Destino Recibe el Mensaje: La segunda API, conectada al broker de ActiveMQ mediante JMS, recibe el mensaje cuando está lista para procesarlo.

Ejemplo de ActiveMQ y JMS en Mulesoft

Productos de Mensajería Diversos

Como arquitecto Mulesoft, te encontrarás con diferentes productos de mensajería. Aquí te presentamos algunos de ellos, cada uno con sus propias características y operaciones principales:

AWS SQS (Amazon Simple Queue Service):

  • Servicio: Colas de mensajes en la nube ofrecido por Amazon Web Services.
  • Protocolo: Basado en HTTP/S.
  • Características: Ideal para la desacoplación de componentes de aplicaciones en la nube.
  • Conector Mulesoft: Amazon SQS.
  • Operaciones Principales:
    • send message: Enviar mensajes a una cola SQS.
    • receive message: Recibir mensajes de una cola SQS.
    • delete message: Eliminar mensajes de la cola después de procesarlos.
    • change message visibility: Cambiar la visibilidad de un mensaje en la cola.

Anypoint MQ (MuleSoft):

  • Servicio: Servicio de mensajería en la nube completamente gestionado por MuleSoft.
  • Protocolo: Utiliza APIs RESTful para la interacción.
  • Características: Se integra con herramientas de Anypoint Platform.
  • Conector Mulesoft: Anypoint MQ.
  • Operaciones Principales:
    • consume: Recibir mensajes de una cola o tópico.
    • subscriber: Suscribirse a un tópico para recibir mensajes.
    • publish: Enviar mensajes a una cola o tópico.
    • ack: Confirmar la recepción de un mensaje.
    • nack: Indicar que un mensaje no fue procesado correctamente.

VM (Mulesoft):

  • Servicio: Mule VM Queues (Virtual Machine Queues).
  • Protocolo: Interno, basado en la JVM.
  • Características: Proporciona una manera ligera y rápida de enviar mensajes entre flujos dentro de la misma aplicación Mule. Ideal para el procesamiento asíncrono de mensajes.
  • Conector Mulesoft: VM connector.
  • Operaciones Principales:
    • publish: Enviar mensajes a una cola VM. Puede ser utilizado para enviar datos entre flujos de manera asíncrona.
    • consume: Recibir mensajes de una cola VM. Permite a los flujos procesar mensajes encolados.
    • listener: Escuchar de forma continua los mensajes en una cola VM. Actúa como un receptor de mensajes, iniciando un flujo cuando llega un nuevo mensaje.
    • publish consume: Publicar un mensaje y consumir la respuesta de forma síncrona.

RabbitMQ:

  • Servicio: Broker de mensajes open source que soporta múltiples protocolos de mensajería.
  • Protocolo Principal: AMQP.
  • Características: Alta disponibilidad y facilidad de uso en diferentes entornos.
  • Conector Mulesoft: AMQP.
  • Operaciones Principales:
    • ack: Confirmar la recepción de un mensaje.
    • consume: Recibir mensajes de una cola.
    • listener: Escuchar de forma continua los mensajes de una cola.
    • publish: Enviar mensajes a una cola.
    • publish consume: Combinación de publicar y luego consumir mensajes.

JMS (Java Message Service):

  • Especificación: API para mensajería en aplicaciones Java.
  • Protocolo: Específico de JMS.
  • Características: Ampliamente utilizado en sistemas empresariales basados en Java.
  • Conector Mulesoft: JMS.
  • Operaciones Principales:
    • ack: Confirmar la recepción de un mensaje.
    • consume: Recibir mensajes.
    • on new message: Actuar cuando se recibe un nuevo mensaje.
    • publish: Enviar mensajes.
    • publish consume: Publicar un mensaje y consumir la respuesta de forma síncrona.

Kafka (Apache Kafka):

  • Servicio: Plataforma de streaming de eventos distribuida.
  • Protocolo: Basado en TCP.
  • Características: Manejo eficiente de grandes volúmenes de datos en tiempo real.
  • Conector Mulesoft: Apache Kafka.
  • Operaciones Principales:
    • publish: Enviar mensajes a un tópico de Kafka.
    • consume: Recibir mensajes de un tópico de Kafka.
    • message listener: Escuchar de forma continua los mensajes de un tópico.
    • seek: Ajustar el punto de lectura en un tópico.
    • commit: Confirmar el procesamiento de un conjunto de mensajes.

 

Conclusión

En conclusión, el procesamiento de eventos asíncronos en Mulesoft te ofrece un amplio abanico de posibilidades. Desde Async Scope hasta protocolos como JMS y herramientas como ActiveMQ, tienes todo lo necesario para mejorar la eficiencia, manejar los errores de forma efectiva y asegurar una comunicación fluida y controlada en tus aplicaciones. ¡Sácale el máximo partido a estas herramientas para convertirte en un experto arquitecto Mulesoft!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *