2008-08-28 13 views
21

Estoy trabajando en un sistema de mensajes/notificación para nuestros productos. Los requisitos básicos son:Multidifusión, Mensajes, ActiveMQ vs. MSMQ?

  • dispara y olvida
  • conjunto persistente de mensajes, posiblemente la actualización, para permanecer allí hasta que el remitente dice que para eliminarlos

Las bibliotecas serán escritos 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.

Respuesta

22

estoy un poco parcial, ya que trabajo en ActiveMQ pero prácticamente todos los beneficios mencionados para MSMQ anteriores también se aplican a ActiveMQ realmente.

Algunos más beneficios de ActiveMQ incluyen

El principal inconveniente que mencionas 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, le recomiendo al menos considerar el uso del NMS API que, como usted dice, está integrado de maravilla 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 del 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 el código en una API patentada

13

Pros para MSMQ.

  • Está integrado en Windows
  • Es compatible con las transacciones, también soporta colas sin transacciones
  • Es muy fácil de configurar
  • Integración AD
  • Es rápido, pero se necesitaría para comparar ActiveMQ y MSMQ para su tráfico para saber cuál es más rápido.
  • .NET soporta natividad
  • Soporta dispara y olvida
  • Usted puede mirar en la cola, si usted tiene lectores que acaba de ver. no estoy seguro de si puede editar un mensaje en la cola.

Contras:

  • 4MB de tamaño límite mensaje
  • 2 GB cola límite de tamaño
  • elementos de la cola se llevan a cabo en el disco
  • No
  • una corriente de producto de MS, documentos son un poco dudoso, o ¿han sido unos años desde que lo usé?

Aquí es un buen blog para MSMQ

+0

MSMQ: los elementos de la cola solo se guardan en el disco si está utilizando mensajes duraderos. Supongo que lo mismo vale para ActiveMQ. –

3

Sugiero que eche un vistazo al 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 ofrece funciones amplias para toda la empresa, incluyendo sus requisitos como fire-forget y persistencia del mensaje usando el archivo/base de datos usando el 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 me proporcionan, usted realmente se sorprenderá.

3

Hay tantas opciones en esa arena ...

gratuito: MantaRay de igual a igual totalmente compatible con el sistema JMS. 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.

Paul/

7

Tome un vistazo a zeromq. Es una de las colas de mensajes más rápidas.