WebSphere MQ Low Latency Messaging - ¿Tiene un JMS (o JMS como API)?
Pregunta
Actualmente estamos utilizando IBM MQ a través de JMS, pero parecen estar empujando a través de varios mensajes de lo que puede manejar -. Curiosamente, el problema parece ser intermitente
Los mensajes son los precios y por lo tanto no necesita ser garantizado, sólo es necesario enviar rápidamente.
Como IBM tienen una Baja Latencia producto, lo pregunto si eso es tal vez la mejor solución -. pero no parecen tener un API de JMS, o al menos no fácilmente visible
Alguien sabe si hay una API de JMS en el producto de baja latencia, o si la API "único" que sí tiene es JMS-como ...
Como alternativa, los punteros para el ajuste de MQ también sería apreciada ...:)
Solución
Sin duda, un producto de mensajería de baja latencia sería más adecuado a su problema, estoy trabajando en un proyecto en el que hacemos algo muy similar usando un producto de mensajería de baja latencia llamada de LBM 29West. No tiene una API de JMS y sospecho que la mayoría de los productos en el espacio de baja latencia no lo hará. Hay un gran número de características que no tienen sentido en combinación con estos tipos de productos (por ejemplo, la persistencia, selectores, etc.). Hemos encontrado que escribir nuestra propia API simple a través de la parte superior del producto de mensajería a ser bastante fácil y da uso de la flexibilidad de cambiar los productos más tarde y nos libera de parte de la masa y nivel de detalle de la API de JMS.
Otra opción a considerar sería JGroups .
29West han añadido soporte JMS a su línea de productos de mensajería.
Otros consejos
En cuanto a "punteros para el ajuste de MQ", en la SupportPacs página hay evaluaciones de desempeño por plataforma con recomendaciones específicas. Desplazarse hacia abajo a los SupportPacs nombrados MP * y buscar la versión y plataforma adecuada. Una variedad de escenarios se prueban con mensajes grandes y pequeñas, persistentes y no persistentes, variaciones sobre el número de getter y putters, etc.
Como ex desarrollador para el producto LLM puedo decir que lo hace o por lo menos lo hizo. Vea a continuación un extracto Tomé del centro de información públicamente disponible para la versión 2.6
Dicho esto, de lo que recuerdo todo el punto de MQ era entrega garantizada . Hay un tiempo y un lugar para esto, pero tiene un costo en términos de latencia y ancho de banda.
LLM tiene un propósito diferente fundamentalmente; se ha entrega confiable : es decir, si no puede entregar simplemente sabrá que no pudo entregar. Recuperabilidad de estos mensajes sólo está limitada por la cantidad que está dispuesto a guardar en caché o su recuperación desde el disco y por lo tanto el tiempo que están dispuestos a tolerar la espera de la recuperación mientras que soporta el proceso .. En su caso, es posible que no se preocupa de recuperar. Ya sea LLM es adecuado para usted o no, no se puede especular. Lo que puedo decir es que desde mi punto de vista como desarrollador pasado y más tarde como un cliente, me encontré con poca o ninguna semejanza entre los dos, y el rendimiento de LLM para este tipo de aplicación MQ sopló fuera del agua por completo. También nunca usó el lado java / jms mucho y estaba centrado en C / C ++ por lo que tomar esto con un grano de sal. Sólo sabía que lo hizo y dónde buscar en Google.
Paquete com.ibm.llm.jms Descripción
Implementar el proveedor de clases públicas específicas para el cliente LLM JMS.
La mayoría de las interfaces utilizadas en JMS se definen por la JMS común interfaces. Sin embargo, la especificación JMS no incluye la las clases y las interfaces necesarias para configurar el cliente JMS.
Consulte la documentación de la API de JMS para obtener información acerca de las clases JMS y métodos.
Introducción
El cliente LLM JMS proporciona una interfaz Java Message Service (JMS) a LLM. Mediante la interfaz de JMS a LLM permite una interfaz común con otros proveedores de mensajería y aplicación de velocidades de desarrollo por parte permitiendo a los desarrolladores usar interfaces que están familiarizados. Utilizando la interfaz JMS funciona mejor para las aplicaciones que utilizan genérica función de mensajería en la que los ajustes se pueden administrar de forma centralizada. Esto incluye muchas aplicaciones cliente tradicionales. El cliente JMS LLM no funciona tan bien en que la aplicación depende de LLM funciones específicas o que requieren aplicación significativa interacción con LLM. Si bien hay cierta latencia añadida mediante el uso de la interfaz JMS, todavía proporciona muy baja latencia y alto rendimiento mensajería.
El cliente LLM JMS soporta la mayoría función de cliente LLM, pero no lo hace apoyar la función de servidor de funcionamiento dentro de un nivel de, o ser una carga transmisor equilibrio.
LLM se basa en hacer productor directo a la mensajería consumidor. JMS es normalmente implementado utilizando un servidor de mensajes y la función JMS que requiere que el servidor de mensajes no está disponible cuando se utiliza el LLM JMS cliente. Esto incluye todos los mensajes de punto a punto (colas), así una la función de recuperar. El cliente LLM JMS está diseñado para funcionar en un JSE medio ambiente y no soporta las extensiones de servidor de aplicaciones o XA transacciones.
Como los implementos LLM JMS cliente JMS
El cliente LLM JMS implementa cada uno de los objetos JMS fundamentales con una clase de implementación que no está expuesta externamente. los subclases de estos objetos se implementan utilizando el mismo clase de implementación. Esto significa que sólo hay dos administrarse objetos, ConnectionFactory y Destino. Un LLM definido ConnectionFactory se puede convertir a TopicConnectionFactory y QueueConnectionFactory, y un LLM definido Destino se puede convertir a Tema y cola. Lo mismo es cierto para la conexión, la sesión, MessageProducer y MessageConsumer. El objeto de destino de una proveedor debe ser utilizado con una conexión por el mismo proveedor. Sin embargo, es posible enviar un mensaje producido por un proveedor de JMS para otro proveedor de JMS. El envío de un mensaje creado por otro JMS proveedor no es tan eficiente como el envío de un mensaje creado por el LLM cliente JMS, pero esta función se proporciona para hacer más fácil para una aplicación a un puente de un proveedor a otro.
El cliente LLM JMS no implementa la mensajería punto a punto modelo (colas), pero todos los objetos JMS pueden ser creados.
El cliente LLM JMS requiere una JVM de al menos Java 5.
El cliente LLM JMS define todos los objetos de tipo seis de mensajes (Mensaje, BytesMessage, MapMessage, ObjectMessage, StreamMessage, y Mensaje de texto). Al enviar un mensaje de JMS de JMS, la cabecera JMS indica el tipo de mensaje. Si la cabecera JMS es que falta (que es común cuando se envía un mensaje de un productor no de JMS) el LLM JMS cliente intenta deducir el tipo del mensaje del contenido. Normalmente, el mensaje aparecerá como un BytesMessage, pero si el mensaje comenzar con una lista de materiales UTF-8 o XML parece ser que será interpretado como un mensaje de texto. De mensajes de texto se supone que ha de codificarse en UTF-8 ......