了解MSMQ,控制ASP进程 (二)

王朝asp·作者佚名  2008-05-21
宽屏版  字体: |||超大  

在运用程序中 MSMQ

可以有很多的运用,但是最普遍的运用是卸载另一个线程中的进程。

( 例如和 MSMQ 在同一台机器上的 IIS) 或则是另外一台机器上的 IIS.

通过卸载这些阻塞的进程,就能够使得 ASP

程序能够继续运行下去了。

一般来说,判断是否需要卸载任务进程要做两件事:

一是根据该进程运行的时间。

二是根据用户是否有回应(例如聊天室里面某个用户几个小时都没说话了)。

例如:如果服务端的一个 Web 网页的任务花费了太长的时间 ,

用户会得到一个网页超时的错误信息,我们一般可以通过重新单击刷新或者简单的放弃这个网页。但现在可以改变一下处理方式,例如进行后台处理,而不是简单的靠增加处理网页的时间方式。要知道,后台处理方式也能够提高网站性能的。

MSMQ 还有一个功能,就是能够控制消息的 body 中特定的一个 COM

对象。只要该对象支持 Idispatch 和 Ipersist (IPersistStream or IPersistStorage )

接口就行。

其中最常用的,能支持的两个就是 ADODB.Recordset ( 或 ADOR.Recordset

) 和 Word.Document 。在下面我们举一个处理 ADODB.Recordset 例子。

例:如何处理 ADODB.Recordset :

Public Sub SendRecordsetInMessage()

Dim objQInfo As New MSMQ.MSMQQueueInfo

Dim objQSend As MSMQ.MSMQQueue

Dim objMessage As New MSMQ.MSMQMessage

Dim objRS As New ADOR.Recordset

Dim a As New MSMQQueue

With objRS

.CursorLocation = adUseClient

.Fields.Append "FN", adVarChar, 25

.Fields.Append "LN", adVarChar, 25

.Open

.AddNew

.Fields("FN") = "Chris"

.Fields("LN") = "Blexrud"

.Update

.AddNew

.Fields("FN") = "Shayna"

.Fields("LN") = "Blexrud"

.Update

End With

objQInfo.PathName = ".\test"

Set objQSend = objQInfo.Open(MQ_SEND_ACCESS, MQ_DENY_NONE)

objMessage.Label = "Recordset State!!!!"

objMessage.Body = objRS

objMessage.Send objQSend

objQSend.Close

Set objQInfo = Nothing

Set objQSend = Nothing

Set objMessage = Nothing

Set objRS = Nothing

End Sub

了解了 MSMQ 么?我想现在对于 ASP

的进程死锁,你已经有了很好的解决方法了吧!希望大家能通过以上文字,真正了解

MSMQ ,及通过 MSMQ 控制 ASP 进程的方法!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有