2010-07-23 55 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