2010-07-23 56 views
4

我將在Java中開發自己的消息隊列實現,並且需要將隊列內容分佈在多個服務器上,以便提供可靠性和冗餘性。Java中的分佈式數據結構

除此之外,我需要將隊列內容保存到文件系統中。

有人可以告訴我什麼是最合適的分佈式數據結構實現來保存我的隊列內容嗎?

說明:該數據結構必須爲我提供消息訂購功能。這意味着我需要根據他們到達的順序接收消息。另外在閱讀郵件時,它應該是在一個「鎖定」狀態,這樣,直到第一個消費者完成了閱讀過程

+3

您需要實現自己的消息隊列實現而不是使用現有消息隊列的任何特定原因?如果您可以告訴我們您已經查看的現有解決方案以及爲什麼他們不適合您,那麼這可能有助於我們確定您的實際需求以及對他們最有利的方案。 – 2010-07-23 04:48:00

+0

只需使用[Hazelcast分佈式隊列](http://hazelcast.com/docs/2.0/manual/single_html/#Queue)。它是純粹的Java peer2peer隊列,由一個可以保持的分佈式映射實現支持。 – 2012-04-10 07:50:16

回答

6

你看任何的許多現有的消息隊列實現對Java的其他消費者不能看懂了嗎?維基百科lists許多開源實現。在我看來,一個現有的,徹底的測試消息隊列是牽你的隊列內容:)

如果你絕對要編寫自己的,然後用最適合您的需求可能會在開源解決方案開始的最佳場所回答關於什麼數據結構很好地工作的大部分問題。

+0

感謝彼得, 我經歷了幾個消息隊列實現,我正在尋找可靠的消息傳遞和持久訂閱功能。看起來他們中的大多數人正在使用基於文件的持久性進行消息和代理狀態存儲。 但是在這裏我打算爲MQ後端使用分佈式存儲,並且我想使它具有許多分佈式存儲類型的「可插入」。 除此之外,我還需要爲此隊列提供對豐富的傳輸協議集(如REST,XMPP)的支持。這些功能很難實現,但至少我需要嘗試一下。 謝謝 – 2010-07-23 05:13:56

+3

ActiveMQ支持可插拔存儲後端和傳輸機制(包括REST和XMPP)。這將使您可以靈活地實現自己的存儲和傳輸,而不必編寫完整的消息隊列實現即可實現所提供的實現。 – Mark 2010-07-23 07:32:52

+1

@Dunith Dhanushka「分佈式存儲」是什麼意思? ActiveMQ允許您以各種方式存儲數據,並且還支持主/從複製等羣集選項。 – 2010-07-23 17:01:31