我需要一個傳輸機制,它保證消息的全部命令廣播。用於.NET的羣組通信系統
例如,我有三臺機器,A,B和C,發送消息:A -> a0, a1, a2.. aN; B -> b0, b1.. bM; C -> c0, c1.. cK
。如果其中一臺機器以某種順序接收消息(a0, a1, b0, c0, b1, a2...)
,則所有其他機器將以相同的順序接收所有消息!
我需要從.NET環境中使用這個東西。 NServiceBus或Mass Trnansit可以爲我完成這項工作嗎?
我需要一個傳輸機制,它保證消息的全部命令廣播。用於.NET的羣組通信系統
例如,我有三臺機器,A,B和C,發送消息:A -> a0, a1, a2.. aN; B -> b0, b1.. bM; C -> c0, c1.. cK
。如果其中一臺機器以某種順序接收消息(a0, a1, b0, c0, b1, a2...)
,則所有其他機器將以相同的順序接收所有消息!
我需要從.NET環境中使用這個東西。 NServiceBus或Mass Trnansit可以爲我完成這項工作嗎?
我想這需要的是某種具有有序的保證分佈式隊列的,那也許是因爲DistributedQueue的Apache Zookeeper配方能滿足它
在發送之前不會簡單地將消息分配到集合中修復您的問題。所以當它被接收到時,所有的接收器都會一直按照相同的順序遍歷結果集。
這隻適用於從一個源發送的所有消息的情況。但在這種情況下,所有消息都將以可預測的順序接收(如果使用像tcp這樣的傳輸)。在我的情況下,所有消息都從不同的來源同時廣播,並由每個參與者接收,每個參與者必須以相同的順序接收消息。 – Lazin
實現此目的的唯一方法是不給每個消息分配所有消息的某種ID或序列號。並讓接收應用程序等待所有可能的結果,然後通過序列號/ ID獲取所有內容後對其進行排序。你想要做的事可以通過重新排序來解決。 http://www.eaipatterns.com/Resequencer.html – rpgmaker
如果你真的看看JGroup,它不會做同樣的事情,你試圖不去做。即首先獲取所有消息,然後以同步方式從單個服務發送所有消息,這意味着無論發生什麼,每個接收方都將始終獲得FIFO效果。 – rpgmaker
你的意思是,如果A,B和C發送消息。其他機器會以相同的順序接收組合的交錯消息流? – AnthonyLambert
不,所有包括A,B和C的機器都必須以相同的順序接收所有消息。每封郵件都必須發送給每個參與者,包括髮件人。這個問題被稱爲原子廣播,並已解決 - http://en.wikipedia.org/wiki/Atomic_broadcast。我正在尋找生產準備好的.NET實現。 – Lazin