Como andar de metiche con Camel

Introduccion

Este es el ultimo post de la serie :(.

Bueno aunque no a todos nos gusta que nos estén supervisando y que nos digan a cada instante que haces, como vas, que paso, etc. En las aplicaciones es todo lo contrario, monitorear una aplicación ya no es mas un addon o un extra en las aplicaciones modernas (solía serlo por ahi del 2007): sino que se debe tener como indispensable.

A veces es requerido trabajo extra para implementarlo, otras veces solo instalar una aplicacion y muchas otras un dolor de cabeza, porque nunca se pensó que se debía monitorear.

Bueno sea el caso que sea, ahora vamos a revisar como monitorear nuestra aplicación creo yo de una forma simple.

Prerequesitos

Hawtio

Esta es una de esas herramientas que querrás mucho cuando tenemos un problema y no tenemos la menor idea del origen del problema (hablando de aplicaciones), porque podremos ver que esta pasando con la aplicación mientras esta funcionando e incluso prevenir algún posible problema. Hawtio es un monitor de aplicaciones jmx, ósea que si desarrollaste tu aplicación integrando jmx esta herramienta la analizara.

Y esto es relevante para nosotros porque apache Camel soporta o aplica (no se bien como se diga) JMX, por lo que podemos monitorear nuestra aplicación hecha con Kotlin y Camel en Hawtio (también puedes monitorear Apache ActiveMQ, Fuse entre otros).

Este post solo es para demostrar que se puede monitorear nuestra aplicación, pero para producción require instalar un agente en cada maquina que queramos monitorear, lo cual es bastante sencillo si usas docker.

Usando Hawtio

Debemos tener corriendo nuestra aplicación no importa que sea desde intellij

Es bastante fácil, solo descargamos el jar y ejecutamos java - jar hawtio.jar —port 8090. (el nombre varia dependiendo la version). Esto nos lanzara automáticamente a la pagina de inicio de hawtio. Aquí seleccionaremos el tab connect y luego el subtab local (como mencione puedes conectar a otras maquinas, pero necesitas instalar un agente, en la documentación de hawtio se explica como hacerlo).

Aqui buscamos que nuestra aplicación este listada “MainKt” y damos clic en el botón play (instala el agente localmente). Y damos clic en el enlace que aparecerá.

Esto nos llevara al home del monitoreo de nuestra app, los tabs cambian y entre ellos podemos ver Camel, eso es grandioso, ahi veremos toda la información disponible de monitoreo de nuestras ruta, damos clic en ese tab.

Y la info mostrada es grandiosa, en teoria debimos configurar con nombre y descripción todas las rutas y procesos para que sepamos bien punto por punto lo que esta ahi, aquí te voy a invitar a que des clic en todas la opciones del menu de la izquierda y las opciones de los tabs de la parte superior derecha.

Encontraras información de las rutas, de los procesos, todos nuestros endpoints, cuantas veces se han llamado, si fallaron, si no, una version en xml de las rutas (para los que no pueden vivir sin spring), y la pantalla que a mi mas me gusta, una representación visual de nuestras rutas.

La otra pestaña que me gusta mucho, es “Dashboard”, en ella se puede ver la situación actual de la JVM donde esta corriendo MainKt.

Comentarios finales

Hawtio es una herramienta muy completa, tiene seguridad, conexión a maquinas remotas y datos sobre los threads. Así que vale la pena leer la documentación y experimentar mas con ella.

Camel es una plataforma pensada en enterprise development, es fácil integrar Apps con Camel que corran en un JEE container (con acceso a JMS, EJB, caches, muchas mas monerías gracias a CDI), o con Spring (para los que les gusta spring) o correr standalone como se mostró en esta pequeña serie de posts y adoptar docker, CI y microservicios como esta de moda.

Camel no solo son servicios REST, tiene mas de 100 conectores para diferentes tecnologías, desde JMS, AMQP, Kafka, Redis, Mongodb, Archivos, FTP, SOAP, entre muchos otros, es un integrador muy muy completo, vale la pena usarlo mas seguido.

Espero les haya gustado y gracias por acompañarme en esta pequeña aventura para aprender Kotlin, en lo personal me gusto mucho kotlin, las discusiones de si es mejor o no que java o clojure o groovy o Scala u otras; nunca terminara, son cuestiones de gustos igual Angular, React y Vue. Muchos dicen que Angular es mejor que React, o que Vue es mejor que React (todos saben que React es el mejor :P). Pero en realidad es una cuestión de gustos.

PD. También hay guerras sin cuartel si Rust o C, Nodejs o Go, Haskell o Clojure, Typescript vs Javascript.