IBM MQ es una familia de productos de middleware orientados a mensajes que IBM lanzó en diciembre de 1993. Originalmente se llamaba MQSeries y en 2002 pasó a llamarse WebSphere MQ para integrarse en la suite de productos WebSphere . En abril de 2014, volvió a llamarse IBM MQ . Los productos que forman parte de la familia MQ son IBM MQ, IBM MQ Advanced, IBM MQ Appliance, IBM MQ para z/OS e IBM MQ en IBM Cloud . IBM MQ también ofrece opciones de implementación en contenedores.
MQ permite que aplicaciones independientes y potencialmente no concurrentes en un sistema distribuido se comuniquen de forma segura entre sí mediante mensajes. MQ está disponible en una gran cantidad de plataformas (tanto de IBM como de otros proveedores), incluyendo z/OS ( mainframe ), IBM i , Transaction Processing Facility , UNIX ( AIX , HP-UX , Solaris ), HP NonStop , OpenVMS , Linux y Microsoft Windows .
Componentes MQ
Los componentes principales de MQ son:
- Mensaje : Los mensajes son conjuntos de datos binarios o de caracteres (por ejemplo, ASCII o EBCDIC ) que tienen algún significado para un programa participante. Al igual que en otros protocolos de comunicación , la información de almacenamiento, enrutamiento y entrega se agrega al mensaje antes de la transmisión y se elimina antes de la entrega a la aplicación receptora.
- Cola : Las colas de mensajes son objetos que almacenan mensajes en una aplicación.
- Gestor de colas : un servicio del sistema que proporciona un contenedor lógico para la cola de mensajes. Se encarga de transferir datos a otros gestores de colas mediante canales de mensajes. Aunque no es estrictamente necesario para el middleware orientado a mensajes, es un requisito previo de IBM MQ. Los gestores de colas se encargan del almacenamiento, la sincronización, la activación y todas las demás funciones no directamente relacionadas con el movimiento real de los datos.
Los programas integrados con IBM MQ utilizan una interfaz de programación de aplicaciones (API) coherente en todas las plataformas.
Tipos de mensajería
MQ admite mensajería punto a punto y de publicación-suscripción .
API
Las API compatibles directamente con IBM incluyen:
- Interfaz de cola de mensajes de IBM (MQI) para C , COBOL , PL/I , Java , Rexx , [ 1 ] RPG y C++
- Servicio de mensajería Java (JMS)
- XMS para C/C++ y .NET [ 2 ]
- .NETO
- DESCANSAR
- JABÓN
IBM también enumera protocolos alternativos como "API". Estos incluyen: [ 3 ]
También hay API adicionales (no compatibles oficialmente) disponibles a través de terceros, entre las que se incluyen:
- Interfaz Perl (desarrollada y aportada por Hildo Biersma), disponible en CPAN . [ 4 ]
- Interfaz de Python PyMQI (desarrollada originalmente por Les Smithson), disponible en PyPI [ 5 ]
- PowerShell [ 6 ]
Características
Entrega única : MQ utiliza la entrega única. Esta calidad de servicio generalmente evita la pérdida o duplicación de mensajes.
Mensajería asíncrona : MQ proporciona a los diseñadores de aplicaciones un mecanismo para lograr una arquitectura independiente del tiempo. Los mensajes se pueden enviar de una aplicación a otra, independientemente de si se ejecutan simultáneamente. Si la aplicación receptora no está en ejecución cuando el remitente envía un mensaje, el gestor de colas lo retendrá hasta que el receptor lo solicite. Se conserva el orden de todos los mensajes; por defecto, este orden es FIFO ( primero en entrar, primero en salir) según la prioridad de recepción en la cola local.
Transformación de datos : por ejemplo, de Big Endian a Little Endian o de EBCDIC a ASCII . Esto se logra mediante el uso de salidas de datos de mensajes. Las salidas son aplicaciones compiladas que se ejecutan en el host del gestor de colas y son ejecutadas por el software IBM MQ cuando se requiere la transformación de datos.
Marco de arquitectura basado en mensajes : IBM MQ permite que la recepción de mensajes "active" la ejecución de otras aplicaciones.
Gama de API : Implementa la API estándar del Servicio de Mensajería Java (JMS) y también cuenta con su propia API propietaria, conocida como Interfaz de Cola de Mensajes (MQI), que existía varios años antes que JMS. A partir de la versión 8.0.0.4, MQ también es compatible con la API MQ Light.
Agrupación : Varias implementaciones de MQ comparten el procesamiento de mensajes, lo que proporciona equilibrio de carga.
Comunicación
Los gestores de colas se comunican con el mundo exterior a través de:
- Enlaces : una conexión de software directa. Generalmente más rápida, pero limitada a programas que se ejecutan en el mismo host físico que el gestor de colas.
- Una conexión de red o de "cliente" : las aplicaciones que utilizan una conexión de cliente pueden conectarse a un gestor de colas en cualquier otro host de la red. La ubicación física del gestor de colas es irrelevante, siempre que sea accesible a través de la red. Se pueden utilizar SNA APPC, TCP/IP, NetBIOS y SPX. [ 7 ] También existe un MQ Internet Pass-Thru (MQIPT) para su uso a través de Internet TCP/IP. [ 8 ]
Comunicación entre gestores de colas
Esto depende de un canal . Cada gestor de colas utiliza uno o más canales para enviar y recibir datos a otros gestores de colas. Un canal es unidireccional; se requiere un segundo canal para devolver los datos. En una red basada en TCP/IP, un canal envía o recibe datos a través de un puerto específico.
Tipos de canales:
- Canal de envío : tiene un destino definido y está asociado a una cola de transmisión específica (el mecanismo mediante el cual los mensajes se ponen en cola a la espera de ser transmitidos por el canal).
- Canal receptor : recibe datos de cualquier otro gestor de colas con un canal emisor del mismo nombre.
Cuando un canal receptor recibe un mensaje, lo examina para determinar a qué gestor de colas y cola está destinado. En caso de fallo de comunicación, MQ puede restablecer automáticamente la conexión una vez resuelto el problema.
El oyente es la interfaz de red de la aplicación con el gestor de colas. El oyente detecta las conexiones de los canales entrantes y gestiona la conexión de los canales emisores con los receptores. En una red TCP/IP, el oyente estará a la espera de conexiones en un puerto específico.
Transmitir datos a una cola en otro gestor de colas.
Tipos de cola:
- Cola local : representa la ubicación donde se almacenan los datos a la espera de ser procesados.
- Cola remota : representa una cola en otro gestor de colas. Define la cola de destino, que es un elemento del mecanismo de enrutamiento de mensajes.
- Cola de clúster : representa una cola a la que se puede acceder a través de cualquier gestor de colas en su clúster.
Un mensaje se coloca en una cola remota. El mensaje va a una cola de transmisión de almacenamiento temporal asociada a un canal. Al colocar un mensaje en una cola remota, el mensaje se transmite a través del canal remoto. Si la transmisión es exitosa, el mensaje se elimina de la cola de transmisión. Al recibir un mensaje, el administrador de la cola receptora lo examina para determinar si el mensaje es para sí mismo o si debe ir a otro administrador de cola. Si el administrador de la cola receptora encuentra la cola requerida, se verificará y, si existe, el mensaje se coloca en ella. De lo contrario, el mensaje se coloca en la cola de mensajes no entregados . MQ tiene funciones para administrar la transmisión eficiente de datos a través de una variedad de medios de comunicación. Por ejemplo, los mensajes se pueden agrupar hasta que una cola alcance una profundidad determinada.
Pedidos
Aunque la cola es FIFO (primero en entrar, primero en salir), se ordena según la recepción en la cola local, no según la confirmación del mensaje por parte del remitente. Los mensajes pueden priorizarse y, por defecto, la cola se prioriza según el orden de llegada. Las colas solo se ordenarán secuencialmente si el mensaje se agrega localmente. Se puede usar la agrupación de mensajes para asegurar que un conjunto de mensajes se encuentre en un orden específico; además, si el orden es crítico, es responsabilidad de la aplicación incluir los datos de secuencia en el mensaje o implementar un mecanismo de confirmación mediante una cola de retorno. En la práctica, el orden se mantendrá en configuraciones sencillas.
El tronco
El otro elemento de un gestor de colas es el registro . Cuando se coloca un mensaje en una cola o se realiza un cambio de configuración, los datos también se registran. En caso de fallo, el registro se utiliza para recrear los objetos dañados y los mensajes. Solo se recrean los mensajes persistentes cuando se produce un fallo; los mensajes no persistentes se pierden. Los mensajes no persistentes pueden enviarse a través de un canal configurado en modo rápido, en el que no se garantiza la entrega en caso de fallo del canal.
MQ admite tanto el registro circular como el lineal.
Recuperación de mensajes de las colas
La información se puede recuperar de las colas consultando periódicamente la cola para comprobar si hay datos disponibles, o bien MQ puede activar un evento, lo que permite que una aplicación cliente responda a la entrega de un mensaje.
Disponibilidad
IBM MQ ofrece una variedad de soluciones para garantizar la disponibilidad:
Alta disponibilidad nativa (MQ Advanced en plataformas de contenedores como Red Hat OpenShift / CNFC Kubernetes y Red Hat Linux): Es una arquitectura basada en quórum que requiere un nodo activo y dos nodos de réplica. Los registros se replican de forma síncrona entre los nodos. También proporciona la función de replicación entre regiones , que permite que el clúster de alta disponibilidad nativa (en modo activo) se replique de forma asíncrona a otro clúster de alta disponibilidad nativa (en modo de recuperación). [ 9 ]
Gestor de colas de datos replicado (RDQM / 'Easy HA' - MQ Advanced solo en Red Hat Linux): replicación síncrona entre tres servidores que comparten una dirección IP flotante.
Clústeres de gestores de colas: Un clúster se define como un grupo de dos o más gestores de colas en uno o más ordenadores, lo que proporciona interconexión automática y permite compartir colas entre ellos para el equilibrio de carga y la redundancia.
Grupos de compartición de colas (solo z/OS): En un entorno de cola compartida, una aplicación puede conectarse a cualquiera de los gestores de colas del grupo. Dado que todos los gestores de colas del grupo pueden acceder al mismo conjunto de colas compartidas, la aplicación no depende de la disponibilidad de un gestor específico. Esto proporciona mayor disponibilidad si un gestor de colas deja de funcionar, ya que los demás gestores del grupo pueden seguir procesando la cola.
Administradores de colas de múltiples instancias (disponibles a partir de la versión 7.0.1): Se configuran instancias del mismo administrador de colas en dos o más equipos, con sus colas y metadatos almacenados en un sistema de almacenamiento compartido. Al iniciar varias instancias, una se convierte en la instancia activa y las demás en instancias de reserva. Si la instancia activa falla, una instancia de reserva que se ejecuta en otro equipo toma el control automáticamente.
Historia
Fechas de lanzamiento de la versión
Fechas de fin de soporte de la versión
La siguiente tabla se aplica al software MQ. El dispositivo MQ tiene fechas de ciclo de vida diferentes tanto para el firmware como para el hardware que las que se muestran en la tabla. [ 15 ]
Referencia arquitectónica de fondo
Con la llegada de los ordenadores, IBM vio la oportunidad de aplicar nuevas tecnologías a la necesidad de conmutación de mensajes.
A principios de la década de 1960, IBM comercializó el sistema de control de comunicaciones IBM 7740 y el sistema de control de transmisión programada IBM 7750, que eran sistemas programables de conmutación de mensajes.
El IBM System/360 se anunció en abril de 1964, y con él llegaron métodos de acceso a la comunicación como BTAM y QTAM (Métodos Básicos y de Cola de Acceso a las Telecomunicaciones). En 1971, TCAM ( Método de Acceso a las Telecomunicaciones ) ofreció a sus usuarios una forma más avanzada de conmutación o enrutamiento de mensajes. TCAM tuvo una gran aceptación, especialmente en los sectores financiero y de corretaje. Admitía mensajería asíncrona, al igual que el posterior MQ. TCAM 3.0 añadió poco después colas de mensajes en disco reutilizables para su recuperación, al igual que MQ. Se podía utilizar un programa PL/I de alto nivel para acceder a conjuntos de datos TRANSIENT (colas de mensajes dinámicas). La lectura de un mensaje de un conjunto de datos transitorio provocaba su eliminación de la cola, como ocurría con una lectura sin exploración en MQ.
A finales de la década de 1970, surgieron los sistemas de gestión de transacciones, cada uno buscando posicionarse como líder en el sector. Dentro de IBM, CICS e IMS fueron elegidos como productos estratégicos para satisfacer la necesidad de gestión de transacciones. Tanto CICS como IMS contaban con su propia versión de conmutación de mensajes: IMS era un sistema de colas de interfaz y CICS utilizaba su funcionalidad de datos transitorios como base para la conmutación de mensajes.
CICS se consolidó como un sistema de gestión de transacciones muy popular entre 1968 y 1971. Los usuarios que habían adoptado TCAM por sus capacidades de gestión de mensajes ahora deseaban combinar TCAM con CICS. En diciembre de 1971, IBM anunció la compatibilidad de CICS con TCAM como parte del producto CICS/OS-Standard, que se lanzaría en diciembre de 1972. Para los clientes interesados, esto les permitía aprovechar las ventajas de TCAM en la gestión de mensajes y, además, conectar terminales o computadoras con TCAM a las aplicaciones en línea de CICS.
En enero de 1973, CICS/OS-Standard versión 2.3 seguía ofreciendo soporte para TCAM. Sin embargo, este soporte se omitió en la versión inicial de CICS/VS, anunciada en febrero de 1973 y lanzada en junio de 1974. Como era de esperar, muchos clientes de CICS-TCAM no quedaron satisfechos con esta decisión.
Debido a la considerable presión de los clientes de CICS-TCAM, la compatibilidad de CICS con TCAM se restableció en el producto CICS/VS 1.1 en septiembre de 1974. Además de la compatibilidad previa con DCB, con este restablecimiento de la compatibilidad con TCAM, CICS comenzó a admitir el acceso a TCAM a través de VTAM, también conocido como compatibilidad con ACB. La compatibilidad de CICS TCAM ACB se suspendió a partir de la versión 3 del producto CICS/ESA en 1990.
En 1992, IBM anunció un nuevo producto llamado MQSeries. Esta marca se renombró posteriormente a WebSphere MQ (aunque su nombre abreviado oficial siguió siendo MQ) en 2002 para respaldar la familia de productos WebSphere. En 2014, se renombró a IBM MQ. MQ se concibió como la extensión de la funcionalidad TCAM de los sistemas exclusivos de IBM a todas las demás plataformas. MQ cuenta con una arquitectura que permite la comunicación entre sistemas heterogéneos (por ejemplo, IBM, HP, Sun, Tandem, etc.). MQ puede utilizarse con sistemas CICS para enviar y recibir datos desde y hacia cualquier otro sistema compatible con MQ. MQ puede utilizarse para iniciar tareas en un sistema CICS, o bien una transacción CICS puede iniciar tareas en otro sistema, ya sea CICS o no.
IBM MQ ahora admite 80 entornos diferentes y se ha convertido en el producto líder de conmutación/enrutamiento de entrega garantizada de mensajes en la industria. [ 16 ]
MQ y servicios web
IBM MQ puede utilizarse como base para crear arquitecturas orientadas a servicios . Existen varias opciones de productos adicionales que ayudan a convertir programas heredados en servicios web funcionales mediante el uso de MQ. Las empresas grandes y heterogéneas suelen presentarse como una federación de dominios relativamente autónomos, basados en líneas de negocio, áreas funcionales o de gobernanza. En estos entornos, algunos servicios pueden compartirse o reutilizarse únicamente dentro de un dominio específico, mientras que otros pueden compartirse o reutilizarse en toda la empresa. IBM MQ proporciona los medios para que exista comunicación entre líneas de negocio o dominios empresariales independientes.
Un producto relacionado de la familia IBM MQ, llamado IBM App Connect Enterprise (anteriormente IBM Integration Bus / WebSphere Message Broker), ofrece un conjunto diverso y robusto de extensiones para arquitecturas basadas en colas. Mediante IBM Integration Bus, los usuarios pueden implementar una interfaz de servicios web con soporte para archivos WSDL que puede interactuar con cualquier aplicación basada en colas.
Véase también
Referencias
- ↑ "MA95: Una interfaz Rexx para WebSphere MQ, versión 1.0.2" (PDF) . IBM. 2010. Consultado el 24 de noviembre de 2024 .
- ↑ "IBM MQ 9.4 - Desarrollo de aplicaciones XMS .NET" . IBM. 2 de julio de 2024.
- ↑ "Acerca de IBM MQ" . www.ibm.com .
- ↑ "MQSeries - Extensión de Perl para soporte de MQSeries" . metacpan.org .
- ↑ "Documentación de PyMQI" . Archivado del original el 17 de enero de 2013. Consultado el 3 de septiembre de 2010 .
- ↑ "MO74: WebSphere MQ - Biblioteca de Windows Powershell" . IBM.
- ↑ "Colas distribuidas y clústeres " . www.ibm.com
- ↑ "IBM MQ Internet Pass-Thru" . www.ibm.com .
- ↑ "Alta disponibilidad nativa" . www.ibm.com . Consultado el 12 de mayo de 2026 .
- ↑ "Anuncio de IBM sobre IBM MQ 9.2" . International Business Machines (IBM). 21 de julio de 2020. Consultado el 22 de octubre de 2020 .
- ↑ "Anuncio de IBM sobre IBM MQ 9.1" . International Business Machines (IBM). 3 de julio de 2018. Consultado el 6 de agosto de 2018 .
- ↑ "Anuncio de IBM sobre IBM MQ en IBM Cloud" . International Business Machines (IBM) . Consultado el 6 de agosto de 2018 .
- ↑ "Anuncio de IBM sobre IBM MQ 9.0" . International Business Machines (IBM). 19 de abril de 2016. Consultado el 17 de junio de 2016 .
- ↑ "MQSeries para MVS/ESA Versión 1.2" . International Business Machines (IBM). 8 de julio de 1997. Consultado el 10 de diciembre de 2018 .
- ↑ "Soporte de IBM - Ciclo de vida del producto - Descripción general" . IBM.
- ↑ "IBM WebSphere MQ V7.1 se ha mejorado con un menor coste de propiedad, un retorno de la inversión más rápido y una seguridad más configurable" . Anuncio de software de IBM Estados Unidos 211-395 . IBM. 4 de octubre de 2011.
Enlaces externos
- Página del producto IBM MQ
- Middleware orientado a mensajes
- Transferencia de archivos gestionada