MuleSoft y Artemis MQ
En este breve tutorial os explico como crear un proyecto Mule que se conecta con un Artemis MQ montado en local.
Lo primero es montar un Apache Artemis MQ en nuestra maquina local para poder hacer pruebas.
Instalación de Artemis MQ
PRERREQUISITOS
- - Tener Docker instalado
2.- Ejecutar la siguiente orden para descargar y ejecutar la imagen de Docker
docker run -d -e AMQ_USER=admin -e AMQ_PASSWORD=admin -e AMQ_EXTRA_ARGS='--relax-jolokia' -p8162:8161 -p 61615:61616 --name artemis quay.io/artemiscloud/activemq-artemis-broker
Para posteriores inicios de Artemis solo teneis que poner
docker start artemis
En algunos casos el volver a arrancarlos puedo daros problemas, si este es el caso tendréis que eliminar el container y volver a lanzar la orden del paso 2.
Para comprobar que todo funciona correctamente solo tendremos que escribir en nuestro navegador la siguiente direccion http://localhost:8162/console y nos saldra la siguiente pantalla
El user y pass es admin / admin tope complicado :)
En este tutorial no vamos a tratar las diferentes caracteristicas que tiene Artemis solo nos vamos a centrar en el uso básico.
SI pulsamos sobre la pestaña de Queues podremos ver las colas JMS que tiene.
Creación del ejemplo en Anypoint Studio
En nuestro ejemplo vamos a crear un simple Listener que escuchará en el puerto 8081, y que recibirá un simple json (el que mas os guste).
1.- Tenemos que añadir a la paleta de Mule el componente JMS y ahora comienza lo complicado, que es la configuración del JMS Config para poder conectar con nuestro Artemis
Configuración del JMS Config para Active MQ
1.- Nos vamos a la pestaña de Global Element y buscamos el elemento JMS Config
En este paso es necesario que hagamos una configuración previa como si fuéramos a conectarnos con un ActiveMQ (versión antigua de Artemis MQ) ya que necesitamos unas librerías especificas que MuleSoft recomienda y que son necesarias para poder conectarnos con Artemis.
2.- Para ello selecionamos:
Connection : ActiveMQ Connection
En Required Libraries pulsamos en configure y seleccionamos “Add recomended libraries” para los tres ActiveMQ Client, Broker y KahaDB
Quedando de la siguiente forma
Esto lo que hace es que nos configure estas librerías como dependencias Maven en el pom.xml de nuestro proyecto.
Configuración del JMS Config para Artemis
COmo hemos explicado en el apartado anterior es necesario que se. configuren esas librerias para el correcto funcionamiento de MuleSoft con Artemis, ya que para poder configurar esto es necesario utilizar la configuración generica en el JMS Config.
Volvemos a nuetro JMS Config y lo configuramos de la siguiente manera:
Seleccionamos:
Connection: Generic connection
Specification: JMS_2_0
Connection factiroy jndi name: ConnectionFactory
Seleccionamos Nema resolver builder
Jndi initial context factory:
org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
Jndi provider url:
tcp://localhost:61615?broker.persistent=false&broker.useJmx=false
Ahora solo queda configurar el componente con los siguientes campos
Connector configuration: JMS Config (la configuración que hayamos guardado)
Destination: Nombre que queramos ponerle a nuestra cola donde vamos a publicar, en nuestro caso “in”
Y con esto tenemos nuestro ejemplo de conexión con Artemis, solo nos queda probarlo con el siguiente curl
curl --location 'localhost:8081/publish' \
--header 'Content-Type: application/json' \
--data '{"hola" : "caracola"}'
Comprobamos en la consola de Artemis que nos ha llegado un mensaje
Pulsamos sobre la columna Message Count de nuestra cola que en este caso es “in”
Pulsamos sobre el botón Show y veremos lo que hemos enviado desde Mule.