Pregunta

Necesito trabajar con MSMQ (Microsoft Message Queue Server). ¿Qué es, para qué sirve, cómo funciona? ¿En qué se diferencia de los servicios web?

¿Fue útil?

Solución

Como su nombre lo indica, es solo un administrador de colas.

Puede enviar objetos (serializados) a la cola donde permanecerán hasta que los reciba. Normalmente se utiliza para enviar mensajes u objetos entre aplicaciones de forma desacoplada

No tiene nada que ver con los servicios web, son dos cosas diferentes

Información en MSMQ :

https://msdn.microsoft.com /en-us/library/ms711472(v=vs.85).aspx

Información sobre servicios web :

http://msdn.microsoft.com/en-us/library/ ms972326.aspx

Otros consejos

Con el debido respeto a la respuesta de @Juan, ambas son formas de intercambiar datos entre dos procesos desconectados, es decir, canales de comunicación entre procesos (IPC). Las colas de mensajes son asíncronas, mientras que los servicios web son síncronos. Usan diferentes protocolos y servicios de back-end para hacer esto, por lo que son completamente diferentes en la implementación, pero tienen un propósito similar.

Desearía usar colas de mensajes cuando exista la posibilidad de que el otro proceso de comunicación no esté disponible, pero aún así desea que el mensaje se envíe en el momento que el cliente elija. La entrega se producirá cuando el proceso en el otro extremo se active y reciba una notificación de la llegada del mensaje.

Gestión de colas transaccionales 101

Una cola transaccional es un sistema de middleware que enruta de forma asíncrona mensajes de una clase de otra entre hosts que pueden o no estar conectados en un momento dado. Esto significa que también debe ser capaz de persistir el mensaje en algún lugar. Ejemplos de tales sistemas son MSMQ y IBM MQ

Una cola de transacciones también puede participar en una transacción distribuida , y una reversión puede provocar la eliminación de mensajes. Esto significa que se garantiza que un mensaje se entregue con semántica a lo más una vez O entrega garantizada si no se deshace. El mensaje no se entregará si:

  • El Host A publica el mensaje pero el Host B no está conectado

  • Algo (posiblemente pero no necesariamente iniciado desde el host A) deshace la transacción

  • B se conecta después de que la transacción es     enrollado hacia atrás

En este caso, B nunca sabrá que el mensaje existió a menos que se haya informado a través de algún otro medio. Si la transacción se revirtió, esto probablemente no importa. Si B se conecta y recopila el mensaje antes de que se revierta la transacción, la reversión también revertirá los efectos del mensaje en B.

Tenga en cuenta que A puede publicar el mensaje en la cola con la garantía de entrega a lo más una vez. Si la transacción está confirmada, el Host A puede asumir que el mensaje ha sido entregado por el medio de transporte confiable. Si la transacción se revierte, el Host A puede asumir que cualquier efecto del mensaje se ha revertido.

Servicios web

Un servicio web es llamada a procedimiento remoto u otro servicio (por ejemplo, RESTFul API's ) publicado por un servidor HTTP (típicamente). Es un protocolo de solicitud / respuesta síncrono y no tiene garantía de entrega integrada en el protocolo. Es responsabilidad del cliente validar que el servicio se haya ejecutado correctamente. Normalmente, esto se realizará mediante una respuesta a la solicitud o el tiempo de espera de la llamada.

En este último caso, los servicios web no garantizan, como máximo, una semántica. El servidor puede completar el servicio y no entregar una respuesta (posiblemente porque algo fuera del servidor no funciona). La aplicación debe ser capaz de lidiar con esta situación.

IIRC, los servicios RESTFul deben ser idempotentes (el mismo estado se logra después de cualquier número de invocaciones del mismo servicio), que es una estrategia para hacer frente a esta falta de notificación garantizada de éxito / fracaso en arquitecturas de servicios web. La idea es que conceptualmente se escribe un estado en lugar de invocar un servicio, por lo que se puede escribir cualquier número de veces. Esto significa que la aplicación puede tolerar la falta de comentarios sobre el éxito, ya que puede volver a intentar la publicación hasta que reciba un mensaje de "éxito" del servidor.

Tenga en cuenta que puede usar Windows Communication Foundation (WCF) como una capa de abstracción por encima de MSMQ. Esto le da la sensación de trabajar con un servicio, con solo operaciones unidireccionales.

Para más información, vea:   http://msdn.microsoft.com/en-us/library/ms789048.aspx

--larsw

En realidad no hay relación entre MSMQ y WebService. Uso de MSMQ para la comunicación entre procesos (también puede usar sockets, mensajes de Windows, memoria asignada). es un servicio de Windows que se encarga de mantener los mensajes hasta que alguien los saque de la cola. puedes decir que es más confiable que los sockets ya que los mensajes se almacenan en un disco duro pero es más lento que otras técnicas de IPC.

Puede usar MSMQ en dotnet con pequeñas líneas de código, simplemente declare su objeto MessageQueue y llame a Receive y Send . El mensaje en sí puede ser una cadena normal o datos binarios.

Como todos han explicado, MSMQ se utiliza como una cola para mensajes. Los mensajes pueden ser envoltorios para datos reales, objetos y cualquier cosa que pueda serializar y enviar a través del cable. MSMQ tiene sus propias limitaciones. MSMQ 1.0 y MSMQ 2.0 tenían un límite de mensajes de 4MB. Esta restricción se levantó con MSMQ 3.0. Middleware orientado a mensajes (MOM) es un concepto que depende en gran medida de la mensajería. La base de Enterprise Service Bus se basa en la mensajería. Todas estas nuevas tecnologías dependen de la mensajería para la entrega asíncrona de datos con confiabilidad.

MSMQ- Microsoft Message Queue Server: & # 8226; MSMQ es una implementación de cola de mensajes desarrollada por Microsoft. & # 8226; Se implementó en sus sistemas operativos Windows Server. & # 8226; Es un protocolo de mensajería que permite que las aplicaciones que se ejecutan en servidores / procesos separados se comuniquen de manera segura. & # 8226; MSMQ se ha utilizado comúnmente en la empresa para el software construido. & # 8226; MSMQ garantiza una entrega confiable al colocar en la cola los mensajes que no llegan a su destino deseado y luego reenviarlos una vez que el destino sea accesible. & # 8226; MSMQ también soporta transacciones. Permite múltiples operaciones en múltiples colas, con todas las operaciones envueltas en una sola transacción, asegurando así que todas o ninguna de las operaciones entrarán en vigencia. & # 8226; La tecnología de Message Queue Server (MSMQ) permite que las aplicaciones que se ejecutan en diferentes momentos se comuniquen a través de redes y sistemas heterogéneos que pueden estar temporalmente fuera de línea. Los siguientes puertos se utilizan para las operaciones de Microsoft Message Queue Server: & # 8226; TCP: 1801 & # 8226; RPC: 135, 2101 *, 2103 *, 2105 * & # 8226; UDP: 3527, 1801

MSMQ significa Microsoft Messaging Queue.

Es simplemente la cola que almacena el mensaje en forma formateada para que pueda pasar a la base de datos (puede estar en la misma máquina o en el servidor). Hay diferentes tipos de colas por ahí que clasifican el mensaje entre sí. Si hay algún problema / error dentro del mensaje o se pasa un mensaje no válido, pasa automáticamente a la cola muerta, lo que indica que no es un proceso posterior. Pero antes de pasar el mensaje a la cola muerta, reintentará el recuento máximo y hasta que no se procese, puede enviarlo a la cola muerta. Por lo general, se usa para enviar mensajes de registro desde la máquina cliente al servidor o la base de datos, de modo que si ocurre algún problema en la máquina cliente, el desarrollador o el equipo de soporte pueden revisar el problema para resolver el problema. MSMQ es un servicio proporcionado por Microsoft para obtener un registro del archivo de registro y fácil de obtener una solución utilizando el archivo de registro. Obtienes una mejor idea de este blog http: // msdn .microsoft.com / en-us / library / ms711472 (v = vs.85) .aspx

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