Chinaunix首页 | 论坛 | 博客
  • 博客访问: 573811
  • 博文数量: 130
  • 博客积分: 7473
  • 博客等级: 少将
  • 技术积分: 1466
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-10 22:29
文章分类

全部博文(130)

文章存档

2012年(1)

2011年(22)

2010年(2)

2009年(58)

2008年(47)

分类: WINDOWS

2009-07-08 10:27:48

消息队列(MSMQ) 作为一种系统服务,为我们提供了非常好的分布操作机制。但不知道什么原因,我很少看到有使用该技术的项目。MSMQ 究竟有什么好处呢? 
  • 脱机操作:发送或者接收方可以使用消息队列作为局部或全局缓存,在另一方脱机的情况下发送或接受数据。这个应用在分布体系中很重要,可以避免某应用服务器当机造成整个业务系统瘫痪,由于数据被存储在队列中,瘫痪的服务器重启依然可以继续业务处理,也避免数据丢失造成的业务空洞。举个例子,在电子商务系统中,我们将创建订单和处理订单用消息队列连接起来,一来可以避免处理订单时间过长造成的等待,二来也不会因为处理订单系统故障而造成客户无法下达订单。 
  • 分解耦合:在项目的第一个版本开发中,我们往往会将多个逻辑或应用放到一起。随着业务的增长,我们不得不将这些逻辑分离成多个应用服务器(AppServer),来达到性能重构的目的。使用消息队列作为分解耦合的手段有个好处就是,被分解的应用无需关心其关联应用是被部署到本机还是其他服务器上。 
  • 应用隔离:我们只所以使用 ORM/DAO 一个很重要的原因就是数据库无关性,便于在不同类型的存储服务器间迁移。使用消息队列隔离应用,每个应用都无需知道其他应用的位置和细节,彼此之间也不存在引用和依赖关系。在约定数据对象类型后,每个应用都可以独自变化和升级。 
  • 多播应用:MSMQ 3.0 提供的这个功能,让我们开发可插入的分布应用时,可以不再使用单向的链式处理结构。将消息同时广播给不同的应用,很大程度上提高了处理性能,每个应用服务器都可以第一时间处理消息,无需等待任何其他应用完成。 
   Message Queuing 服务是一种消息处理基础结构和开发工具,用于为 Windows 创建分布式消息处理应用程序。这样的应用程序可以跨异类网络进行通信,在临时无法相互连接的计算机之间发送消息。此服务提供了具有一定保证的消息传递、有效的路由、安全性和基于优先级的消息传递。它还支持在事务内发送消息,并为包括管理在内的所有编程功能提供了 Microsoft Win32® 和 COM API。
Windows XP 版本中 Message Queuing 服务的远程读取功能的实现允许未经身份验证的用户连接到队列。恶意用户可能清除队列并导致拒绝服务状态。此外,消息队列远程读取数据通过网络以纯文本传输,这意味着它可能被能够捕获网络数据的恶意用户读取。
出于这些原因,Microsoft 建议不要在公开给不受信任的网络(如 Internet)的 Windows XP 计算机上安装 Message Queuing 服务。默认情况下该服务未在 Windows XP 中安装,因此大多数组织不受此漏洞的威胁。
如果 Message Queuing 服务停止,分布式消息不可用。如果禁用此服务,任何明确依赖于此服务的服务将无法启动。此外,COM+ Queued Component (QC) 功能、Windows Management Instrumentation (WMI) 的某些功能以及 Message Queuing Triggers 服务将会受到影响。默认情况下,此服务未在 Windows Server 2003 计算机上安装。
阅读(1997) | 评论(0) | 转发(0) |
0

上一篇:Event Log

下一篇:Message Queuing Triggers

给主人留下些什么吧!~~