Primeros Pasos con Mule ESB
Índice de contenidos.
- 1. Introducción
- 2. Entorno
- 3. Principales características
- 4. Arquitectura
- 5. Instalación
- 6. Ejemplo de uso
- 7. Conclusiones
1. Introducción
En este tutorial vamos a ver una introducción a la tecnología Mule que es un ESB (Enterprise Service Bus) ligero que permite la integración de aplicaciones de forma rápida y sencilla independientemente de las tecnologías de las mismas utilizando diferentes protocolos de transporte y dirigido por eventos.
Mule ESB se basa en el concepto de arquitectura orientada a servicios (SOA) lo que permite crear aplicaciones mediante la creación de servicios que serán consumidos por el resto de aplicaciones.
2. Entorno
- MacBook Pro 15′ (2.4 GHz Intel Core i5, 4GB DDR3 SDRAM).
- Sistema Operativo: Mac OS X Snow Leopard 10.6.8
- JDK 1.6.0_29
- Mule 3.2.0
3. Principales características
Las principales características de Mule ESB son:
- Es opensource.
- Ligero y altamente escalable lo que le permite conectar diferentes aplicaciones en el tiempo.
- Creación y alojamiento de servicios: Se exponen diferentes servicios para ser consumidos por otras aplicaciones de forma que puedan ser reutilizables.
- Mediación y enrutamiento de servicios: Protección en el formato de los mensajes separándolos de la lógica de negocio. Enrutamiento de los mensajes basados en reglas.
- Los componentes de Mule pueden ser de cualquier tipo, un simple POJO, un servicio REST o cualquier objeto complejo. Además los componentes Mule no requieren de ningún código adicional ni extender ninguna clase de la API de Mule. La mensajería está separada de la lógica de negocio.
- Se puede implementar Mule en múltiples topologías, no sólo ESB.
- Admite múltitud de formatos de mensajes: SOAP, REST…
- Permite comunicación síncrona y asíncrona.
- Registro de auditoría y monitorización de la aplicación.
- Diferentes proveedores para la autenticación y autorización: Spring Security, JAAS, LDAP, CAS, etc.
- Compatible en múltiples sistemas operativos: Linux, Solaris, AIX, Windows, Mac OS X, etc.
- Compatible en múltipes servidores: Tomcat, JBoss, WebSphere, WebLogic, Geronimo, etc.
- Compatible en múltiples bases de datos: Oracle, MySQL, DB2, SQL Server, Derby.
- Integrado con Maven y Ant.
- Fácilmente integrable con otros servicios: Facebook, Twitter, Amazon, Paypal, etc.
- Se pueden utilizar dos contenedores: Spring, EJB3.
- Soporta diferentes lenguajes de programación: Java, Groovy, Javascript, JRuby, etc.
- Dispone de un plugin para Eclipse que facilita el uso y creación de componentes de Mule.
- Soporta la mayoría de los patrones de integración de aplicaciones empresariales propuestos por Gregor Hohpe y Bobby Woolf en su libro Enterprise Integration Patterns.
- Según su página web oficial 3200 empresas ya lo utilizan.
4. Arquitectura
Con Mule ESB podemos integrar nuestros procesos de negocio de forma transparente entre ellos lo que conseguimos tenerlos completamente desacoplados. Esta conectividad se realiza a través de un bus de integración.
Este bus actúa como mediador entre diferentes servicios de negocio y se encarga de conectarlos entre sí mediante mensajes de comunicación estándares. La ventaja de un bus es que únicamente tenemos que definir la manera de intregar un servicio con el bus por lo que nos abstraemos de la configuración del resto de servicios.
La forma de configurar Mule se realiza mediante un único fichero llamado mule-config.xml. Este fichero es muy parecido a la forma de configurar Spring ya que Mule está montado sobre Spring.
Los principales módulos de Mule son:
- Componentes: Cualquier objeto, POJO, servicio REST, EJBs, Bean de Spring, etc. Son los que contienen la lógica de negocio.
- Inbound routers: Se encarga de controlar el mensaje recibido para direccionarlo a un servicio.
- Outbound routers: Se encarga de redirigir la salida hacia otro servicio. Se puede utilizar como balanceador de carga o enrutamiento basado en reglas.
- Endpoints: Utilizados para conectar componentes con otros sistemas externos.
- Transformadores: Se encargan de transformar los datos de formato para redirigirlo a la entrada de un componente.
- Transporte: Se encargan de manejar la forma de conectarnos entre diferentes tecnologías utilizando diferentes protocolos de transporte: HTTP, JMS, FTP, etc.
5. Instalación
La instalación de Mule es muy sencilla. Accedemos a la página de descarga y una vez descargado descomprimimos el zip en un directorio. No instarlo en un directorio que contenga espacios.
Los usuarios de Eclipse disponemos de un plugin para Mule que nos ayudará a la hora de probar la aplicación ya que se integra con el servidor stand-alone de Mule de manera que podremos desplegar la aplicación y podremos arrancarla y pararla de forma sencilla.
Para instalarlo, desde Eclipse vamos al menú Help -> Install New Software -> Add. Añadimos la URL http://dist.muleforge.org/mule-ide/updates-2.1.x/ y seguimos con el proceso de instalación típico.
Una vez instalado debemos indicarle al plugin la localización en nuestra máquina del Mule que nos descargamos en el paso anterior. Para ello vamos a Window -> Preferences -> Mule -> Add y añadimos la ruta al Mule.
6. Ejemplo de uso
Para ver un ejemplo de utilización de Mule vamos a hacer el clásico Hola Mundo. Nos crearemos un nuevo proyecto desde Eclipse mediante la opción de New Proyect -> Mule.
A continuación nos creamos una carpeta llamada conf en el proyecto. Utilizaremos el plugin de Mule del Eclipse para generar el fichero mule-config.xml que contendrá toda la configuración de Mule. Para ello pinchamos con botón derecho en la carpeta conf -> New -> Other -> Mule -> Mule Configuration y nos aparecerá la siguiente pantalla:
Viendo esta pantalla con las distintas tecnologías y protocolos de comunicación se puede ver la amplitud de esta tecnología. En nuestro caso para empezar vamos a elegir la opción JSF-223 Scripting. Mediante esta opción de configuración utilizaremos Groovy como motor de generación dinámica de código. Esta opción nos generará el fichero mule-config.xml con las cabeceras pero vacío, tendremos que añadir a mano el contenido.
<?xml version="1.0" encoding="UTF-8"?> <mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pattern="http://www.mulesoft.org/schema/mule/pattern" xmlns:script="http://www.mulesoft.org/schema/mule/scripting" xsi:schemaLocation=" http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/3.2/mule-scripting.xsd http://www.mulesoft.org/schema/mule/pattern http://www.mulesoft.org/schema/mule/pattern/3.2/mule-pattern.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/3.2/mule.xsd"> <pattern:simple-service name="holamundo" address="http://localhost:8080/holamundo"> <script:component> <script:script engine="groovy"> <script:text>return "Hola Mundo"</script:text> </script:script> </script:component> </pattern:simple-service> </mule>
En el fichero mule-config.xml hemos declarado un servicio que escucha las peticiones en la dirección http://localhost:8080/holamundo. Esta petición será redirigida a un componente que puede ser un simple POJO o cualquier clase de negocio. En este caso será un componente Groovy generado dinámicamente que se encargará de devolver el texto «Hola Mundo».
Para probarlo arrancamos la aplicación desde Eclipse seleccionando el fichero mule-config.xml y con botón derecho Run As -> Mule Service. Esto arrancará Mule como servidor stand alone desplegando nuestro ejemplo en el contenedor de aplicaciones.
Para probarlo abrimos un navegador y metemos la URL http://localhost:8080/holamundo, la página que nos abrirá contendrá el texto «Hola Mundo» generado por el componente de Groovy que configuramos anteriormente como respuesta a nuestra petición.
7.Conclusiones
Cuando surge la necesidad de integrar procesos de negocio en las organizaciones debemos encontrar una solución y la utilización de un ESB es una de las mejores.
Mule ESB permite desacoplar sistemas permitiendo la comunicación entre las mismas utilizando estándares de comunicación a través de mensajes. Su amplia aceptación, el soporte que ofrecen y la integración con otros productos opensource la convierten en una tecnología a tener muy en cuenta.
Espero que te haya servido de ayuda.
Un saludo. Juan.
Sinceramente no se si aun continuas manteniendo esta pagina pero das una buena explicacion basica de lo que es mule.
Yo no lo conocia y ahora por mi trabajo es que me toca aprender un poco de ella, muchas gracias!
Raul