¿Multidifusión, mensajería, ActiveMQ vs. MSMQ?
messaging (5)
Pros para MSMQ.
- Está integrado en Windows
- Admite transacciones, también admite colas sin transacciones
- Es realmente fácil de configurar
- Integración AD
- Es rápido, pero necesitaría comparar ActiveMQ y MSMQ para su tráfico para saber cuál es más rápido.
- .NET lo soporta natividad
- Apoya el fuego y olvídate
- Puedes echar un vistazo a la cola, si tienes lectores que simplemente miran. no estoy seguro de si puede editar un mensaje en la cola.
Contras:
- Límite de tamaño del mensaje de 4MB
- Límite de tamaño de cola de 2GB
- Los elementos de cola se guardan en el disco
- No es un producto convencional de MS, los documentos son un poco dudosos, o han sido algunos años desde que lo usé.
Aquí hay un buen blog para MSMQ
Estoy trabajando en un sistema de mensajes / notificación para nuestros productos. Los requisitos básicos son:
- Dispara y olvida
- Conjunto persistente de mensajes, posiblemente actualizando, para permanecer allí hasta que el remitente diga que los elimine
Las bibliotecas estarán escritas en C #. Spring.NET acaba de lanzar una compilación de hitos con una gran cantidad de abstracción agradable de mensajes, que es genial, planeo usarla extensamente. Mi pregunta básica se reduce a la cuestión de los intermediarios de mensajes. Mi arquitectura se parecerá a la aplicación -> Message Broker queue -> aplicación de servidor que escucha, envía todos los mensajes a donde necesitan ir y maneja el ciclo de vida de esos mensajes de larga duración -> message broker queue o topic -> listening aplicaciones.
Finalmente, la pregunta: ¿Qué agente de mensajes debería usar? Estoy predispuesto hacia ActiveMQ : lo usamos en nuestro último proyecto y nos encantó. Realmente no puedo pensar en un solo ataque contra él, excepto que es Java, y requerirá que java esté instalado en un servidor en alguna parte, y eso podría ser difícil para algunas de las personas que usarán este servicio. La otra opción que he estado viendo es MSMQ. Estoy predispuesto en contra de ella por algún motivo desconocido, y tampoco parece tener un gran soporte de multidifusión.
Alguien ha usado MSMQ para algo como esto? ¿Algún pros o contra, cosas que puedan influir en el voto de una forma u otra?
Una última cosa, estamos usando .NET 2.0.
Soy un poco parcial ya que trabajo en ActiveMQ, pero casi todos los beneficios enumerados anteriormente para MSMQ también se aplican realmente a ActiveMQ.
Algunos beneficios más de ActiveMQ incluyen
- excelente soporte para acceso de cliente de lenguaje cruzado y soporte de múltiples protocolos
- excelente soporte para patrones de integración empresarial
- un montón de funciones avanzadas como colas exclusivas y grupos de mensajes
La desventaja principal que menciona es que el intermediario ActiveMQ está escrito en Java; pero puede ejecutarlo en IKVM como un ensamblado .NET si realmente lo desea, o ejecutarlo como un servicio de Windows, o compilarlo en un DLL / EXE a través de GCJ. MSMQ puede o no estar escrito en .NET, pero realmente no importa cómo se implementó, ¿verdad?
Independientemente de si elige MSMQ o ActiveMQ, lo recomendaría, al menos, considerar el uso de la API de NMS que, como dicen, se integra muy bien en Spring.NET. Hay una implementación de MSMQ de esta API, así como implementaciones para TibCo, ActiveMQ y STOMP que admitirán cualquier otro proveedor de JMS a través de StompConnect .
Por lo tanto, al elegir NMS como su API evitará el bloqueo de cualquier tecnología patentada, y luego podrá cambiar fácilmente de proveedor de mensajería en cualquier momento; en lugar de bloquear tu código en una API propietaria
Sugiero que eche un vistazo a TIBCO Enterprise Messaging Service - EMS, que es un producto de mensajería de alto rendimiento que admite multidifusión, enrutamiento, admite la especificación JMS y proporciona funciones amplias para toda la empresa, incluidos sus requisitos como olvido de incendios y persistencia de mensajes utilizando archivos / bases de datos utilizando estado compartido.
Como referencia, FEDEX se ejecuta en TIBCO EMS como su infraestructura de mensajería.
http://www.tibco.com/software/messaging/enterprise_messaging_service/default.jsp
Hay muchas otras referencias si las proporciono, realmente te sorprenderías.
Eche un vistazo a zeromq . Es una de las colas de mensajes más rápidas.
Hay tantas opciones en esa arena ...
Gratis: MantaRay, un sistema compatible con JMS totalmente entre pares. La parte interesante de Mantaray es que solo necesita definir a dónde va el mensaje y MantaRay lo enruta de todos modos que enviará su mensaje a su detinación, por lo que es más resistente a las fallas de los nodos individuales en su estructura de mensajes.
Pagado: en mi trabajo diario administro un sistema de mensajería IBM WebSphere MQ con varios cientos de nodos y he encontrado que es muy bueno. Recientemente, también compramos Tibco EMS y parece que será muy agradable de usar también.
Pablo/