什么是Microsoft消息队列(MSMQ)? 它是如何工作的?

我需要使用MSMQ(Microsoft消息队列)。 它是什么,它是什么,它是如何工作的? 与networking服务有什么不同?

正如其名称所示,它只是一个队列pipe理器。

您可以将对象(序列化)发送到它们将保留的队列,直到您接收它们。 它通常用于以分离的方式在应用程序之间发送消息或对象

它与web服务无关,它们是两个不同的东西

有关MSMQ的信息

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

WebServices上的信息

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

对@ Juan的回答充分尊重,都是在两个断开的进程(即进程间通信通道(IPC))之间交换数据的方式。 消息队列是asynchronous的,而Web服务是同步的。 他们使用不同的协议和后端服务来做到这一点,所以他们在实现上完全不同,但目的相似。

当可能有其他通信过程可能不可用的情况下,您会希望使用消息队列,但您仍希望在客户select时发送消息。 交货将发生在另一端的进程何时醒来,并收到通知消息到达。

事务性队列pipe理101

事务队列是一个中间件系统,在任何给定的时间都可以连接或不连接的主机之间asynchronous地路由另一种消息。 这意味着它也必须能够坚持信息的某个地方。 这样的系统的例子是MSMQ和IBM MQ

事务队列也可以参与分布式事务 ,回滚可以触发消息的处理。 这意味着,如果不回滚,则保证消息以最多语义传递或保证传递。 如果出现以下情况,邮件将不会发送

  • 主机A发布消息,但主机B未连接

  • 一些东西(可能但不一定从主机A发起)回滚事务

  • B在事务回滚后连接

在这种情况下,B将永远不会意识到这个消息,除非通过其他媒介通知。 如果事务被回滚,这可能没有关系。 如果B在事务回滚之前连接并收集消息,则回滚也将消除B上消息的影响。

请注意,A可以将邮件发送到队列,保证最多一次发送。 如果交易被提交,则主机A可以认为该消息已经由可靠的传输介质传递。 如果事务被回滚,主机A可以认为消息的任何影响已经被颠倒过来。

网页服务

Web服务是由(通常)HTTP服务器发布的远程过程调用或其他服务(例如RESTFul API )。 这是一个同步的请求/响应协议,并没有内置到协议的交付保证。 客户端validation服务已正确运行。 通常这将通过对呼叫的请求或超时的回复。

在后一种情况下,Web服务并不能保证最多一次的语义。 服务器可以完成服务,并无法提供响应(可能通过服务器外部的某些东西出错)。 应用程序必须能够处理这种情况。

IIRC,RESTFul服务应该是幂等的(在同一服务的任何数量的调用之后实现相同的状态), 这是用于处理在Web服务体系结构中缺乏保证的成功/失败通知的策略。 这个想法在概念上是写状态而不是调用服务,所以可以写任何次数。 这意味着应用程序可以容忍缺乏关于成功的反馈,因为它可以重新尝试发布,直到从服务器获得“成功”消息。

请注意,您可以使用Windows Communication Foundation(WCF)作为MSMQ上的抽象层。 这给你一个服务的感觉 – 只有单向操作。

有关更多信息,请参阅: http : //msdn.microsoft.com/en-us/library/ms789048.aspx

–larsw

其实MSMQ和WebService没有关系。 使用MSMQ进行进程间通信(也可以使用套接字,Windows消息传递,映射内存)。 这是一个Windows服务,负责保持消息,直到有人出列。 你可以说它比sockets更可靠,因为消息存储在硬盘上,但比其他IPC技术慢。

你可以使用小行代码在dotnet中使用MSMQ,只需声明MessageQueue对象并调用ReceiveSend方法即可。 消息本身可以是正常的string或二进制数据。

谷歌search“MSMQ”前几个链接应该有帮助…

http://msdn.microsoft.com/en-us/library/ms711472(VS.85).aspx

http://www.microsoft.com/windowsserver2003/techinfo/overview/msmqfaq.mspx

http://en.wikipedia.org/wiki/Microsoft_Message_Queuing

更多信息请访问: http : //www.google.com/search?q=MSMQ

正如大家所解释的,MSMQ被用作消息队列。 消息可以封装实际的数据,对象和任何你可以序列化和发送的东西。 MSMQ有它自己的限制。 MSMQ 1.0和MSMQ 2.0具有4MB的消息限制。 MSMQ 3.0解除了这个限制。 面向消息的中间件(MOM)是一个很大程度上依赖于消息传递的概念。 企业服务总线基础build立在消息传递上。 所有这些新技术都依靠消息传递进行可靠的asynchronous数据传输。

MSMQ代表Microsoft消息队列。

它只是将消息以合适的方式存储在队列中,以便它可以传递到DB(可以在同一台机器上或在服务器上)。 在那里有不同types的队列,它们之间将消息分类。 如果在消息里面有一些问题/错误或者无效的消息在自动传递到死的队列,那么表示它不进一步处理。 但在将消息传递到死队列之前,它会重试最大计数,直到它不处理,然后将其发送到死队列。 一般用于从客户机向服务器或数据库发送日志消息,以便在客户机发生任何问题时,开发人员或支持团队可以通过日志解决问题。 MSMQ是Microsoft提供的用于获取日志文件logging的服务,使用日志文件易于获得解决scheme。 你从这个博客http://msdn.microsoft.com/en-us/library/ms711472(v=vs.85).aspx得到更好的主意

MSMQ- Microsoft消息队列:•MSMQ是Microsoft开发的消息队列实现。 它部署在Windows Server操作系统中。 •这是一种消息传递协议,允许运行在不同服务器/进程上的应用程序以安全方式进行通信。 •MSMQ通常在企业中用于构build软件。 •MSMQ通过将无法到达预定目的地的消息放入队列,然后在目标可达时重新发送,确保可靠的传送。 •MSMQ也支持事务。 它允许在多个队列上执行多个操作,并将所有操作包装在单个事务中,从而确保全部操作或全部操作都不会生效。 •消息队列(MSMQ)技术使处于不同时间运行的应用程序能够跨越可能暂时脱机的异构networking和系统进行通信。 以下端口用于Microsoft消息队列操作:?TCP:1801?RPC:135,2101 *,2103 *,2105 *?UDP:3527,1801