Pregunta

Si desea utilizar un producto de cola para mensajería duradera en Windows, ejecutando .NET 2.0 y superior, ¿qué alternativas a MSMQ existen actualmente?Conozco ActiveMQ (http://activemq.apache.org/), y he visto referencias a WSMQ (apuntando a http://wsmq.net), pero el sitio parece no funcionar.

¿Hay otras alternativas?

¿Fue útil?

Solución

No puedo empezar a decir lo suficiente sobre Tibco EMS, una implementación de la especificación de mensajería Java JMS.Tibco EMS tiene un excelente soporte para clientes .NET, incluido Compact Framework .NET en WinCE.(También tienen bibliotecas cliente C).

Entonces, si está creando una aplicación distribuida heterogénea que involucra código de mensajería que se ejecuta en Windows, Unix (AIX/Solaris), Linux o Mac OS X, entonces Tibco EMS es la solución.

Mira mi artículo aquí:

Uso de JMS para el desarrollo de software distribuido

Solía ​​​​trabajar en Microsoft e hice algunas implementaciones con MSMQ mientras estuve allí.Pero ya sabes, Microsoft sólo se preocupa por Windows.Dependían de terceros para proporcionar clientes MSMQ a otras plataformas.Mi encuentro con Tibco EMS fue una experiencia mucho mejor.Era muy evidente que Tibco entendía la mensajería mucho mejor que Microsoft.Y Tibco se esforzó en respaldar ellos mismos los diversos vínculos de sus clientes.Es por eso que finalmente cambiaron el nombre del producto de Tibco JMS a Tibco EMS (Enterprise Messaging Service).

Y construí sistemas de software heterogéneos en torno a Tibco EMS.Clientes C# .NET Winform rodados que interactúan con Java/JBoss de nivel medio a través de mensajería Tibco EMS.(Y también tenga computadoras industriales integradas WinCE que utilicen el cliente Compact Framework .NET Tibco).

Enlaces a mis escritos de JMS

Otros consejos

Puede que aquí no sea un consejo de "mejores prácticas"...pero basado en necesidades y experiencias de la vida real:Tenemos un sistema distribuido, 60 cajas que ejecutan cada 10 clientes, todas realizan la tarea X y necesitan tomar la siguiente tarea de una cola.La cola está siendo alimentada por otro "cliente"...

Habíamos utilizado comunicación entre procesos, utilizamos MSMQ, probamos el intermediario de servicios...Simplemente no funciona a largo plazo porque le estás dando el control de tu aplicación a Microsoft.Funciona muy bien siempre que se satisfagan sus necesidades.Se vuelve un infierno cuando necesitas algo que no es compatible.

La mejor solución para nosotros fue:Utilice una tabla de base de datos SQL como cola.No reinventes la rueda allí, ya que cometerás errores (bloqueos).Hay información sobre cómo hacerlo, es muy fácil y manejamos más de 200 000 mensajes cada 24 horas (con 60 x 10 = 600 lecturas y escrituras simultáneas en la cola).Eso es además del mismo servidor SQL que maneja el resto de la aplicación...

Algunas razones por las que MSMQ no funciona:

  1. Cuando necesita cambiar la lógica de la cola no a FIFO, sino a algo como "el mensaje ROJO más antiguo" o "el mensaje AZUL más antiguo", no puede hacerlo.(Sé lo que dirá la gente, puedes hacerlo teniendo un cola roja y un cola azul..Pero, ¿qué pasa si el número/tipos de colas es dinámico según la forma en que se administra la aplicación y cambia diariamente?)

  2. Agrega un punto de falla y una pesadilla de implementación (la cola es un punto de falla y usted debe lidiar con la configuración de los permisos correctos en todos los cuadros para leer/escribir mensajes, etc. En el software empresarial, se paga con sangre por este tipo de cosas). .Servidor SQL...Todos los clientes ya están escribiendo/leyendo desde la base de datos, es solo una tabla más.

El marco RabbitMQ parece haber sido pasado por alto aquí.Si a la gente todavía le importa, tiene una base de código .NET 2.0 y viene con un enlace WCF similar a netMsmqBinding.El enlace naturalmente requiere al menos .NET 3.0 y tiene más funciones que el netMsmqBinding integrado.Además de todo, es compatible con Mono.Vale la pena echarle un vistazo.

¿Qué pasa con SQL 2005? corredor de servicios?

¿Por qué no utilizar ActiveMQ?:)

Si el costo no es un problema (también hay un SKU Express) luego eche un vistazo al gorila de 800.000 libras.WebSphere MQ (Serie MQ).Se ejecuta prácticamente en cualquier plataforma y admite tantos administradores de colas y patrones de mensajería diferentes que realmente no es apropiado enumerarlos aquí.

Si la alta disponibilidad es importante, vale la pena considerar Amazon SQS.No hay muchos gastos generales adicionales si los mensajes provienen de diferentes ubicaciones físicas.¡Barato y escalable!

Redis es otra opción popular en esta plataforma.Consulte su implementación de colas basada en conjuntos y también el patrón Pub/Sub.parece promocional

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top