Obtén una fila de IBM MQ para desarrollar en un contenedor

Para ver cómo funciona IBM MQ, se te guiará a lo largo de la creación y la configuración de un gestor de filas (servidor). Después, conectarás una aplicación (cliente) a él.

Después de completar el tutorial, serás capaz de enviar mensajes y de recibir mensajes de una fila.

Es posible descargar, instalar y ejecutar el gestor de filas de IBM MQ (servidor) de diferentes maneras:

  • En un contenedor (este tutorial).
  • En IBM Cloud.
  • En varios sistemas operativos: Linux/Ubuntu o Windows. Para MacOS, utiliza MQ en contenedores.

Objetivos de aprendizaje

Después de completar este tutorial, comprenderás estos conceptos:

  • Gestores de filas de IBM MQ
  • Filas de IBM MQ
  • Mensajería de punto a punto

Requisitos Previos

  • Docker Community Edition, versión 17.06 o posterior
  • La imagen de IBM MQ Docker de Docker Hub

Tiempo estimado

Para completar este tutorial hacen falta aproximadamente 30 minutos.

Pasos

  1. Instala Docker
  2. Pon MQ en la imagen de Docker
  3. Ejecuta el contenedor desde la imagen
  4. Envía y recibe un mensaje

Paso 1. Instala Docker

Si ya tienes instalado Docker en tu sistema, comprueba qué versión tienes instalada. Si tu versión de Docker se llama docker o docker-engine, debes desinstalarla antes de instalar la versión más reciente docker-ce.

  1. Descarga Docker Community Edition, versión 17.06 o posterior, de Docker Hub.

  2. Sigue las instrucciones de la documentación de instalación para instalar Docker.

Paso 2. Pon MQ en la imagen de Docker

Los contenedores se ejecutan desde imágenes, y las imágenes se crean a partir de una especificación listada en un Dockerfile. Utilizaremos una imagen previamente creada del servidor IBM MQ de Docker Hub para que podamos ejecutar nuestro contenedor sin tener que crear una imagen. Acabaremos con una instalación de MQ que funciona y un gestor de filas que está preconfigurado con objetos que están listos para que los desarrolladores trabajen con ellos.

  1. Extrae la imagen de Docker Hub que contiene la versión más reciente del servidor de MQ:

     docker pull ibmcom/mq:latest
    
  2. Cuando esté hecho, verifica qué imágenes tiene:

     docker images
    

    Deberías ver un resultado como éste:

Salida de los comandos de Docker que muestran la versión más reciente del servidor de MQ

Paso 3. Ejecuta el contenedor desde la imagen

Ahora que la imagen del servidor de MQ está en tu repositorio local de Docker, es posible ejecutar el contenedor para levantar MQ en RHEL en un contenedor.

Cuando levantas un contenedor, se utiliza un sistema de archivos en memoria que se borra junto con el contenedor. Los datos de las filas y del gestor de filas se guardan en este sistema de archivos. Para evitar la pérdida de datos de la fila y del gestor de filas, es posible usar volúmenes de Docker.

Los volúmenes se adjuntan a los contenedores cuando estos se ejecutan y persisten cuando se borra el contenedor. Cuando se ejecuta un contenedor nuevo, es posible adjuntar un volumen existente y posteriormente usar los datos de las filas y del gestor de filas.

  1. Utiliza Docker para crear un volumen:

     docker volume create qm1data
    
  2. Ejecuta el contenedor del servidor de MQ. Edita el comando para establecer tu propia contraseña para que las aplicaciones se conecten. Esta contraseña será necesaria después para la aplicación de demostración del cliente y cuando ejecutes tus propias aplicaciones. En este ejemplo, establecemos que la contraseña es «passw0rd», pero puedes elegir las tuyas propias:

     docker run --env LICENSE=accept --env MQ_QMGR_NAME=QM1 --volume qm1data:/mnt/mqm --publish 1414:1414 --publish 9443:9443 --detach --env MQ_APP_PASSWORD=passw0rd ibmcom/mq:latest
    

Se ha creado tu gestor de filas con una configuración predeterminada sencilla para ayudarte a conectar tu primera aplicación cliente.

Hemos añadido parámetros al comando docker run, por ejemplo, para aceptar la licencia de IBM MQ Advanced para desarrolladores, y para denominar «QM1» al gestor de filas en el que residirán nuestras filas.

Como MQ se está ejecutando dentro de un contenedor, estaría aislado del resto del mundo, así que hemos abierto un par de puertos utilizables.

El puerto receptor del gestor de filas escucha en el puerto 1414 a las conexiones entrantes y el puerto 9443 es utilizado por la consola de MQ.

La aplicación cliente de demostración de MQ utilizará el puerto receptor y el panel de instrumentos de la consola de MQ se puede ver en el navegador en el puerto 9443.

Da un tiempo al contenedor para que se inicie, y después comprueba que se está ejecutando:

docker ps

Deberías ver un resultado como éste:

Salida de la ejecución de la imagen del contenedor

¡Felicidades! Acabas de crear tu primer gestor de filas sencillo. Se llama QM1 y se está ejecutando dentro del contenedor.

Para acceder a este gestor de filas se conectará por medio de TCP/IP, por eso es necesario exponer el puerto 1414.

Anota el ID de tu propio contenedor, y utilízalo para obtener acceso a la línea de comando dentro del contenedor. Por ejemplo:

docker exec -ti <your container id> /bin/bash

Deberías ver un resultado como éste:

Salida de la obtención de acceso a la CLI en el contenedor

Es posible mostrar las rutas de datos y de la instalación de MQ ejecutando el comando dspmqver (mostrar versión de MQ) en la interfaz de la línea de comando.

dspmqver

Deberías ver un resultado como éste:

Salida para mostrar versión de MQ

Es posible mostrar los gestores de filas que se están ejecutando con el comando dspmq.

dspmq

Deberías ver un resultado como éste:

Salida para mostrar los gestores de filas que se están ejecutando

Para salir del contenedor de Docker y volver a la línea de comando, escribe exit y pulsa Intro.

Qué has hecho hasta ahora

Descargaste la imagen previamente creada de Docker y ejecutaste el contenedor para ejecutar MQ en RHEL. Los objetos y permisos de IBM MQ que las aplicaciones cliente tienen que conectar a un gestor de filas para ser capaces de poner y obtener mensajes de la fila se crean automáticamente. Docker y MQ están utilizando los recursos y la conectividad de tu computadora anfitriona.

Dentro del contenedor, la instalación de MQ en RHEL tiene los siguientes objetos:

  • Gestor de filas QM1
  • Fila DEV.QUEUE.1
  • Canal: DEV.APP.SVRCONN
  • Receptor: DEV.LISTENER.TCP en el puerto 1414

La fila que usarás, DEV.QUEUE.1, «reside» en el gestor de filas QM1. El gestor de filas también tiene un receptor que escucha las conexiones entrantes, por ejemplo, en el puerto 1414. Las aplicaciones del cliente pueden conectarse con el gestor de filas y pueden abrir, poner y obtener mensajes, además de cerrar la fila.

Las aplicaciones utilizan un canal de MQ para conectarse con el gestor de filas. El acceso a estos tres objetos está restringido de diferentes maneras. Por ejemplo, el usuario «app», que es un miembro del grupo «mqclient» tiene el permiso para utilizar el canal DEV.APP.SVRCONN para conectarse al gestor de filas QM1 y está autorizado a poner y obtener mensajes de la fila DEV.QUEUE.1.

Todos los permisos y objetos de MQ que la aplicación cliente necesita se crean y configuran cuando se ejecuta el contenedor del servidor de MQ.

Objetos y permisos de la imagen de Docker para MQ

Paso 4. Poner y obtener un mensaje con la consola de MQ

La consola de MQ es una interfaz basada en el navegador web para interactuar con los objetos de MQ. Viene configurada dentro de la versión de MQ para desarrolladores en un contenedor.

Los administradores utilizan la consola de MQ para administrar los gestores de filas. Los desarrolladores pueden utilizar la consola de MQ para probar y depurar las aplicaciones cliente.

Asignamos el puerto 9443 para que la consola de MQ lo utilice al inicio, así que si haces que tu navegador de tu sistema local apunte a https://localhost:9443/ibmmq/console/, serás capaz de echar un vistazo a tu gestor de filas QM1.

Ahora, usemos la consola MQ para poner y obtener un mensaje de la fila:

  1. Inicia sesión en la consola de MQ con el usuario “admin” y la contraseña “passw0rd”.
  2. Haz clic en Gestionar, que está debajo del icono Inicio. Se abrirá una página que muestra los recursos de tu QM1
  3. En la página de recursos de QM1, haz clic en DEV.QUEUE.1.
  4. En la página DEV.QUEUE.1 de la fila local, haz clic en el botón Crear para poner un mensaje en la fila.
  5. En la interfaz de mensajes, escribe Hello World en el campo Datos de la aplicación. Después, haz clic en Crear.
  6. Ve tu mensaje como una fila en la página de la fila.
  7. Haz clic en los tres puntos verticales de la esquina superior derecha para abrir el menú de opciones.
  8. Haz clic en Limpiar mensajes para limpiar la fila.

Resumen

En este tutorial, levantaste un gestor de filas de MQ en un contenedor y utilizaste la consola de MQ para poner y, luego, obtener un mensaje de la fila. El contenedor de MQ vino prefigurado para permitir las conexiones entrantes de clientes.

Cuando empieces a desarrollar tus propias aplicaciones del cliente para conectarlas con el gestor de filas, seguirás estos pastos:

  1. Configura la conexión para el gestor de filas.
  2. Abre una fila.
  3. Pon un mensaje en la fila.
  4. Obtén el mensaje de la fila.
  5. Cierra la conexión con el gestor de filas.

Este proceso demuestra el estilo de mensajería de punto a punto.

En IBM MQ, el gestor de filas es efectivamente la parte del servidor del sistema, y las aplicaciones que se conectan a él son los clientes.

Normalmente, el administrador es el que cuida del servidor de MQ donde se definen todos los objetos de MQ y ocurre todo el direccionamiento de mensajes. Las aplicaciones cliente son creadas por los desarrolladores e IBM MQ brinda bibliotecas de clientes que los desarrolladores deben incluir en sus aplicaciones. Estas bibliotecas, también llamadas clientes de MQ, atienden y utilizan los objetos de MQ que los administradores han creado en el lado del servidor de MQ. En escenarios más complejos, las bibliotecas de MQ hacen la mayoría del trabajo pesado por ti, así que es necesario aprender cómo usarlas.

Para que la mensajería funcione, hay que configurar los lados del servidor y del cliente.

Cuando empieces a desarrollar por primera vez aplicaciones cliente de MQ, será necesario que tengas acceso a tu propio gestor de filas y a una fila, para probar tu aplicación cliente con ellos. El MQ preconfigurado en la imagen de Docker y el contenedor que es posible ejecutar fácilmente desde él te proporcionan acceso a un gestor de filas y muchas opciones para configurar objetos de MQ mientras comienzas a desarrollar tus propias aplicaciones de MQ.

Próximos pasos

¿Qué es lo siguiente? Escribe tu primera aplicación de JMS.

Aviso

El contenido aquí presentado fue traducido de la página IBM Developer US. Puede revisar el contenido original en este link.