【www.gdgbn.com--J2EE/EJB/服务器】

我们在使用 ASP 程序时常常会遇到这些情况:某个进程花费了过长的时间而导致在客户端过期、访问者已经放弃了对你的网站的访问而离开去了别的网站、或你的服务器上阻塞了大量的死队列时,系统出现 "Server is too busy" 错误信息。
   当你在设计网站的过程中碰到这些问题时,一个有效的解决办法就是使用 Microsoft Message Queue (MSMQ) 来结束这些进程,让网站恢复正常!
   到底 MSMQ 是个什么样的东西呢?我们下面作一下了解:
   一、 Microsoft Message Queue 的基本介绍:
   MSMQ ( 代号又叫 "Falcon") 是运行在 Windows NT 的服务 , 它提供运用程序之间的异步通讯。你可以在 NT4 Option Pack 中找到它。
 MSMQ 的基本概念非常的简单:它可以被看成是运用程序之间的 email :一个消息被打包到一个特定类型的容器中,并把这个消息保存到一个用与特别作用的队列中直到收信者接受该消息为止。这些队列能够确保 MSMQ 的传送,而不管当前网络连接的状况如何。
   象所有的电子邮件一样, MSMQ 消息有一个发送者和一个接收者 , 其中的接收者应该能够访问队列。一个单一队列中的一个单独消息,它拥有多个接受者例如 respinder 。而消息的发送者通常是 Web Server(IIS) 。
   MSMQ 也能够和其他消息系统进行通讯。例如: Sun Solaris, HP-UNIX,OS/2, VMS, AS/400 平台。像其他的 BackOffice 服务一样, MSMQ 有一个 COM API ( mqoa.dll ) 提供给开发者开发程序。其中最常用的三个类为: MSMQQueueInfo, MSMQQueue, MSMQMessage 。
   ( 1 )、 MSQMQueueInfo
   MSMQQueueInfo 允许你新建,打开,删除队列中的消息 . 要和队列建立联系首先需要设置 PathName ,这是一个命名队列的属性,它告诉 MSQM 是哪台机器上的队列。
< %
Dim objQueueInfo
Dim objQueue
Set objQueueInfo=Server.CreateObject("MSMQ.MSMQQueueInfo")
objQueue.PathName = ".MyQu"
Set objQueue = objQueueInfo.Open(MQ_SEND_ACCESS, MQ_DENY_NONE)
%>
   上面的代码打开一个叫 MyQueue 的本地队列。如果队列在另外一台服务器上,代码应该是这样的:
   objQueue.PathName = "SomeOtherComputerMyQu"
   打开队列中有两个参数: Access 和 ShareMode 。
 Access 表示将要对队列执行什么操作。一般有三个操作:
   MQ_PEEK_ACCESS (32), MQ_RECEIVE_ACCESS (1), MQ_SEND_ACCESS (2) 。

本文来源:http://www.gdgbn.com/jsp/4133/