消息队列(也称为 MSMQ)是一种消息基础结构和开发工具,用于创建 Microsoft Windows 的分布式消息应用程序。为消息队列开发的应用程序将消息发送到队列,队列是临时存储位置,如果条件允许,消息可以继续到达其最后目标位置。此类应用程序可以在异类网络之间通信,可以在可能暂时无法连接到另一台计算机的计算机之间发送消息。消息队列提供了以下好处:

  • 保证的消息传递

  • 高效路由

  • 提高的安全性

  • 支持发送事务中的消息

  • 基于优先级的消息传递

具有以上功能的软件产品通常在行业中称为:

  • 消息队列软件

  • 存储和转发软件

  • 面向消息的中间件

借助消息队列,最终用户可以在可能处于脱机状态的网络和计算机之间通信,而不管网络和计算机的当前状态如何。系统管理员可以使用消息队列高效地管理大型、复杂的计算机网络和消息队列。

本主题介绍可用于消息队列的功能。

消息队列服务器

该功能是消息队列的核心组件,使用它可以执行基本的消息队列功能。有关消息队列服务器功能的详细信息,请参阅“什么是消息队列”(https://go.microsoft.com/fwlink/?LinkId=93512)(可能为英文网页)。

目录服务集成

使用此功能可将队列属性发布到 Active Directory,使用在 Active Directory 中注册的证书体验全新的身份验证和消息加密,并在多个站点之间路由消息。有关目录服务集成功能的详细信息,请参阅“目录服务集成功能”(https://go.microsoft.com/fwlink/?LinkId=93513)(可能为英文网页)。

消息队列触发器

此功能实现根据您为给定队列中的传入消息定义的筛选器来调用 COM 组件或可执行文件。有关消息队列触发器功能的详细信息,请参阅“触发器概述”(https://go.microsoft.com/fwlink/?LinkId=93514)(可能为英文网页)。

HTTP 支持

使用此功能可以通过 HTTP 发送和接收消息。有关 HTTP 支持功能的详细信息,请参阅“Internet 消息”(https://go.microsoft.com/fwlink/?LinkId=93515)(可能为英文网页)。

多播支持

使用此功能可以将多播消息排队并发送到多播 IP 地址。有关多播支持功能的详细信息,请参阅“IP 多播”(https://go.microsoft.com/fwlink/?LinkId=93516)(可能为英文网页)。

路由服务

此功能路由不同站点之间以及站点内的消息。有关路由服务功能的详细信息,请参阅“消息队列路由”(https://go.microsoft.com/fwlink/?LinkId=93517)(可能为英文网页)。

消息队列 DCOM 代理

此功能使 MSMQ DCOM API 能够连接到远程消息队列服务器。

子队列

此功能使您可以逻辑分组队列中的消息,而无须创建另一物理队列。子队列是隐式创建的本地队列,是物理队列的逻辑部分。应用程序可以使用子队列分组消息。

移动消息

您可以按以下三种方式之一移动消息:

  • 使用“移动消息”对话框。

  • 执行剪切和粘贴操作。

  • 执行拖放操作。

可以在同一主队列的子队列之间移动消息,或从主队列向子队列移动消息。无法将消息从某个主队列移动到其他主队列的子队列,也无法在两个主队列之间或不同主队列的两个子队列之间移动消息。

消息的移动方向是从源队列移动到目标队列。除了当前移动计数,消息的属性保持不变。

基于应用程序的死信队列

Message Queuing 4.0 中引入了基于应用程序的死信队列,以便每个应用程序可以使用其自身的死信队列。应用程序可以通过将 PROPID_M_DEADLETTER_QUEUE 属性用作消息的一部分请求其自身的死信队列。不是将消息发送到系统事务性死信队列,而是将其发送到在 PROPID_M_DEADLETTER_QUEUE 属性中指定的队列。

PROPID_M_DEADLETTER_QUEUE 可以设置为事务性队列的任意合法路径。相对于将否定确认 (NACK) 消息移动到队列的队列管理器,该事务性队列必须是本地队列。队列路径名 (https://go.microsoft.com/fwlink/?LinkId=69583)(可能为英文网页)中定义了合法的路径。

事务性远程接收

事务性远程接收从远程队列事务性接收消息。在某些情况下事务性远程接收是必需的。例如,当远程中心队列中的工作订单需要在应用程序服务器场中处理时,事务性远程接收将使消息处理在服务器场中负载平衡。

处理大量“消息队列”队列的能力

Message Queuing 5.0 中引入了以下新功能,随 Windows 7 和 Windows Server 2008 R2 一同发行:

与 Message Queuing 4.0 相比,Message Queuing 5.0 提供了用于处理更大数量的队列的功能。尽管 Message Queuing 4.0 未对可创建的队列数目实行特定限制,但在创建数千个队列时,还是会对性能造成负面影响。特别是将大量队列加载到内存中时,会因所用的队列查找算法而大大增加 Message Queuing 4.0 服务的启动时间。Message Queuing 5.0 在启动时使用的队列查找算法已进行了优化,当系统上承载大量队列时可以显著提高消息队列的启动性能。

其他参考

消息队列功能 (https://go.microsoft.com/fwlink/?LinkId=93518)(可能为英文网页)