您的位置: 财富时代网主页 > 资讯 > 正文 >

消息队列(Message Queue)的介绍和使用

发布时间:2021-12-01 12:24:06   来源:互联网   阅读:-

借助MSMQ(Microsoft Message Queue),应用程序开发人员可以通过发送和接收消息来快速可靠地与应用程序进行通信。消息处理为您提供了有保证的消息传递和可靠的故障安全方法来执行许多业务流程。

MSMQ,像可扩展标记语言网络服务和.Net Remoting,是一种分布式开发技术。但是,当使用XML网络服务或.Net Remoting组件,客户端需要与服务器端实时交换信息,服务器需要保持在线。MSMQ可以在服务器离线时工作,将消息临时保存在客户端的消息队列内,然后在服务器在线时将其发送到服务器端进行处理。

显然,MSMQ不适合客户端需要服务器及时响应的情况。MSMQ以异步方式与服务器交互,因此无需担心长时间等待服务器处理。

虽然XML网络服务和.Net Remoting都提供了[OneWay]属性来处理异步调用,它用来解决服务器端长方法调用长期阻碍客户端的问题。但是,它不能解决大量客户端负载的问题。此时,服务器接受请求的速度快于处理请求的速度。

一般来说,特殊消息服务中不使用[OneWay]属性。

1.基本术语和概念

消息是两台计算机之间传输的数据单位。消息可以非常简单,比如只包含文本字符串;它也可以更复杂,可能包含嵌入的对象。

消息被发送到队列。消息队列是用于在消息传输期间保存消息的容器。消息队列当从消息源向目的地转发消息时,管理器充当中间人。队列的主要目的是提供路由并确保消息的传递。如果发送消息时接收器不可用,消息队列将保留该消息,直到成功发送。

消息队列是微软的消息处理技术,它为安装了Microsoft Windows的任何计算机组合中的任何应用程序提供消息处理和消息队列功能,无论这些计算机是在同一网络上还是同时在线。

消息队列network”是可以相互发送和接收消息的任何计算机组。网络中不同的计算机在保证消息的顺利处理中扮演着不同的角色。它们有的提供路由信息来决定如何发送消息,有的存储整个网络的重要信息,有的只是收发消息。

在安装消息队列的过程中,管理员决定哪些服务器可以相互通信,并为特定的服务器设置特殊的角色。组成这个消息队列网络的计算机称为站点,它们通过站点链接相互连接。每个站点链接都有一个相关的成本,该成本由管理员决定,并指示通过该站点链接传递消息的频率。

消息队列"的管理员还将一台或多台计算机设置为网络中的路由服务器。路由服务器查看每个站点链接的成本,并确定通过多个站点传输消息的最快和最有效的方式,从而决定如何传输消息。

2.队列类型

有两种主要类型的队列:由您或网络上的其他用户创建的队列和系统队列。

用户创建的队列可以是以下任何队列:

公共队列在整个消息队列网络中被复制,并且可以被连接到网络的所有站点访问。

专用队列不会在整个网络中发布。相反,它们只在它们所在的本地计算机上可用。专用队列只能由知道队列的完整路径名或标签的应用程序访问。

管理队列包含确认收到在给定的消息队列网络中发送的消息。指定希望消息队列组件使用的管理队列(如果有)

响应队列包含目标应用程序收到消息时返回给发送应用程序的响应消息。指定希望消息队列组件使用的响应队列(如果有)

系统生成的队列通常分为以下几类:

日志队列可以选择存储已发送消息的副本和从队列中删除的消息的副本。每个"消息队列"客户端上的一个日志队列存储从该计算机发送的邮件的副本。在服务器上为每个队列创建一个单独的日志队列。此日志跟踪从此队列中删除的邮件。

死信队列存储无法投递或过期邮件的副本。如果过期或无法传递的消息是事务性消息,它们将被存储在一个特殊的死信队列中,称为事务性死信队列。死信与过期邮件存储在同一台计算机上。有关超时期限和过期消息的更多信息,请参见默认消息属性。

报告队列包含指示消息到达目的地的路线的消息,也可以包含测试消息。每台计算机只能有一个报告队列。

特殊系统队列是存储系统执行消息处理操作所需的一系列管理和通知消息的特殊队列。

应用程序中完成的大部分工作涉及访问公共队列及其消息。但是,根据应用程序的日志记录、验证和其他特殊处理需求,在日常操作中可能会使用几个不同的系统队列。

3.同步和异步通信

队列通信本质上是异步的,因为向队列发送消息和从队列接收消息是在不同的进程中完成的。此外,接收操作可以异步执行,因为想要接收消息的人可以在任何给定的队列上调用BeginReceive方法,然后立即继续其他任务,而无需等待回复。这与人们所说的同步传播有很大的不同。

在同步通信中,请求的发送方必须等待预期接收方的响应,然后才能执行其他任务。发送方的等待时间完全取决于接收方处理请求和发送响应所需的时间。

4.与消息队列交互

消息处理和消息为基于服务器的应用程序组件之间的进程间通信提供了强大而灵活的机制。与组件之间的直接调用相比,它们有几个优点,包括:

稳定性组件故障对消息的影响远小于组件之间直接调用的影响,因为消息存储在队列中,并一直保留到它们被正确处理。消息处理类似于事务处理,因为消息处理是有保证的。

消息优先级可以在相对不重要的消息之前接收更紧急或重要的消息,从而确保关键应用程序有足够的响应时间。

离线功能发送消息时,可以将消息发送到临时队列,并保持在该队列中,直到消息成功送达。当由于任何原因无法访问所需的队列时,用户可以继续执行操作。与此同时,其他操作可以继续,就像消息已经被处理一样,因为当网络连接恢复时,消息传递是有保证的。

事务性消息处理将多个相关消息耦合到单个事务中可确保消息只按顺序传递一次,并且可以成功地从其目标队列中检索到。如果出现任何错误,整个交易将被取消。

安全性基于消息队列组件的消息队列技术使用Windows安全性来保护访问控制,提供审核,以及加密和验证组件发送和接收的消息。


推荐阅读:纵雄

(正文已结束)

免责声明及提醒:此文内容为本网所转载企业宣传资讯,该相关信息仅为宣传及传递更多信息之目的,不代表本网站观点,文章真实性请浏览者慎重核实!任何投资加盟均有风险,提醒广大民众投资需谨慎!

关于我们 - 联系我们 - XML地图 - 网站地图TXT - 版权声明
Copyright.2002-2021  财富时代网 版权所有 本网拒绝一切非法行为 欢迎监督举报 如有错误信息 欢迎纠正