中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

消息隊列(Message Queue)簡介及其使用

消息隊列(Message Queue)簡介及其使用

利用 MSMQMicrosoft Message Queue),應(yīng)用程序開發(fā)人員可以通過發(fā)送和接收消息方便地與應(yīng)用程序進行快速可靠的通信。消息處理為您提供了有保障的消息傳遞和執(zhí)行許多業(yè)務(wù)處理的可靠的防故障方法。


MSMQXML Web Services.NET Remoting一樣,是一種分布式開發(fā)技術(shù)。但是在使用XML Web Services.NET Remoting組件時,Client端需要和Server端實時交換信息,Server需要保持聯(lián)機。MSMQ則可以在Server離線的情況下工作,將Message臨時保存在Client端的消息隊列中,以后聯(lián)機時再發(fā)送到Server端處理。


顯然,MSMQ不適合于Client需要Server端及時響應(yīng)的這種情況,MSMQ以異步的方式和Server端交互,不用擔(dān)心等待Server端的長時間處理過程。

 

雖然XML Web Services.NET Remoting都提供了[OneWay]屬性來處理異步調(diào)用,用來解決Server端長方法調(diào)用長時間阻礙Client端。但是不能解決大量Client負(fù)載的問題,此時Server接受的請求快于處理請求。

一般情況下,[OneWay]屬性不用于專門的消息服務(wù)中。

 

1. 基本術(shù)語和概念(Basic terms and concepts

  “消息”是在兩臺計算機間傳送的數(shù)據(jù)單位。消息可以非常簡單,例如只包含文本字符串;也可以更復(fù)雜,可能包含嵌入對象。

 

  消息被發(fā)送到隊列中。“消息隊列”是在消息的傳輸過程中保存消息的容器。消息隊列管理器在將消息從它的源中繼到它的目標(biāo)時充當(dāng)中間人。隊列的主要目的是提供路由并保證消息的傳遞;如果發(fā)送消息時接收者不可用,消息隊列會保留消息,直到可以成功地傳遞它。

 

  “消息隊列”是 Microsoft 的消息處理技術(shù),它在任何安裝了 Microsoft Windows 的計算機組合中,為任何應(yīng)用程序提供消息處理和消息隊列功能,無論這些計算機是否在同一個網(wǎng)絡(luò)上或者是否同時聯(lián)機。

 

  “消息隊列網(wǎng)絡(luò)”是能夠相互間來回發(fā)送消息的任何一組計算機。網(wǎng)絡(luò)中的不同計算機在確保消息順利處理的過程中扮演不同的角色。它們中有些提供路由信息以確定如何發(fā)送消息,有些保存整個網(wǎng)絡(luò)的重要信息,而有些只是發(fā)送和接收消息。

 

  “消息隊列”安裝期間,管理員確定哪些服務(wù)器可以互相通信,并設(shè)置特定服務(wù)器的特殊角色。構(gòu)成此“消息隊列”網(wǎng)絡(luò)的計算機稱為“站點”,它們之間通過“站點鏈接”相互連接。每個站點鏈接都有一個關(guān)聯(lián)的“開銷”,它由管理員確定,指示了經(jīng)過此站點鏈接傳遞消息的頻率。

 

  “消息隊列”管理員還在網(wǎng)絡(luò)中設(shè)置一臺或多臺作為“路由服務(wù)器”的計算機。路由服務(wù)器查看各站點鏈接的開銷,確定經(jīng)過多個站點傳遞消息的最快和最有效的方法,以此決定如何傳遞消息。

 

2. 隊列類型(Queue Type

  有兩種主要的隊列類型:由您或網(wǎng)絡(luò)中的其他用戶創(chuàng)建的隊列和系統(tǒng)隊列。

  用戶創(chuàng)建的隊列可能是以下任何一種隊列:

  “公共隊列”在整個“消息隊列”網(wǎng)絡(luò)中復(fù)制,并且有可能由網(wǎng)絡(luò)連接的所有站點訪問。

“專用隊列”不在整個網(wǎng)絡(luò)中發(fā)布。相反,它們僅在所駐留的本地計算機上可用。專用隊列只能由知道隊列的完整路徑名或標(biāo)簽的應(yīng)用程序訪問。


  “管理隊列”包含確認(rèn)在給定“消息隊列”網(wǎng)絡(luò)中發(fā)送的消息回執(zhí)的消息。指定希望 MessageQueue 組件使用的管理隊列(如果有的話)。


  “響應(yīng)隊列”包含目標(biāo)應(yīng)用程序接收到消息時返回給發(fā)送應(yīng)用程序的響應(yīng)消息。指定希望 MessageQueue 組件使用的響應(yīng)隊列(如果有的話)。

 

系統(tǒng)生成的隊列一般分為以下幾類:


  “日記隊列”可選地存儲發(fā)送消息的副本和從隊列中移除的消息副本。每個“消息隊列”客戶端上的單個日記隊列存儲從該計算機發(fā)送的消息副本。在服務(wù)器上為每個隊列創(chuàng)建了一個單獨的日記隊列。此日記跟蹤從該隊列中移除的消息。


  “死信隊列”存儲無法傳遞或已過期的消息的副本。如果過期或無法傳遞的消息是事務(wù)性消息,則被存儲在一種特殊的死信隊列中,稱為“事務(wù)性死信隊列”。死信存儲在過期消息所在的計算機上。有關(guān)超時期限和過期消息的更多信息,請參見默認(rèn)消息屬性。


  “報告隊列”包含指示消息到達目標(biāo)所經(jīng)過的路由的消息,還可以包含測試消息。每臺計算機上只能有一個報告隊列。


  “專用系統(tǒng)隊列”是一系列存儲系統(tǒng)執(zhí)行消息處理操作所需的管理和通知消息的專用隊列。

應(yīng)用程序中進行的大多數(shù)工作都涉及訪問公共隊列及其消息。但是,根據(jù)應(yīng)用程序的日記記錄、確認(rèn)和其他特殊處理需要,在日常操作中很可能要使用幾種不同的系統(tǒng)隊列。

 

3. 同步和異步通信(Synchronous VS. Asynchronous Communication


  隊列通信天生就是異步的,因為將消息發(fā)送到隊列和從隊列中接收消息是在不同的進程中完成的。另外,可以異步執(zhí)行接收操作,因為要接收消息的人可以對任何給定的隊列調(diào)用 BeginReceive 方法,然后立即繼續(xù)其他任務(wù)而不用等待答復(fù)。這與人們所了解的“同步通信”截然不同。

 

  在同步通信中,請求的發(fā)送方在執(zhí)行其他任務(wù)前,必須等待來自預(yù)定接收方的響應(yīng)。發(fā)送方等待的時間完全取決于接收方處理請求和發(fā)送響應(yīng)所用的時間。

 

4. 同消息隊列交互(Interacting with Message Queues

  消息處理和消息為基于服務(wù)器應(yīng)用程序組件之間的進程間通信提供了強大靈活的機制。同組件間的直接調(diào)用相比,它們具有若干優(yōu)點,其中包括:

  • 穩(wěn)定性組件失敗對消息的影響程度遠(yuǎn)遠(yuǎn)小于組件間的直接調(diào)用,因為消息存儲在隊列中并一直留在那里,直到被適當(dāng)?shù)靥幚怼O⑻幚硗聞?wù)處理相似,因為消息處理是有保證的。
  • 消息優(yōu)先級更緊急或更重要的消息可在相對不重要的消息之前接收,因此可以為關(guān)鍵的應(yīng)用程序保證足夠的響應(yīng)時間。
  • 脫機能力發(fā)送消息時,它們可被發(fā)送到臨時隊列中并一直留在那里,直到被成功地傳遞。當(dāng)因任何原因?qū)λ桕犃械脑L問不可用時,用戶可以繼續(xù)執(zhí)行操作。同時,其他操作可以繼續(xù)進行,如同消息已經(jīng)得到了處理一樣,這是因為網(wǎng)絡(luò)連接恢復(fù)時消息傳遞是有保證的。
  • 事務(wù)性消息處理將多個相關(guān)消息耦合為單個事務(wù),確保消息按順序傳遞、只傳遞一次并且可以從它們的目標(biāo)隊列中被成功地檢索。如果出現(xiàn)任何錯誤,將取消整個事務(wù)。
  • 安全性 — MessageQueue 組件基于的消息隊列技術(shù)使用 Windows 安全來保護訪問控制,提供審核,并對組件發(fā)送和接收的消息進行加密和驗證。

 

5. .NET環(huán)境下編寫簡單的Message Queue程序

  (1)先安裝Message Queuing Services

  通過Control Panel“Add/Remove Programs” – “Add/Remove Windows Components”步驟安裝MSMQ

MSMQ可以安裝為工作組模式或域模式。如果安裝程序沒有找到一臺運行提供目錄服務(wù)的消息隊列的服務(wù)器,則只可以安裝為工作組模式,此計算機上的“消息隊列”只支持創(chuàng)建專用隊列和創(chuàng)建與其他運行“消息隊列”的計算機的直接連接。

 

  (2)配置MSMQ

  打開Computer Management – Message Queuing,在Private Queues下創(chuàng)建MSMQDemo隊列

 

  (3)編寫代碼-簡單演示MSMQ對象

  MessageQueue 類是“消息隊列”周圍的包裝。MessageQueue 類提供對“消息隊列”隊列的引用。可以在 MessageQueue 構(gòu)造函數(shù)中指定一個連接到現(xiàn)有資源的路徑,或者可在服務(wù)器上創(chuàng)建新隊列。在調(diào)用 SendPeek Receive 之前,必須將 MessageQueue 類的新實例與某個現(xiàn)有隊列關(guān)聯(lián)。

 

  MessageQueue 支持兩種類型的消息檢索:同步和異步。同步的 Peek Receive 方法使進程線程用指定的間隔時間等待新消息到達隊列。異步的 BeginPeek BeginReceive 方法允許主應(yīng)用程序任務(wù)在消息到達隊列之前,在單獨的線程中繼續(xù)執(zhí)行。這些方法通過使用回調(diào)對象和狀態(tài)對象進行工作,以便在線程之間進行信息通訊。

// Send Message

private void btnSendMessage_Click(object sender, System.EventArgs e)

{

       // Open queue

       System.Messaging.MessageQueue queue = new System.Messaging.MessageQueue(".//Private$//MSMQDemo");

 

       // Create message

       System.Messaging.Message message = new System.Messaging.Message();

       message.Body = txtMessage.Text.Trim();

       message.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] {typeof(string)});

 

       // Put message into queue

       queue.Send(message);

}

 

// Receive Message

private void btnReceiveMessage_Click(object sender, System.EventArgs e)

{

       // Open queue

       System.Messaging.MessageQueue queue = new System.Messaging.MessageQueue(".//Private$//MSMQDemo");

 

       // Receive message, 同步的Receive方法阻塞當(dāng)前執(zhí)行線程,直到一個message可以得到

       System.Messaging.Message message = queue.Receive();

       message.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] {typeof(string)});

       txtReceiveMessage.Text = message.Body.ToString();

}

 

Demo界面:

 

******

關(guān)于MSMQ消息隊列介紹文字來自于MSDN.

 

NET技術(shù)消息隊列(Message Queue)簡介及其使用,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 欧美专区在线观看 | 久久精品久久久 | 一区二区三区四区国产 | 日韩精品视频一区二区三区 | 久久久久久久久久性 | 亚洲国产日韩一区 | 亚洲一区二区三区欧美 | 久久青 | 国产精品美女www爽爽爽视频 | 免费在线观看av片 | 在线免费观看成人 | 成人精品国产一区二区4080 | 91精品一区 | 综合久久综合久久 | 日本三级电影在线看 | 精品99久久| 日韩国产在线 | 精品亚洲一区二区三区四区五区高 | 亚洲免费人成在线视频观看 | 交专区videossex农村 | 亚洲免费在线视频 | 国产精品久久久久久久久久妇女 | 久久久久久久久久久爱 | 亚洲精品99999| 国产二区在线播放 | 欧美男人天堂 | 日韩网站在线 | 亚洲精品视频在线看 | 亚洲免费在线 | 爱综合 | 亚洲国产一区二区三区 | 国产精品视频免费观看 | а天堂中文最新一区二区三区 | 国产一区二区三区免费 | 亚洲视频区 | 国产成人精品高清久久 | 大象一区 | 99这里只有精品视频 | 国产精品视频免费观看 | 综合精品久久久 | 最新中文字幕在线播放 |