8. Pasar eventos con colas síncronas y asíncronas
En la clase de hoy vamos a aprender cómo pasar eventos con colas síncronas y asíncronas gracias al componente VM Connector.
Se utilizará el componente para poder gestionar las peticiones en cualquiera de estas modalidades y nos servirá para sustituir, en alguno de los casos, el Flow Reference e incluso el HTTP Request.
Eventos síncronos
Cuando se utiliza el componente Flow Reference, los eventos se pasan de forma síncrona entre Flows. Esto quiere decir que al realizar la llamada de un Flow a otro, el primero espera a que el segundo finalice para mostrar un resultado.
Se ejecutan de forma consecutiva en el tiempo.
Eventos asíncronos
En cambio, si el evento es asíncrono, el Flow 1 no esperará al Flow 2 para finalizar su proceso. Visto de una forma simple podéis pensar que no tiene sentido llamar a un Flow y no esperar su respuesta.
En el caso de aplicaciones de Mule sencillas, como las que hemos estado haciendo hasta ahora, no se suele utilizar eventos asíncronos, ya que siempre esperamos el resultado de una llamada a un Flow, porque dependemos de él para poder continuar.
Imaginad que queréis realizar un POST, pero no queréis que el programa se pare esperando a que se acabe de realizar esta inserción de datos. Se creará un segundo Flow que realice el POST y se continuará con el resto de tareas en el Flow principal.
Ventajas de un evento asíncrono
Vamos a enumerar las principales ventajas de un evento asíncrono.
- Conseguir mejores niveles de paralelismo en las tareas de un evento.
- Permitir optimizar el rendimiento de la arquitectura de los Flows.
- Distribuir en un clúster la carga de trabajo.
- Comunicarse con Mule Applications del mismo dominio (en la clase explico qué es).
Los VM Connectors
Para poder gestionar eventos asíncronos necesitamos que entre en juego un nuevo componente.
De hecho no es un componente, es un grupo de componentes, o mejor dicho, un módulo. Este módulo se compone de los siguientes componentes que nos permitirán gestionar una cola de eventos.
- Publish: Sirve para publicar los datos en la cola del evento.
- Consume: Obtener los datos de la cola del evento. Tiene definido un tiempo de espera de respuesta del Flow al que ha enviado la petición. Se podría decir que es síncrono porque estamos esperando a su respuesta, pero si pasa el tiempo sigue el evento con otras tareas, convirtiéndolo así en asíncrono.
- Listener: Escuchará la cola y obtendrá los eventos que se publiquen en ella.
- Publish Consume: Publicará un mensaje en la cola de eventos y esperará a que el Listener lo obtenga y consuma el evento para procesarlo. Hasta que no se procese el evento de la cola el Flow no continuará con las siguientes tareas, convirtiendo así a la cola en síncrona.
Sin más, pasar eventos con colas síncronas y asíncronas ¡dentro vídeo!
Clases del curso
- 1. Consumir un servicio web de Anypoint Exchange (27:38)
- 2. Consumir un servicio web REST (24:20)
- 3. Consumir un servicio web SOAP (23:51)
- 4. Crear un modelo de datos canónico en JAVA | Parte 1 (14:19)
- 5. Crear un modelo de datos canónico en JAVA | Parte 2 (11:39)
- 6. Crear un modelo de datos canónico en JAVA | Parte 3 (12:20)
- Punto de Control 1
- 7. Diferencia entre Flow, SubFlow y Private Flow (17:27)
- 8. Pasar eventos con colas síncronas y asíncronas (19:30)
- 9. Estructurar elementos globales (9:19)
- 10. Definir propiedades globales (11:28)
- 11. Estructurar un proyecto Mule | Parte 1 (16:44)
- 12. Estructurar un proyecto Mule | Parte 2 (15:56)
- Punto de Control 2