亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

(摘錄)MSMQ的簡單介紹

系統 2636 0

MSMQ(MicroSoft??Message??Queue,微軟消息隊列)是在多個不同的應用之間實現相互通信的一種異步傳輸模式,相互通信的應用可以分布于同一臺機器上,也可以分布于相連的網絡空間中的任一位置。它的實現原理是:消息的發送者把自己想要發送的信息放入一個容器中(我們稱之為Message),然后把它保存至一個系統公用空間的消息隊列(Message??Queue)中;本地或者是異地的消息接收程序再從該隊列中取出發給它的消息進行處理。???
???????????
???????在消息傳遞機制中,有兩個比較重要的概念。一個是消息,一個是隊列。消息是由通信的雙方所需要傳遞的信息,它可以是各式各樣的媒體,如文本、聲音、圖象等等。消息最終的理解方式,為消息傳遞的雙方事先商定,這樣做的好處是,一是相當于對數據進行了簡單的加密,二則采用自己定義的格式可以節省通信的傳遞量。消息可以含有發送和接收者的標識,這樣只有指定的用戶才能看到只傳遞給他的信息和返回是否操作成功的回執。消息也可以含有時間戳,以便于接收方對某些與時間相關的應用進行處理。消息還可以含有到期時間,它表明如果在指定時間內消息還未到達則作廢,這主要應用與時間性關聯較為緊密的應用。???
???????????
???????消息隊列是發送和接收消息的公用存儲空間,它可以存在于內存中或者是物理文件中。消息可以以兩種方式發送,即快遞方式(express)和可恢復模式(recoverable),它們的區別在于,快遞方式為了消息的快速傳遞,把消息放置于內存中,而不放于物理磁盤上,以獲取較高的處理能力;可恢復模式在傳送過程的每一步驟中,都把消息寫入物理磁盤中,以得到較好的故障恢復能力。消息隊列可以放置在發送方、接收方所在的機器上,也可以單獨放置在另外一臺機器上。正是由于消息隊列在放置方式上的靈活性,形成了消息傳送機制的可靠性。當保存消息隊列的機器發生故障而重新啟動以后,以可恢復模式發送的消息可以恢復到故障發生之前的狀態,而以快遞方式發送的消息則丟失了。另一方面,采用消息傳遞機制,發送方必要再擔心接收方是否啟動、是否發生故障等等非必要因素,只要消息成功發送出去,就可以認為處理完成,而實際上對方可能甚至未曾開機,或者實際完成交易時可能已經是第二天了。???
???????????
???????采用MSMQ帶來的好處是:由于是異步通信,無論是發送方還是接收方都不用等待對方返回成功消息,就可以執行余下的代碼,因而大大地提高了事物處理的能力;當信息傳送過程中,信息發送機制具有一定功能的故障恢復能力;MSMQ的消息傳遞機制使得消息通信的雙方具有不同的物理平臺成為可能。???
???????????
???????在微軟的.net平臺上利用其提供的MSMQ功能,可以輕松創建或者刪除消息隊列、發送或者接收消息、甚至于對消息隊列進行管理。???
???????????
???????在.NET產品中,提供了一個MSMQ類庫"System.Messaging.dll"。它提供了兩個類分別對消息對象和消息隊列對象進行操作。在能夠使用MSMQ功能之前,你必須確定你的機器上安裝了MSMQ消息隊列組件,并確保服務正在運行中。在使用ASP.NET編程時,應在頭部使用:???
???????????
????????。?@??Assembly??Name="System.Messaging"%>???
???????????
????????。?@??Import??NameSpace="System.Messsaging"%>???
???????????
???????將MSMQ類庫引入ASP.NET文件???
???????????
????????1.??對消息隊列的創建?? ?
?????????? ?
????????   dim??MsgQue??as??MessageQueue?? ?
?????????? ?
????????   MsgQue=New??MessageQueue(MsgPath)?? ?
?????????? ?
????????其中:MsgPath可以為本地私有隊列,如".\MyQueue",也可以為其他機器的公有隊列,如"Saidy\777$\MyQueue",Saidy為另一機器名。?? ?
?????????? ?
?????????? ?
????????  2.??消息的發送?? ?
?????????? ?
????????   dim??MsgQue??as??MessageQueue?? ?
?????????? ?
????????   MsgQue.Send(Msg)?? ?
?????????? ?
????????   其中:Msg為任一對象。???
???????????
????????3.??消息的接收???
???????????
??????? 消息的接收又分成同步和異步方式兩種,同步接收在規定時間內從消息隊列中取出收到的第一條消息,當消息隊列中沒有消息時,程序處于等待狀態;異步接收方式則是定義了一個事件處理函數,當消息隊列中第一個消息到達時立即觸發該函數。???
???????????
????????1)??同步方式?? ?
?????????? ?
????????  ??dim??Msg??as??Message?? ?
?????????? ?
????????  dim??Fmt??As??XmlMessageFormatter?? ?
?????????? ?
????????  Fmt=??CType(MsgQue.Formatter,XmlMessageFormatter)?? ?
?????????? ?
????????  Fmt.TargetTypeNames??=??new??String(){"System.String"}?? ?
?????????? ?
????????  Msg=MsgQue.receive(New??TimeSpan(0,0,3))?? ?
?????????? ?
????????  首先定義收到消息應轉換成的格式,然后在指定時間內去接收消息???
???????????
????????2)??異步方式?? ?
?????????? ?
?????????? ?
?????????? ?
????????dim??Fmt??As??XmlMessageFormatter?? ?
????????''定義接收消息類型?? ?
????????Fmt??=??CType(MsgQue.Formatter,XmlMessageFormatter)?? ?
????????Fmt.TargetTypeNames??=??new??String(){"System.String"}?? ?
?????????? ?
????????''定義消息處理函數入口?? ?
????????AddHandler??MsgQue.ReceiveCompleted,??New??ReceiveCompletedEventHandler?? ?
????????(AddressOf??OnReceiveCompleted)?? ?
?????????? ?
????????''定義消息處理函數?? ?
????????Public??Shared??Sub??OnReceiveCompleted(s??As??Object,??asyncResult??As??ReceiveAsyncEventArgs)?? ?
????????Dim??MsgQue??As??MessageQueue??=??CType(s,MessageQueue)?? ?
????????Dim??Msg??As??Message??=??MsgQue.EndReceive(asyncResult.AsyncResult)?? ?
????????''此時Msg.Body即為所取消息對象?? ?
????????MsgQue.BeginReceive()?? ?
????????''重新定義異步接收方式?? ?
????????End??sub?? ?
?????????? ?
????????''啟動異步接收方式?? ?
????????MsgQue.BeginReceive???
???????????
???????????
????????消息隊列配置屬性???
???????????
??????? 關于隊列的屬性???
???????????
????????path屬性:它可以決定引用隊列的三種方式,路徑引用、格式名引用、標識引用???
???????????
????????category屬性:標識當前使用的隊列的類型。Category是隊列所有者定義的GUID值。該GUID值可以有GUID生成工具產生或者是用戶自定義的數字值。GUID值不會唯一,這樣才可以根據相同的GUID值,把多個消息隊列劃分為不同的類別(category)。???
???????????
???????跟發送數據類型相關的屬性???
???????????
????????Formatter屬性:決定在一個隊列中如何發送和接收消息的順序,以及可以在一個消息中發送什么樣的內容。???
???????????
???????和隊列交互相關的屬性???
???????????
????????DenyShareReceive屬性:決定同一時間內只有一個部件能夠訪問消息隊列中的消息。???
???????????
????????CanRead和CanWrite屬性:決定隊列是否可以被讀取或者是寫入。???
??????????
????????MaximumQueueSize和MaximumJournalSize屬性:以千字節為單位設置一個隊列(日志隊列)的消息最大容納量。一旦接收的消息到達這個容量,新的消息將不再被接收。???
???????????
????????一般情況下,消息隊列的最大值為消息隊列管理員所設置,如果這個值沒有控制的話,那么缺省的消息隊列最大容量將是無限制的。???
???????????
????????UseJournalQueue屬性::設置是否將收到的消息拷貝到日志消息隊列中去。

摘自《MSMQ的簡單介紹》 http://www.iwms.net/n402c12.aspx

(摘錄)MSMQ的簡單介紹


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成人亚洲精品77 | www.色午夜| 欧美特黄a级高清免费大片 欧美特黄a级猛片a级 | 日日摸夜夜夜夜夜添 | 亚洲免费中文 | 欧洲黄色网 | 精品国产区 | 一级成人毛片免费观看欧美 | 狠狠ai| 亚洲高清国产一线久久 | 国产精品视频公开费视频 | 一区二区不卡 | 亚洲不卡在线视频 | 成在线人免费视频一区二区三区 | a级片免费在线播放 | 欧美在线性爱视频 | 国产99视频精品草莓免视看 | 婷婷精品在线 | 日本欧美一区二区三区不卡视频 | 91视频国产91久久久 | 黄色伊人网| 亚洲福利一区福利三区 | 91系列| 欧美成人免费观看久久 | 成人三级视频在线观看 | 国产这里只有精品 | 精品91自产拍在线观看一区 | 中文字幕亚洲 综合久久 | 日本一级特黄毛片高清视频 | 国产边打电话边被躁视频 | 热久久亚洲 | 亚洲在线中文字幕 | 日韩免费毛片 | 久久精品亚洲综合一品 | 天天操比 | 91九色麻豆| 久久综合色婷婷 | 久艹视频在线 | 高清国产天干天干天干不卡顿 | 久久精品一区二区 | 国产免费人视频在线观看免费 |