日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

我学MSMQ(一)

發(fā)布時(shí)間:2024/9/20 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 我学MSMQ(一) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、通過(guò)這篇文章主要是對(duì)自己學(xué)習(xí)MSMQ進(jìn)行小結(jié),并希望能把自己的想法寫出來(lái),能和一些也正在研究MSMQ的朋友共同學(xué)習(xí),并希望能給予指導(dǎo)和建議
?????????二、首先是MSMQ的一些理論上的知識(shí)
?????????MSMQ(MicroSoft Message Queue,微軟消息隊(duì)列)是在多個(gè)不同的應(yīng)用之間實(shí)現(xiàn)相互通信的一種異步傳輸模式,相互通信的應(yīng)用可以分布于同一臺(tái)機(jī)器上,也可以分布于相連的網(wǎng)絡(luò)空間中的任一位置。
?????????它的實(shí)現(xiàn)原理是:消息的發(fā)送者把自己想要發(fā)送的信息放入一個(gè)容器中(我們稱之為Message),然后把它保存至一個(gè)系統(tǒng)公用空間的消息隊(duì)列(Message Queue)中;本地或者是異地的消息接收程序再?gòu)脑撽?duì)列中取出發(fā)給它的消息進(jìn)行處理。
?????????在消息傳遞機(jī)制中,有兩個(gè)比較重要的概念。一個(gè)是消息,一個(gè)是隊(duì)列。消息是由通信的雙方所需要傳遞的信息,它可以是各式各樣的媒體,如文本、聲音、圖象等等。消息最終的理解方式,為消息傳遞的雙方事先商定,這樣做的好處是,一是相當(dāng)于對(duì)數(shù)據(jù)進(jìn)行了簡(jiǎn)單的加密,二則采用自己定義的格式可以節(jié)省通信的傳遞量。隊(duì)列是發(fā)送和接收消息的公用存儲(chǔ)空間,它可以存在于內(nèi)存中或者是物理文件中。
?????????采用MSMQ帶來(lái)的好處是:由于是異步通信,無(wú)論是發(fā)送方還是接收方都不用等待對(duì)方返回成功消息,就可以執(zhí)行余下的代碼,因而大大地提高了事物處理的能力;當(dāng)信息傳送過(guò)程中,信息發(fā)送機(jī)制具有一定功能的故障恢復(fù)能力;MSMQ的消息傳遞機(jī)制使得消息通信的雙方具有不同的物理平臺(tái)成為可能。在微軟的.net平臺(tái)上利用其提供的MSMQ功能,可以輕松創(chuàng)建或者刪除消息隊(duì)列、發(fā)送或者接收消息、甚至于對(duì)消息隊(duì)列進(jìn)行管理。?三、MSMQ的安裝
MSMQ是一個(gè)Window組件,可以在Window組件向?qū)е?#xff0c;應(yīng)用程序服務(wù)器中添加它(如圖一)

四、隊(duì)列類型(Queue Type)?????????由您或網(wǎng)絡(luò)中的其他用戶創(chuàng)建的隊(duì)列和系統(tǒng)隊(duì)列。用戶創(chuàng)建的隊(duì)列可能是以下任何一種隊(duì)列:?
?????????“公共隊(duì)列”在整個(gè)“消息隊(duì)列”網(wǎng)絡(luò)中復(fù)制,并且有可能由網(wǎng)絡(luò)連接的所有站點(diǎn)訪問(wèn)。?
?????????“專用隊(duì)列”不在整個(gè)網(wǎng)絡(luò)中發(fā)布。相反,它們僅在所駐留的本地計(jì)算機(jī)上可用。專用隊(duì)列只能由知道隊(duì)列的完整路徑名或標(biāo)簽的應(yīng)用程序訪問(wèn)。?
?????????“管理隊(duì)列”包含確認(rèn)在給定“消息隊(duì)列”網(wǎng)絡(luò)中發(fā)送的消息回執(zhí)的消息。指定希望 MessageQueue 組件使用的管理隊(duì)列(如果有的話)。???????
?????????“響應(yīng)隊(duì)列”包含目標(biāo)應(yīng)用程序接收到消息時(shí)返回給發(fā)送應(yīng)用程序的響應(yīng)消息。指定希望 MessageQueue 組件使用的響應(yīng)隊(duì)列(如果有的話)。?
??????????系統(tǒng)生成的隊(duì)列一般分為以下幾類: “日記隊(duì)列”可選地存儲(chǔ)發(fā)送消息的副本和從隊(duì)列中移除的消息副本。每個(gè)“消息隊(duì)列”客戶端上的單個(gè)日記隊(duì)列存儲(chǔ)從該計(jì)算機(jī)發(fā)送的消息副本。在服務(wù)器上為每個(gè)隊(duì)列創(chuàng)建了一個(gè)單獨(dú)的日記隊(duì)列。此日記跟蹤從該隊(duì)列中移除的消息。 “死信隊(duì)列”存儲(chǔ)無(wú)法傳遞或已過(guò)期的消息的副本。如果過(guò)期或無(wú)法傳遞的消息是事務(wù)性消息,則被存儲(chǔ)在一種特殊的死信隊(duì)列中,稱為“事務(wù)性死信隊(duì)列”。死信存儲(chǔ)在過(guò)期消息所在的計(jì)算機(jī)上。有關(guān)超時(shí)期限和過(guò)期消息的更多信息,請(qǐng)參見(jiàn)默認(rèn)消息屬性。 “報(bào)告隊(duì)列”包含指示消息到達(dá)目標(biāo)所經(jīng)過(guò)的路由的消息,還可以包含測(cè)試消息。每臺(tái)計(jì)算機(jī)上只能有一個(gè)報(bào)告隊(duì)列。 “專用系統(tǒng)隊(duì)列”是一系列存儲(chǔ)系統(tǒng)執(zhí)行消息處理操作所需的管理和通知消息的專用隊(duì)列。 在應(yīng)用程序中進(jìn)行的大多數(shù)工作都涉及訪問(wèn)公共隊(duì)列及其消息。但是,根據(jù)應(yīng)用程序的日記記錄、確認(rèn)和其他特殊處理需要,在日常操作中很可能要使用幾種不同的系統(tǒng)隊(duì)列。
??????五、使用程序建立簡(jiǎn)單的消息隊(duì)列 using?System.Messsagin????????????string?queuename?=?".\\private$\\testQueue";//隊(duì)列名稱????????MessageQueue?q;????????if?(MessageQueue.Exists(queuename))????????{????????????q?=?new?System.Messaging.MessageQueue(queuename);????????}????????else????????{????????????q?=?MessageQueue.Create(queuename);????????}????????Message?m?=?new?Message();????????m.Label?=?"MessageLabel";??????//描述消息的字串????????m.Body?=?"MessageBody";????????//消息的主體????????q.Send(m);??????????????????????//發(fā)送

我們執(zhí)行這段代碼,就可以在計(jì)算機(jī)管理->服務(wù)和應(yīng)用程序->消息隊(duì)列中多了一個(gè)“queuename”隊(duì)列,這個(gè)就是我們用程序新建的消息(如圖二)

我的第一個(gè)消息隊(duì)列就這樣誕生了,心情也比較愉快,基本也沒(méi)碰到任何的問(wèn)題。其次,我們現(xiàn)在只是非常簡(jiǎn)單的發(fā)送了一個(gè)消息,當(dāng)然還可以發(fā)送復(fù)雜的消息,比如對(duì)象等,關(guān)鍵還有消息的接收,接受可分主動(dòng)方式和被動(dòng)方式這些問(wèn)題,還有待學(xué)習(xí),我會(huì)把我的學(xué)到的心得,和大家一起分享,也希望大家能給予一定的指導(dǎo)

總結(jié)

以上是生活随笔為你收集整理的我学MSMQ(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。