2012-01-31 13 views
9

He visto muchas aplicaciones de socket en las que hay uso de MSMQ. Pero cuando entre en detalles, creo que podemos hacerlo sin MSMQ también, por lo que quiero saber cuál es el beneficio clave de MSMQ. ¿Por qué alguien debería usar MSMQ en su propia aplicación?Beneficios clave de MSMQ

+3

¿Está usted preguntando ¿por qué utilizar MSMQ para poner en cola el mensaje en lugar de algún otro mecanismo de puesta en cola, o por qué cola de mensajes en lugar de simplemente de paso ellos directamente al destino? –

+0

Algunas pistas que puedes encontrar aquí también http://bytes.com/topic/c-sharp/answers/254742-when-where-i-should-use-msmq –

Respuesta

19

MSMQ es una gran pieza de Windows. Es básicamente un message-oriented middleware que ayuda mucho en algunas arquitecturas de software.

Esto trata principalmente el caso de uso común de procesamiento de mensajes asíncronos: usted tiene un servicio Service1 que comunica (envía mensajes) con otra parte de la arquitectura de su software, digamos Service2.

Problema principal: ¿qué ocurre si Service2 deja de estar disponible de repente? ¿Se perderán los mensajes? Si usa MSMQ, no: Service1 enviará mensajes a una cola, y Service2 se descolará cuando esté disponible.

MSMQ resolverá siguientes problemas comunes:

  • indisponibilidad temporal de un servicio: los mensajes se conservan en el disco y serán quitados de ella cuando el servicio esté disponible de nuevo, por lo hay mensajes se pierden
  • como es totalmente asincrónico, ayudará mucho en el caso de puntual pico de carga: su Service2 no morirá bajo la carga pesada, solo dequeará y procesará los mensajes, uno tras otro

Pros de MSMQ vs otro orientado a mensajes middleware:

  • libre y construido en (incluido en Windows)
  • luz
  • buena integración con otros productos de Microsoft (por ejemplo, no es el System.Messaging espacio de nombres en .Net para tratar con MSMQ)
  • capacidades de supervisión (utilizando contadores perfmon: número de mensajes recibidos por segundo ...)
  • colas transaccionales
  • persistencia en el disco para que los mensajes no se pierden nunca
  • disponible a través de la red (colas remotas)
+4

¿Qué pasa si MSMQ de repente deja de estar disponible? no caemos en la misma trampa? – Storm

+0

@ ken2k ¿Para otorgar disponibilidad de ambos servicios, cada uno de ellos debe tener un MSMQ en el mismo servidor? ¿Entonces el Servicio 2 leería del MSMQ en el servidor del Servicio 1 y viceversa? –

+0

esta fue una gran respuesta, no puedo ver por qué @ ken2k no ha respondido a estos comentarios. –