2008-12-30 17 views

Respuesta

38

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

Puede enviar objetos (serializados) a la cola donde permanecerán hasta que los reciba. Se utiliza normalmente para enviar mensajes u objetos entre las aplicaciones de una manera disociada

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

información sobre MSMQ:

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

Información sobre WebServices:

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

+3

El enlace de arriba en MSMQ no funcionaba (me redirigió a alguna página de información general), pero esta url funcionó para mí https://msdn.microsoft.com/en-us/library/ms711472(v=vs.85).aspx –

45

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 asincrónicas, mientras que los servicios web son sincrónicos. Usan diferentes protocolos y servicios de back-end para hacer esto, por lo que son completamente diferentes en la implementación, pero de propósito similar.

Es posible que desee utilizar las colas de mensajes cuando existe la posibilidad de que el otro proceso de comunicación no esté disponible, pero aún 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.

+4

Gracias por el respeto =) I ver MSMQ como una forma de enviar objetos desde la aplicación a la aplicación sin necesidad de una respuesta que pase datos para que la otra aplicación haga lo que quiera, y servicios web como una "llamada a una función remota" con parámetros y un resultado, utilicé cada uno para estos propósitos específicos – juan

20

Tenga en cuenta que puede utilizar 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 obtener más información, véase: http://msdn.microsoft.com/en-us/library/ms789048.aspx

Gestión

--larsw

27

cola transaccional 101

una cola transaccional es un sistema middleware que forma asíncrona enruta los mensajes de un tipo de otro 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 alguna parte. Ejemplos de tales sistemas son MSMQ y IBM MQ

Una cola transaccional también puede participar en un distributed transaction, y una reversión puede desencadenar la eliminación de mensajes.Esto significa que se garantiza que se entregará un mensaje con semántica at-most-once o entrega garantizada si no se revierte. El mensaje no será entregado si:

  • mensajes Host A el mensaje, pero 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 se deshace

En este caso, B nunca sabrá que el mensaje existió a menos que se lo haya informado a través de otro medio. Si la transacción se retrotrajo, probablemente esto no importe. Si B conecta y recopila el mensaje antes de retrotraer 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 a lo sumo entrega. Si la transacción se confirma, el Host A puede suponer que el mensaje ha sido delivered by the reliable transport medium.. Si la transacción se retrotrae, el Host A puede suponer que se han revertido los efectos del mensaje.

Servicios Web

Un servicio web es remote procedure call u otro servicio (por ejemplo RESTFul API's) publicado por un (típicamente) servidor HTTP. Es un protocolo de solicitud/respuesta sincrónico y no tiene garantía de entrega integrada en el protocolo. Depende del cliente validar que el servicio se haya ejecutado correctamente. Normalmente esto será a través de una respuesta a la solicitud o el tiempo de espera de la llamada.

En este último caso, los servicios web no garantizan a lo sumo la semántica. El servidor puede completar el servicio y no entregar una respuesta (posiblemente a través de algo fuera del servidor que sale mal). La aplicación debe ser capaz de manejar esta situación.

IIRC, los servicios REST deben idempotent (el mismo estado se alcanza después de cualquier número de invocaciones del mismo servicio), que es una estrategia para hacer frente a esta falta de notificación garantía de éxito/fracaso en las arquitecturas de servicios web . La idea es que conceptualmente uno escribe estado en lugar de invocar un servicio, por lo que uno 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.

2

Como todo el mundo ha explicado, MSMQ se usa como una cola de 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 eliminó con MSMQ 3.0. Message Middleware Middleware (MOM) es un concepto que depende en gran medida de la mensajería. La base de Enterprise Service Bus se basa en Messaging. Todas estas nuevas tecnologías dependen de la mensajería para la entrega de datos asíncrona con fiabilidad.

8

Actualmente 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 mapeada). es un servicio de Windows que se encarga de mantener los mensajes hasta que alguien los dequeue. puede 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, solo declare su objeto MessageQueue y llame a los métodos Receive y Send. El mensaje en sí puede ser una cadena normal o datos binarios.

0

MSMQ significa Microsoft Messaging Queue.

Es simplemente cola qué almacenar el mensaje en forma formateada para que pueda pasar a DB (puede en la misma máquina o en el servidor). Hay diferentes tipos de cola allí que categorizan el mensaje entre ellos. Si hay algún problema/error dentro del mensaje o si se pasa el mensaje no válido automáticamente irá a Dead Queue, que denota que no se procesa más. Pero antes de pasar el mensaje a la cola muerta, volverá a intentar la cuenta máxima y hasta que no se procese, entonces puede enviarla a la cola Muerta. Generalmente se utiliza para enviar mensajes de registro desde la máquina cliente al servidor o al DB, de modo que si hay algún problema en la máquina del cliente, el desarrollador o el equipo de soporte puede revisar el registro para resolver el problema. MSMQ es un servicio proporcionado por Microsoft para obtener un registro del archivo de registro y una solución fácil de usar usando el archivo de registro. Se obtiene mejor idea de este blog http://msdn.microsoft.com/en-us/library/ms711472(v=vs.85).aspx

1

MSMQ- Microsoft Message Queue Server: • MSMQ es una aplicación de cola de mensajes desarrollado por Microsoft. • Se implementó en sus sistemas operativos Windows Server. • Es un protocolo de mensajería que permite que las aplicaciones que se ejecutan en servidores/procesos separados se comuniquen de manera segura. • MSMQ se ha utilizado comúnmente en empresas para software creado. • MSMQ garantiza una entrega confiable colocando mensajes que no llegan a su destino previsto en una cola y luego reenviando una vez que se puede acceder al destino. • MSMQ también admite 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 surtan efecto. • La tecnología Message Queuing (MSMQ) permite que las aplicaciones que se ejecutan en diferentes momentos se comuniquen a través de redes heterogéneas y sistemas que pueden estar temporalmente fuera de línea. Los siguientes puertos se utilizan para las operaciones de Microsoft Message Queue Server: • TCP: 1801 • RPC: 135, 2101 *, 2103 *, 2105 * • UDP: 3527, 1801