IBM MQ es una familia de productos de middleware de mensajería que IBM lanzó en diciembre de 1993. IBM MQ fue originalmente llamado MQSeries, y fue rebautizado como WebSphere MQ en 2002 para unificar un conjunto de productos en la suite WebSphere. En abril de 2014, volvió a cambiar de nombre a IBM MQ. Los productos que está incluidos en la familia MQ son IBM MQ, IBM MQ Advanced, IBM MQ Appliance, IBM MQ para z/OS, e IBM MQ en IBM Cloud.
MQ permite que aplicaciones independientes y potencialmente no concurrentes en un sistema distribuido puedan comunicarse con seguridad con otras, usando mensajes. MQ está disponible sobre un gran número de plataformas (tanto IBM como no IBM), incluyendo z/OS (mainframe), OS/400 (IBM System i o AS/400), TPF, UNIX (AIX, HP-UX, Solaris), HP NonStop, OpenVMS, Linux, y Windows de Microsoft.
Componentes MQ Los componentes core de MQ son los siguientes:
Mensaje: Los mensajes son colecciones de datos binarios o de carácter (para caso ASCII o EBCDIC) que tienen algún significado para un programa participante. Al igual que en otros protocolos de comunicaciones, acciones de almacenamiento, encaminamiento, y entrega de información son añadidas al mensaje antes de que transmisión y retirados del mensaje antes de su entrega a la aplicación receptora. Cola: Las colas de mensajes son objetos que almacenan mensajes en una aplicación. Gestor de colas: Se refiere a un servicio del sistema que provee un contenedor lógico para la cola de mensajes. Es responsable de transferir los datos a otro gestor de colas vía canales de mensajería. A pesar de que no es estrictamente requerido para los middleware de mensajería, sí lo es para IBM MQ. Los gestiones de colas gestionan almacenamiento, temporalidad de eventos, triggering, y todas las otras funciones no directamente relacionadas al propio movimiento de datos.
Los programas integrados con IBM MQ usan una interfaz de programa de aplicación (API) consistente y compatible a través de todas las plataformas para las que está disponible.
Tipos de mensajería MQ soporta mensajerías de los tipos punto-a-punto y Publicar-Suscribir.
API Las API directamente soportadas por IBM incluyen las siguientes tecnologías:
IBM Message Queue Interface (MQI) para C, COBOL, PL/I, Java, Rexx, RPG, y C++ Java Servicio de mensaje (JMS) XMS para C/C++ y .NET .NET Transferencia de Estado Representacional SOAP
API adicionales (no soportadas oficialmente), disponible vía terceros, incluye lo siguiente:
Perl (desarrollado por Hildo Biersma), disponible de CPAN.MQSeries - Perl extension for MQSeries support - search.cpan.org Python (lenguaje de programación) interfaz PyMQI (originalmente desarrollado por Les Smithson), disponible de PyPI Windows PowerShell
Características One-time delivery: MQ realiza entregas de una sola vez. Esta calidad del servicio típicamente previene pérdida de mensajes o duplicidades.
Mensajería asíncrona: MQ provee a los diseñadores de aplicaciones un mecanismo para conseguir una arquitectura sin dependiente del tiempo. Los mensajes se pueden enviar de una aplicación a otra, sin importar sin las aplicaciones están en ejecución al mismo tiempo. Si una aplicación receptora de mensajes no está en ejecución cuando un enviador envía un mensaje, el Gestor de colas contendrá el mensaje hasta que el receptor lo pida. El orden de todos los mensajes queda preservado, por defecto, esto es en orden FIFO de recepción en la cola local dentro de la prioridad del mensaje.
Transformación de datos: Por ejemplo, de Big Endian a Little Endian, o EBCDIC a ASCII. Esto se consigue a través del uso de salidas de datos del mensaje. Las salidas son aplicaciones compiladas que se ejecutan en el Gestor de colas anfitrión, y son ejecutados por el software IBM MQ en el momento que se requiere la transformación de los datos.
Framework de arquitectura dirigido por mensajes: IBM MQ permite recibir mensajes para gatillar la ejecución de otras aplicaciones.Gama de API: Se implementa el Java Message Service (JMS) API estándar, y también tiene su propio API propietario, conocido como la interfaz de encolamiento de mensajes (MQI), el cual precedió al JMS en algunos años de existencia. A partir de la versión 8.0.0.4, MQ también soporta la API MQ Light.Clustering: Múltiples implementaciones MQ comparten el procesamiento de mensajes, proporcionando equilibrado de carga.
Comunicación Los Gestores de colas se comunican con el mundo exterior a través de los siguientes mecanismos:
Bindings: Una conexión directa de software. Generalmente más rápida, pero limitada a los programas que corren en el mismo anfitrión físico que el Gestor de colas. Una conexión de red o "cliente": Las aplicaciones que utilizan una conexión cliente puede conectarse a un Gestor de colas en cualquier otro anfitrión en la red. La localización física del Gestor de colas es entonces irrelevante, mientras sea alcanzable a través de la red.
Comunicación entre Gestores de colas Esto se apoya en 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; un segundo canal es requerido para devolver los datos. En una red basada en TCP/IP, un canal envía o recibe datos en un puerto específico.
Tipos de canal:
Canal de envío: Tiene un destino definido y está asociado con una cola de transmisión específica (el mecanismo por el cual los mensajes esperan la transmisión sobre el canal). Canal de recepción: Recibe los datos desde cualquier otro Gestor de colas con una canal de envío del mismo nombre.
Cuando un canal de recepción recibe un mensaje, este es examinado para ver qué Gestor de colas y Cola es la destinataria. En el evento de un fallo en la comunicación, MQ puede restablecer automáticamente una conexión en cuanto se resuelve el problema.
El listener es la interfaz de red de la aplicación hacia el Gestor de colas. El listener detecta conexiones desde canales entrantes, y gestiona la conexión de los canales de envío hacia los canales de recepción. En una red TCP/IP, el listener "escuchará" las conexiones en un puerto específico.
Transmisión de datos de una cola a otro Gestor de colas Tipos de colas:
Cola local: representa la localización de los datos que están almacenados y a la espera de su procesamiento. Cola remota: representa una cola en otro Gestor de colas. La misma define la cola de destina, el cual es un elemento del mecanismo de encaminamiento de mensajes. Clúster de colas: representa una cola que es alcanzable vía cualquier Gestor de colas en su clúster.
Un mensaje es colocado en una cola remota. Los mensajes van a una cola de transmisión de almacenamiento temporal asociada con un canal. Al colocar un mensaje en una cola remota, el mensaje es transmitido a través del canal remoto. Si la transmisión es exitosa, el mensaje queda eliminado de la cola de transmisión. En la recepción del mensaje, el Gestor de colas receptor examina los mensajes para determinar si es mensaje es para sí mismo o si debe ir a otro Gestor de colas. Si el Gestor de colas es el receptor, la cola requerida será revisada, y si existe, el mensaje es colocado en esta cola. Si no, el mensaje es colocado en la dead letter queue. MQ tiene características para gestionar de forma eficiente la transmisión de datos sobre una variedad de medios de comunicación. Por ejemplo, los mensajes pueden ser agrupados juntos hasta una cola alcance una profundidad en particular.
Ordenamiento A pesar de que la cola es FIFO, está ordenada sobre la base de la recepción en la cola local, no el compromiso del mensaje desde el enviador. Los mensajes pueden ser priorizados, y por defecto, la cola está priorizado por orden de llegada. Las colas solo estarán en secuencia de adición si el mensaje es añadido localmente. Se puede usar el agrupamiento de mensajes para asegurar que un conjunto de mensajes está en un orden específico. A la par, en caso la secuencia sea crítica, es responsabilidad de la aplicación el colocar la secuencia de datos en el mensaje o implementar un mecanismo de handshaking vía una cola de retorno. En la realidad, el ordenamiento será mantenido en configuraciones normales.
El registro (log) El otro elemento de un Gestor de colas es el registro de log. Cuando el mensaje es colocado en una cola o se realiza un cambio en la configuración, los datos también son registrados en el log. Ante un evento de fallo, el log es usado para recrear objetivos dañados y recrear mensajes. Solo los mensajes persistentes son recreados cuando un ocurre un fallo, los mensajes no persistentes se pierden. Los mensajes no persistentes pueden ser enviados a través de un canal configurado con un modo rápido, en el que la entrega no está asegurada en el caso de un fallo en el canal.
MQ soporta tanto registro en log circular y lineal.
Recuperación de mensajes de las colas La información puede ser recuperada desde las colas, bien vía polling de la cola para revisar por datos disponibles en intervalos apropiados, o bien, alternativamente, MQ puede provocar un evento, permitiendo a la aplicación cliente responder a la entrega de un mensaje.
Disponibilidad IBM MQ ofrece una variedad de soluciones para proveer disponibilidad sobre las aplicaciones que se desarrollen:
Replicated Dato Queue Director (RDQM / 'Easy HA'- MQ Advanced on distributed only): Replicación síncrona entre tres servidores que comparten entre todos una dirección de IP flotante.
Clúster de Gestor de colas: Los grupos de dos o más gestores de colas sobre uno o más servidores son definidos como un clúster, proporcionando interconexión automática, y permitiendo que las colas se compartan entre ellas para equilibrado de carga y redundancia.
Compartición de grupos de colas (solo z/OS ): En un entorno de colas compartidas, una aplicación puede conectar a cualquiera de los Gestores de colas dentro del grupo de compartición de colas. Dado que todos los Gestores de colas en el grupo de compartición de colas pueden acceder al mismo conjunto de compartido colas, la aplicación no depende de la disponibilidad de un Gestor de colas en particular. Esto da una gran disponibilidad si un Gestor de colas se detiene, porque todos los otros Gestores de colas en el grupo puede continuar procesando la cola.
Multi-instance Queue Maganers (disponibles desde v7.0.1): Instancias del mismo Gestor de colas son configurados en dos o más servidores con sus colas y sus metadatos residiendo en un almacenamiento compartido. Al iniciar múltiples instancias, una instancia se vuelve la instancia activa y las otras se ponen en espera. Si la instancia activa falla, una instancia en espera que se esté ejecutando en un servidor diferentes, automáticamente toma el control.
Historia
Fechas de liberación de la versión