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

  1. - 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.

--

--

Another Integration Blog
Another Integration Blog

Published in Another Integration Blog

We are excited to bring you a publication dedicated to sharing insights, stories, and how-tos by the best and brightest in the integration/automation industry. Whether you are an avid MuleSoft fan or just starting to explore the ecosystem, this publication has something for you!