Instalar ActiveMQ en Rocky Linux 8

Continuamos hablando y probando productos de la fundación Apache, en este caso vemos cómo instalar ActiveMQ en Rocky Linux 8.

Seguimos utilizando el VPS creado para la instalación de Tomcat 10 en nuestro proveedor de confianza Clouding.io, ubicado en la ciudad de Barcelona.

Logo de ActiveMQ

¿Qué es Apache ActiveMQ?

Apache ActiveMQ es un servidor de mensajería muy popular escrito en Java. Este se encarga de crear un puente entre diferentes tipos de sistemas, para un intercambio de datos confiable en forma de mensajes que los clientes productores envían a las colas, donde esperan ser “leídos” o consumidos por los clientes consumidores.

Hay que tener en cuenta que un cliente de ActiveMQ, puede ser tanto productor como consumidor, y más de un sistema puede suscribirse a una cola o tema, lo que permite una comunicación flexible entre sistemas cliente. Se pueden usar muchas plataformas y protocolos diferentes para conectarse a ActiveMQ, lo que aumenta aún más su utilidad.

Instalar ActiveMQ en Rocky Linux 8

En esta guía vamos a realizar la instalación en Rocky Linux 8 desde el tarball, para después agregar los archivos de la unidad systemd para facilitar el uso y al final accederemos a la página de administración de nuestro servicio para crear una cola de ejemplo.

Para la instalación necesitamos un Java, por lo menos la versión 8 funcional. En nuestro caso vamos a utilizar Java 9, que vimos como instalarlo en la entrada sobre Tomcat 10, que he comentado al principio de la entrada.

En cualquier caso, aquí os dejo el paso de instalación:

dnf update
dnf -y install java-latest-openjdk-devel

Debemos tener en cuenta que los mensajes se almacenarán en el disco, por lo que necesitamos un espacio suficiente. En cualquier caso, estas entradas se basan en una serie de VPS de prueba, por lo que tampoco necesitamos demasiado espacio, al no pasar a producción.

Ahora nos ubicamos en la carpeta “/opt” y descargamos el fichero tar.gz con la versión de ActiveMQ 5.18.1 que es la última, a fecha de la creación de esta entrada.

cd /opt
wget "http://www.apache.org/dyn/closer.cgi&filename=/activemq/5.18.1/apache-activemq-5.18.1-bin.tar.gz&action=download" \
-O apache-activemq-5.18.1-bin.tar.gz

De esta manera ya tenemos el fichero comprimido disponible y procedemos a trabajar con él:

tar -xvf apache-activemq-5.18.1-bin.tar.gz

Creamos un enlace simbólico para apuntar a un nombre fácil de trabajar:

ln -s /opt/apache-activemq-5.18.1 /opt/activemq

Siempre es recomendado no trabajar con “root” y crear un usuario dedicado para el servicio:

useradd -m -d "/opt/activemq" -s "/bin/bash" activemq

Le hemos asignado como home la carpeta de trabajo de ActiveMQ

Asignamos usuario y grupo a la carpeta correspondiente:

chown -R activemq:activemq apache-activemq-5.18.1*

Ahora, al igual que hicimos con el servicio de Tomcat, creamos un fichero de unidad de systemd para ActiveMQ:

vi /etc/systemd/system/activemq.service

Y añadimos:

[Unit]
Description=Apache ActiveMQ
After=network.target
 
[Service]
Type=forking
 
User=activemq
Group=activemq
 
ExecStart=/opt/activemq/bin/activemq start
ExecStop=/opt/activemq/bin/activemq stop
 
[Install]
WantedBy=multi-user.target

Una vez hecho esto guardamos y salimos.

Recargamos systemd:

systemctl daemon-reload

Añadimos el servicio al arranque:

systemctl enable activemq.service

Y lo encendemos:

systemctl start activemq.service

Por último, comprobamos su estado:

systemctl status activemq.service

Una vez hecho esto, comprobamos los registros del sistema, para confirmar que ha ido todo bien:

Si observamos los logs, veremos que el servicio utiliza el puerto 8161, por lo que, si tenemos el cortafuegos habilitado, tenemos que abrir dichos puertos:

firewall-cmd --zone=public --add-port=8161/tcp --permanent
success
firewall-cmd --reload
success

Una vez hecho esto ActiveMQ, por defecto, está configurado para acceder desde la propia máquina donde esté instalada. Por lo que, por seguridad, lo más adecuada es crear un túnel SSH o bien utilizar una VPN. Yo me he decantado por lo primero. Si no sabéis como hacerlo, podéis consultar la guía que escribí al respecto:

Cómo crear un túnel SSH en Linux

En mi caso, lo he hecho así:

ssh -L 8161:127.0.0.1:8161 root@servidor-remoto -N -v

Ahora ya podemos ir a la web, por el puerto 8161, escribiendo «http://localhost:8161/admin», con el resultado:

Aspecto de la interfaz web de ActiveMQ

El usuario por defecto es “admin” y la contraseña “admin”

Una vez que estamos dentro de la web, ya podemos empezar a trabajar con ella, por ejemplo, creando nuevas colas.

Creamos nuestra primera «cola» en ActiveMQ

Y eso es todo.

Fuentes consultadas

Web oficial de ActiveMQ

Linuxconfig.org – How to install activemq en Red Hat 8