Integración

WSO2 ESB Tutorial: Manejo de errores y el contenedor Docker

¡Bienvenido a un nuevo post de la sección WSO2 ESB!

Introducción

En esta ocasión vamos a desplegar los ejemplos usando un contenedor: Docker. 

Éste es uno de los más extendidos y usados por WSO2 en sus servidores. Una manera de trabajar mucho más elegante y limpia, a diferencia de instalarlo todo en el entorno local.

Además con esta herramienta, podemos virtualizar redes donde poder desplegar distintos contenedores de WSO2.

La idea es descargar de WSO2 un contenedor con el Enterprise Integrator (ESB incluido). Para ello antes de nada debemos  instalar Docker Common Edition. Es este ejemplo utilizaremos Ubuntu como plataforma para la instalación.

En cuanto a la configuración del ESB incluido dentro del EI vamos a aprender cómo manejar errores con secuencias definidas en el atributo onError de una secuencia, donde el cliente envía un mensaje al backend a través del ESB (dentro del EI). Se prueban tres casos de uso: cuando la mediación tiene éxito, cuando no lo tiene y no se maneja o gestiona el error, y cuando se gestiona el fallo del mensaje.

Instalación de Docker CE en Ubuntu

Instalar Docker a través del repositorio

Antes de instalar Docker CE por primera vez en una nueva máquina host, deberás configurar el repositorio de Docker. Después, ya podrás  instalar y actualizar Docker desde el repositorio.

  • CONFIGURAR EL REPOSITORIO

1.Actualiza el índice del paquete apt:

2. Instala paquetes para permitir que apt use un repositorio sobre HTTPS:

3. Agrega la llave GPG oficial de Docker:

4. Verifica que tengas la clave con la huella digital 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88, buscando los últimos 8 caracteres de la huella digital:

MICROSERVICES

5. Utiliza el siguiente comando para configurar el repositorio estable. Siempre lo necesitarás , incluso si deseas instalar compilaciones desde el edge o los repositorios de test también. Para agregar el edge o el repositorio de test, agrega la palabra edge o test (o ambas) después de la palabra stable en los comandos a continuación.

WSO2

  • INSTALAR DOCKER CE

  1. Actualiza el índice del paquete apt.

Docker CE paquete APT

  1. Instala la última versión de Docker CE.

DOCKER CE INSTALLED

     3. Verifica que Docker CE esté instalado correctamente ejecutando la imagen de hello-world.

Este comando descarga una imagen de prueba y la ejecuta en un contenedor. En el momento que el contenedor se ejecuta, se imprime un mensaje informativo. ¡Ahora Docker CE está instalado y funcionando!

Para ver la imagen que descargó Docker:

docker creation

Para ver el contenedor que se creó para ejecutar la imagen:

Al ejecutar un contenedor si no se especifica el nombre del mismo, Docker genera un nombre aleatorio por defecto.

Ahora es el momento de descargar el contenedor del Enterprise Integrator desde WSO2.

-¿Hacemos un break? Aprende todo lo que debes saber para conseguir una transformación digital en tu compañía, inminente, rápida y sin riesgos con WSO2-

Instalación del Enterprise Integrator container

Descarga y ejecución

Para ello debemos ir al repositorio de Docker oficial de WSO2, lugar donde encontramos una lista de contenedores.

explore repositories chakray

Elegimos WSO2-EI Enterprise Integrator y pulsamos en Details.

wso2 chakray

En la siguiente pantalla aparece la línea de comandos a usar para descargar el Contenedor y una lista de tags con las distintas versiones del EI. Nosotros usaremos la última versión.

repository name wso2

Para ello primeramente nos debemos logear en el repositorio Docker de WSO2 usando las credenciales que tengamos en la web de WSO2. Si no tienes credenciales debes crearte una cuenta en esa web.

Ahora debes descargar el contenedor del EI:

$ docker pull docker.wso2.com/wso2ei-integrator:latest

pull complete

Si quieres ver la imagen del EI teclea: $ docker image ls

download docker

Ahora ejecutamos la imagen en un Container y debes teclear:

$docker run -d -p 8280:8280 -p 8243:8243 -p 9443:9443 –name wso2ei docker.wso2.com/wso2ei-integrator:latest

El formato es: docker run -d <mapeo_puertos> –name <container_name> <image_name>

-d: significa detached mode.

Parámetros y mapeo de puertos

parámetros y mapeos wso2

Docker publica o mapea los puertos de la siguiente manera: puerto-del-host:puerto-del-container, en nuestro ejemplo:  -p 8280:8280

Es decir, las requests que van dirigidas al puerto 8280 en el Host, Docker las redirige al 8280 en el Contenedor.

-Descubre el primer tutorial de la sección ESB: Apache Synapse Enterprise Service Bus (ESB) y WSO2-

Acceso a la consola del EI y comandos importantes de Docker.

Ahora puedes ir a la consola de administración en el browser: https://localhost:9443/carbon

ei wso2 chakray

Los detalles del contenedor que se está ejecutando aparecen con esta orden:

$ sudo docker container ls

Como se puede apreciar aparece información del identificador del contenedor, la imagen que ejecuta el container, el comando que ejecuta el servidor de WSO2 en el Contenedor, cuando fue creado el contenedor, su estatus (si se está ejecutando o está parado), el mapeo de los puertos y el nombre del contenedor. Si no le hemos puesto ninguno Docker elige uno al azar.

Para parar el contenedor: $ docker container stop <container_name>

wso2ei

Nota: Si se ejecuta de nuevo el contenedor con el comando run se crea otro contenedor igual al primero.

Conectarse al container donde está desplegado el EI es algo tan sencillo como teclear:

$ docker container exec -it adoring_vaughan bash

-it: significa, [i]nteractive, Asigna un pseudo-TTY,

                   [t] tty, Mantiene STDIN abierto incluso si no está conectado.

La conexión a la línea de comandos del container donde se está ejecutando el EI, se realiza con esta orden:

$ docker container exec -it <container_name> bash

java wso2

Para abrir una shell como root: $ docker exec -u 0 -it <container_name> bash

A partir de aquí ya puedes acceder al EI para crear las secuencias a través del browser o explorador y a la línea de comandos para enviar las requests dentro del container.

Configuración del ESB

En la configuración del ESB se utiliza una secuencia principal por donde se procesan los mensajes entrantes provenientes del servicio Cliente. Dependiendo del valor del tag symbol del mensaje de la request, se envía el mensaje a un punto final distinto.

-No te pierdas este post: “ESB como primer paso para una implementación SOA”-

El primer punto final, cuando el symbol es IBM funciona correctamente. El segundo punto final no está definido en el ESB, por tanto se genera un error y se ejecuta la secuencia de error por defecto llamada ‘fault’. El tercer punto final, que no está definido tampoco, envía el mensaje a una secuencia desde donde sí que se gestionan esta vez los errores a través de la secuencia ‘sun ErrorHandler’.

Cómo funciona

El siguiente diagrama muestra cómo funciona la configuración del ESB:

ESB WSO2

Probando la configuración.

Desde el cliente AXIS2 se envían tres requests de ejemplo para probar el comportamiento de la gestión de errores de Synaps.

  • Caso de uso 1: Punto final definido.

$ ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=IBM

JAVA WSO2 CHAKRAY

Request enviada por el Cliente:

En la request se puede comprobar que el valor del tag symbol es IBM. El valor coincide con el de la expresión regular del primer case de la secuencia ESB. Por tanto, se envía el mensaje al punto final SimpleTockQuoteService.

Request enviada por el Cliente:

La respuesta del backend es la siguiente:

Y el valor que visualiza el cliente es: 87.5990

CHAKRAY WSO2

  • Caso de uso 2: Punto final y gestión del error no definido.

$ ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=MSFT

Request enviada por el Cliente:

WSO2 respuesta del backend

En este caso el símbolo por el que se busca la última cotización es MSFT.

El inconveniente es que el punto final para ese valor no está correctamente configurado en el EI y se produce un error. ¡El ESB no es capaz de encontrar el punto final!

Como no hay una secuencia de error definida para la secuencia que procesa la request del símbolo seleccionado, secuencia main,se ejecuta la secuencia de error por defecto que es la más cercana a la secuencia donde se ha producido el error. El servidor EI visualiza en su archivo de logs el mensaje de error y destruye el mensaje.

CHAKRAY WSO2 EI

  • Caso de uso 3: Punto final no definido y gestión del error definida.

$ ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=SUN

Request enviada por el Cliente:

REQUEST ENVIADA POR EL CLIENTE WSO2

En esta request el punto final no está definido pero sí que lo está la secuencia que gestiona el error. En este caso es la sunErrorHandler.

El mensaje de error que visualiza el middleware es:

JAVA SUPPORT

Conclusión

La virtualización de servidores es algo que debe aprender y conocer muy bien el desarrollador de integración. Es la mejor manera de virtualizar el comportamiento de servidores de un entorno real donde hay diferentes máquinas repartidas entre distintas redes y tener así un entorno virtual lo más parecido al real.

De esta forma  nos facilita la resolución de problemas sin complicaciones, ya que nos brinda la posibilidad de la replicación del caso de uso en el entorno en el que ha aparecido un error, en esta ocasión con los containers en un entorno virtual. Tal y como has podido comprobar, Docker nos da esa facilidad, siendo mucho menos pesado que VirtualBox ya que Docker no necesita un SO invitado (Guest OS) donde poderse ejecutar, solo el motor de Docker.

En el siguiente diagrama aparece una comparativa entre máquinas virtuales y Docker.

CONTAINERS WSO2

Debes saber que los contenedores son solo procesos, limitados a qué recursos pueden acceder y existen cuando el proceso se detiene.

Antes de finalizar es importante destacar que  EI hace posible la gestión de errores con la opción de escribir secuencias que las gestionen. De este modo es mucho más sencillo seguirle la pista a los problemas que surjan en el middleware o en los backends.

Ahora que ya conoces cómo manejar los errores y cómo Docker puede convertirse en el mejor contenedor (¡y aliado!) no hay tiempo que perder para poner en marcha todos los consejos aprendidos en este WSO2 Tutorial. Si necesitas un poco de ayuda en tus comienzos, contacta con nuestros asesores sin compromiso.

Si te ha gustado este post no olvides echarle un vistazo al pasado tutorial: WSO2 ESB Tutorial: Entradas en el registro local, puntos finales reutilizables y secuencias, ¡seguro que también te resulta tan enriquecedor como este! Nos leemos en el siguiente.

caso de éxito wso2 integración sistemas

Written By

Tomás Rabazo

Senior Integration Consultant