MuleSoft - Procesador de mensajes y componentes de script
Los módulos de secuencias de comandos facilitan a los usuarios utilizar el lenguaje de secuencias de comandos en Mule. En palabras simples, el módulo de secuencias de comandos puede intercambiar lógica personalizada escrita en lenguaje de secuencias de comandos. Los scripts se pueden utilizar como implementaciones o transformadores. Se pueden utilizar para la evaluación de expresiones, es decir, para controlar el enrutamiento de mensajes.
Mule tiene los siguientes lenguajes de secuencias de comandos compatibles:
- Groovy
- Python
- JavaScript
- Ruby
¿Cómo instalar módulos de secuencias de comandos?
En realidad, Anypoint Studio viene con los módulos de secuencias de comandos. Si no encuentra el módulo en Mule Palette, puede agregarlo usando+Add Module. Después de agregar, podemos usar las operaciones del módulo de secuencias de comandos en nuestra aplicación Mule.
Ejemplo de implementación
Como se discutió, necesitamos arrastrar y soltar el módulo en el lienzo para crear un espacio de trabajo y usarlo en nuestra aplicación. A continuación se muestra un ejemplo de ello:
Ya sabemos cómo configurar el componente HTTP Listener; por lo tanto, vamos a discutir sobre la configuración de los módulos de secuencias de comandos. Necesitamos seguir los pasos que se describen a continuación para configurar el módulo de secuencias de comandos:
Step 1
Busque el módulo Scripting de Mule Palette y arrastre el EXECUTE operación del módulo de secuencias de comandos en su flujo como se muestra arriba.
Step 2
Ahora, abra la pestaña Ejecutar configuración haciendo doble clic en la misma.
Step 3
Bajo la General pestaña, debemos proporcionar el código en la Code text window como se muestra a continuación -
Step 4
Por fin, tenemos que elegir el Enginedesde el componente de ejecución. La lista de motores es la siguiente:
- Groovy
- Nashorn(javaScript)
- jython(Python)
- jRuby(Ruby)
El XML del ejemplo de ejecución anterior en el editor XML de configuración es el siguiente:
<scripting:execute engine="jython" doc:name = "Script">
<scripting:code>
def factorial(n):
if n == 0: return 1
return n * factorial(n-1)
result = factorial(10)
</scripting:code>
</scripting:execute>
Fuentes de mensajes
Mule 4 tiene un modelo simplificado que el mensaje Mule 3, lo que facilita el trabajo con datos de forma coherente en todos los conectores sin sobrescribir la información. En el modelo de mensaje de Mule 4, cada evento de Mule consta de dos cosas:a message and variables associated with it.
Un mensaje de Mule tiene carga útil y sus atributos, donde el atributo es principalmente metadatos como el tamaño del archivo.
Y una variable contiene la información arbitraria del usuario, como el resultado de la operación, los valores auxiliares, etc.
Entrante
Las propiedades entrantes en Mule 3 ahora se convierten en Atributos en Mule 4. Como sabemos, las propiedades entrantes almacenan información adicional sobre la carga útil obtenida a través de una fuente de mensaje, pero esto ahora, en Mule 4, se hace con la ayuda de atributos. Los atributos tienen las siguientes ventajas:
Con la ayuda de los atributos, podemos ver fácilmente qué datos están disponibles, porque los atributos están fuertemente tipados.
Podemos acceder fácilmente a la información contenida en los atributos.
A continuación se muestra el ejemplo de un mensaje típico en Mule 4:
Saliente
Los conectores y transportes de Mule deben especificar explícitamente las propiedades de salida en Mule 3 para enviar datos adicionales. Pero en Mule 4, cada uno de ellos se puede configurar por separado, usando una expresión DataWeave para cada uno de ellos. No produce ningún efecto secundario en el flujo principal.
Por ejemplo, la siguiente expresión DataWeave realizará una solicitud HTTP y generará encabezados y parámetros de consulta sin necesidad de establecer las propiedades del mensaje. Esto se muestra en el siguiente código:
<http:request path = "M_issue" config-ref="http" method = "GET">
<http:headers>#[{'path':'input/issues-list.json'}]</http:headers>
<http:query-params>#[{'provider':'memory-provider'}]</http:query-params>
</http:request>
Procesador de mensajes
Una vez que Mule recibe un mensaje de una fuente de mensajes, comienza el trabajo del procesador de mensajes. The Mule utiliza uno o más procesadores de mensajes para procesar el mensaje a través de un flujo. La tarea principal del procesador de mensajes es transformar, filtrar, enriquecer y procesar el mensaje a medida que pasa por el flujo de Mule.
Categorización del procesador Mule
Las siguientes son las categorías de Procesador Mule, basadas en funciones:
Connectors- Estos procesadores de mensajes envían y reciben datos. También conectan datos a fuentes de datos externas a través de protocolos estándar o API de terceros.
Components - Estos procesadores de mensajes son de naturaleza flexible y ejecutan lógica empresarial implementada en varios lenguajes como Java, JavaScript, Groovy, Python o Ruby.
Filters - Filtran los mensajes y permiten que solo se sigan procesando mensajes específicos en un flujo, en función de criterios específicos.
Routers - Este procesador de mensajes se utiliza para controlar el flujo de mensajes a enrutar, resecuenciar o dividir.
Scopes - Básicamente, envuelven fragmentos de código con el fin de definir un comportamiento detallado dentro de un flujo.
Transformers - La función de los transformadores es convertir el tipo de carga útil del mensaje y el formato de datos para facilitar la comunicación entre sistemas.
Business Events - Básicamente capturan datos asociados con indicadores clave de desempeño.
Exception strategies - Estos procesadores de mensajes manejan errores de cualquier tipo que ocurren durante el procesamiento de mensajes.