搜索文章:

首页  |  Java技术  |  Asp.net  |  Asp编程  |  VC/C++  |  Delphi  |  VB编程

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

在运用程序中 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 进程的方法!

()

相关文章:
© 2006   www.java-asp.net