2008-12-30 68 views

回答

38

正如其名稱所示,它只是一個隊列管理器。

您可以將對象(序列化)發送到它們將保留的隊列,直到您接收它們。 它通常用來發送應用程序之間的信息或對象處於分離的方式

它無關的Web服務,它們是兩個不同的東西

信息上MSMQ

https://msdn.microsoft.com/en-us/library/ms711472(v=vs.85).aspx

Info on WebServices

http://msdn.microsoft.com/en-us/library/ms972326.aspx

+3

上MSMQ上面的鏈接沒有工作(重定向到一些一般信息頁面),但這個網址爲我工作https://msdn.microsoft.com/en-us/library/ms711472(v=vs.85).aspx – 2015-11-30 11:51:51

45

對@ Juan的回答充分尊重,都是在兩者之間交換數據的方式兩個斷開的過程,即進程間通信信道(IPC)。消息隊列是異步的,而Web服務是同步的。他們使用不同的協議和後端服務來執行此操作,因此它們在實現上完全不同,但目的相似。

當可能有其他通信過程可能不可用的情況下,您希望使用消息隊列,但您仍然希望在客戶端選擇時發送消息。當另一端的進程被喚醒並接收到消息到達的通知時,交付將發生。

+4

感謝尊重=) 我將MSMQ作爲一種將應用程序發送到應用程序的方式,而不需要響應爲其他應用程序傳遞數據以執行任何想要的操作,並將Web服務作爲「調用遠程函數」的參數和結果,我使用這些函數具體目的 – juan 2008-12-30 12:26:39

27

事務隊列管理101

一個事務隊列是一箇中間件系統的一個排序之間的另一個的異步消息路由在任何給定時間可能連接或可能不連接的主機。這意味着它也必須能夠將消息保存在某個地方。這樣的系統的示例是MSMQIBM MQ

交易隊列也可以參與distributed transaction,並且回滾可以觸發消息的處理。這意味着如果未回滾,則保證將以at-most-once語義或保證投遞傳遞消息。該消息將不會傳遞,如果:

  • 主機A帖子 未連接

  • 東西(可能但不是必然 從主機A發起)消息,但主機B 回滾事務

  • B連接後的交易 回滾

在這種情況下,B將永遠不會意識到該消息甚至存在,除非通過其他介質通知。如果事務回滾了,這可能沒有關係。如果B在事務回滾之前連接並收集消息,則回滾還將反轉消息對B的影響。

請注意,A可以將消息發佈到隊列中,保證最多一次交貨。如果事務已提交,則主機A可以認爲該消息已被delivered by the reliable transport medium.如果事務回滾,則主機A可以認爲消息的任何影響已被逆轉。

Web服務

Web服務是remote procedure call或其他服務(例如RESTFul API's)由(通常)HTTP服務器發佈。它是一個同步的請求/響應協議,並不保證內置到協議中。客戶端需要驗證服務是否已正確運行。通常這將通過對呼叫的請求或超時的回覆。

在後一種情況下,Web服務不保證最多一次的語義。服務器可以完成服務並且無法提供響應(可能通過服務器外部的某些內容出錯)。應用程序必須能夠處理這種情況。

IIRC,REST風格的服務應該是冪等的(相同的狀態是任何數量的同一服務的調用後實現),這是對付這種缺乏成功的保證通知/失敗的Web服務架構的策略。這個想法是在概念上寫一個狀態而不是調用服務,所以可以寫任意次數。這意味着應用程序可以容忍缺乏關於成功的反饋,因爲它可以重新嘗試發佈,直到它從服務器獲得「成功」消息。

2

正如大家所解釋的,MSMQ被用作消息隊列。消息可以封裝實際的數據,對象和任何可以串行化並通過線路發送的內容。 MSMQ有其自身的侷限性。 MSMQ 1.0和MSMQ 2.0具有4MB的消息限制。 MSMQ 3.0解除了這個限制。面向消息的中間件(MOM)是一個很大程度上依賴於消息傳遞的概念。企業服務總線基礎建立在消息傳遞上。所有這些新技術都依賴於消息傳遞來提供可靠的異步數據傳輸。

8

其實MSMQ和WebService沒有關係。 使用MSMQ進行進程間通信(您也可以使用套接字,Windows消息傳遞,映射內存)。 它是一個Windows服務,負責保存消息,直到有人出列它們。 你可以說它比插座更可靠,因爲消息存儲在硬盤上,但比其他IPC技術慢。

您可以用小的代碼行DOTNET使用MSMQ,只是聲明你MessageQueue對象,並調用ReceiveSend方法。消息本身可以是正常的字符串或二進制數據。

0

MSMQ代表Microsoft Messaging Queue。

它只是將消息以合成的方式存儲以便它可以傳遞到DB的隊列(可以在同一臺機器上或服務器上)。在那裏有不同類型的隊列將消息分類。如果消息中有某個問題/錯誤或者無效消息被自動傳遞給Dead隊列,表示它沒有進一步處理。但是,在將消息傳遞給死隊列之前,它會重試最大計數,直到它不處理,然後將其發送到死隊列。它通常用於從客戶機向服務器或數據庫發送日誌消息,以便在客戶機上發生任何問題時,開發人員或支持團隊可以通過日誌解決問題。 MSMQ是由Microsoft提供的用於獲取日誌文件記錄並易於使用日誌文件獲取解決方案的服務。 你從這個博客http://msdn.microsoft.com/en-us/library/ms711472(v=vs.85).aspx

1

MSMQ-微軟消息隊列得到更好的主意: •MSMQ是由微軟開發的一個消息隊列實現。 •它部署在Windows Server操作系統中。 •它是一種消息傳遞協議,允許在單獨的服務器/進程上運行的應用程序以故障安全方式進行通信。 •MSMQ通常用於企業建立的軟件。 •MSMQ通過將無法到達其預定目的地的消息放入隊列中,然後在目標可達時重新發送它們來確保可靠傳遞。 •MSMQ也支持事務。它允許在多個隊列上執行多個操作,並將所有操作包裝在單個事務中,從而確保全部操作或全部操作都不會生效。 •消息隊列(MSMQ)技術使處於不同時間運行的應用程序能夠跨臨時脫機的異構網絡和系統進行通信。 下列端口用於Microsoft消息隊列操作: •TCP:1801 •RPC:135,2101 *,2103 *,2105 * •UDP:3527,1801

相關問題