2012-05-19 80 views
11

我沒有太多的套接字編程經驗,但我試着讀了一點。我對MDB和消息隊列非常熟悉。有人告訴我,隊列(例如MDB)「不過是一個直接的套接字連接」。有人可以爲我比較這兩個。消息隊列與套接字

回答

22

eeeeemph ...這個人是非常錯誤的。這兩個人無法比擬,因爲他們生活在不同的層面。這就像是說「關係數據庫不僅僅是磁盤上的文件」或「房子不是磚塊」。

消息隊列是一種粘合發送者和接收者的軟件,這樣他們就可以在彼此不瞭解的情況下進行通信(當然,他們都需要知道隊列),並且不需要實現網絡代碼,處理失敗,將一條消息路由到多個接收方等等。即使發送方和接收方不同時處於活動狀態,系統也能正常工作,因爲隊列還可用作未傳送郵件的臨時存儲。除此之外,隊列還可以提供額外的服務,如授權,交易等。

套接字連接只是一個低層抽象,表示:「目前有兩個程序可以通過網絡向彼此發送數據,至少在連接之前因某種原因休息「。所以是的,通常一個消息隊列將使用套接字連接來工作。

+0

哦好吧,謝謝。所以當有人實際上只使用套接字來傳輸數據時,他們會讓事情變得更加手動和複雜。我的意思是消息隊列就是爲了讓我們更容易。像純文件之上的數據庫一樣。我認爲這個人可能意味着沒有太多的功能被添加,你不能使用套接字自己實現並手動編寫它們。無論如何謝謝澄清。 – Sara

+0

所以這裏是他對我的上述問題的回答: 「我們可以使用一個簡單的套接字連接實現消息傳遞。優點和缺點: 套接字級編碼可能更緊湊並且根據我們的需要,但它需要開發人員管理在許多軟件包中已經有了這種能力,選擇是基於許多因素(時間,成本,人才,未來人才)來決定的「 – Sara

+2

答案肯定是真的,但也很通用。它還包括諸如推出自己的http服務器,數據庫,操作系統等等。用家庭式釀酒替代這些成熟的產品可能只有在您有非常特殊且同時需求非常有限的情況下才是現實的(例如當您的隊列必須非常快速和緊湊,但不需要可靠時或安全)。 – fdreger