MOM: Middleware Orientado a Mensajes

Vamos a ir cerrando algunas cuestiones que dejamos abiertas el año pasado, y os debía una entrada acerca de este tipo de middleware que ya introdujimos en el mes de Noviembre. Si recordáis, el middleware de tipo RPC, al que ya dedicamos una entrada, soporta comunicaciones síncronas, pero hoy en día se requieren formas más dinámicas de comunicación entre aplicaciones y formas de interacción asíncrona. La interoperabilidad basada en mensajes no es nada revolucionario e incluso existen implementaciones de RPC que ofrecen comunicación asíncrona.

Pero un MOM (Message Oriented Middleware) utiliza los mensajes como método de integración y provee mecanismos para crear, manipular, almacenar y transmitir esos mensajes. Estos sistemas permiten que las aplicaciones intercambien información en forma de mensajes compuestos por cabeceras y datos.

En un MOM las aplicaciones intercambian mensajes a través de canales virtuales denominados destinations. Cuando se envía un mensaje no se envía a una aplicación concreta sino a un determinado destination. Las aplicaciones receptoras de los mensajes deben registrar su interés por recibir los mensajes dirigidos a un destination concreto.

Es decir, en un MOM los mensajes son enviados de forma asíncrona. El encargado de enviar el mensaje no tiene que esperar una respuesta, envía el mensaje y sigue procesando. Los mensajes son tratados como unidades auto-contenidas: contienen todos los datos necesarios para que puedan ser procesados.

De hecho, la abstracción más importane introducida por este tipo de middleware son las colas de mensajes, cuyos beneficios se pueden resumir en:

  • Los destinatarios controlan cuando procesar el mensaje.
  • No tienen que estar continuamente a la espera de mensajes, ni tsiquiera tienen que existir cuando se envía el mensaje.
  • Las colas pueden ser compartidas, se les puede asignar prioridades a los mensajes, etc.

Los mensajes suelen ser muy útiles para la actualización de información y para la sincronización y coordinación de procesos. Un MOM asegura que los mensajes son distribuidos adecuadamente entre las distintas aplicaciones y por lo general suele proporcionar otras funcionalidades importantes como:

  • Tolerancia a fallos.
  • Transacciones.
  • Escalabilidad.

Las distintas implementaciones actuales de MOM están basadas en diferentes arquitecturas, desde arquitecturas con un servidor de mensajes centralizado hasta arquitecturas descentralizadas que distribuyen el proceso entre los clientes. En cualuier caso, un sistema de mensajería esta siempre compuesto por los clientes y el propio MOM, entendiendo como cliente cualquier aplicación que envíe o reciba mensajes del MOM.

Los siguientes productos son ejemplos de distintas implementaciones de un sistema MOM:

  • IBM: MQSeries .
  • Progress: SonicMQ .
  • Fiorano: FioranoMQ.
  • Softwired: iBus .
  • Sun Microsystems: Java Message Queue .
  • BEA: WebLogic Server.
  • ExoLab:OpenJMS.

No hay comentarios: