Dot-Net

到 MSMQ 還是不到 MSMQ?(或 SQL 表作為隊列)

  • November 30, 2010

我有一個分佈式系統,其中將有 1 個 SQL Server、1-n 個處理伺服器和 1-n 個數據供應商(網路上的硬體設備)。提供的數據需要在進入關係數據庫結構之前進行處理 - 由處理伺服器執行(作為 Windows 服務 - .net 程式碼來解析數據、處理數據並將其插入到關係結構中。)

處理潛在的載入而不減慢數據提供者的速度,我想實現一個隊列,但我不確定我是否想將 MSMQ 伺服器的複雜性添加到組合中。MSMQ 有沒有很好的替代方案,比如使用 DB(平面表)作為隊列?.NET 是否為 DB 隊列提供任何開箱即用的支持,或者是否有其他可靠隊列選項?

謝謝

編輯:(11 月 29 日,晚上 11:30)

聽起來 SQL 服務代理(SSB)可能會成功。

http://www.netframeworkdev.com/windows-communication-foundation/service-broker-vs-msmq-as-reliable-queueing-mechanism-63981.shtml

編輯:(11 月 30 日,上午 7 點 45 分)

在此主題上找到另一個非常有用的連結:http:

//social.msdn.microsoft.com/Forums/en-US/sqlservicebroker/thread/52687510-0852-44f3-bfcd-83610d1c1b9a

我還在研究將提供的數據的最大/最小大小。在他們的腦海中,有人知道 MSMQ 和/或 SSB 可容納的最大大小嗎?

MSMQ:4MB 消息大小

SSB:2GB 消息大小

編輯:(11 月 30 日,上午 8 點 15 分)

這裡的 MSMQ 和 SSB 之間進行了很好的比較:

消息隊列的好策略?

我會使用 MSMQ,它不會增加太多複雜性,而且備份消息非常容易,因此即使在系統重新啟動後也可以繼續處理。你可以使用像 SSB 這樣的東西。

在這兩個選項中,MSMQ 實際上更簡單。如果您需要重新確定工作優先級的能力,或者讓處理代理只選擇某些類型的排隊作業,那麼您不能使用 MSMQ。如果您不需要任何這些花里胡哨,那麼 MSMQ 就是與 .NET 一起使用的蛋糕。

引用自:https://stackoverflow.com/questions/4311279