复制的消息队列

时间:2011-11-22 07:53:30

标签: replication message-queue messaging cluster-computing

我正在寻找一个消息队列,它可以在一组服务器上复制消息。我知道这会导致性能损失,但这就是要求 - 消息持久性非常重要。

复制可以是异步的,但它应该在那里 - 如果有大量的消息等待处理,它们不应该丢失。

到目前为止,我无法从众所周知的MQ中找到任何东西。 HornetQ例如支持2.0中的消息复制,但在2.2中它似乎被删除了。 RabbitMQ根本不复制消息等等。

那里有什么可以满足我的要求吗?

3 个答案:

答案 0 :(得分:2)

至少有三种方法可以解决这个问题,具体取决于您需要解决方案的强大程度。

一:选择任何消息传递技术,然后复制磁盘存储。使用DRBD之类的东西,您可以将文件支持的存储复制到另一台机器下。如果您的主盒子死了,您应该可以从复制的文件中重新启动第二台机器。

二:继续寻找。有各种商业系统肯定会这样做,两个这样的(我没有经济利益)是Informatica Ultra Messaging(以前29West)和Solace。这些通常用于金融界。

三:建立自己的。 ZeroMQ是一个这样的工具包,您可以使用它从预构建的消息传递块中推出自己的系统。即使是没有正式支持它的系统也可以相当容易地配置为将所有消息发布到两个队列。你的读者不得不以某种方式消耗掉,所以这可能是一个非首发,但无论如何都可能。

总体而言:测试您的性能假设,因为所有这些都会在各种情况下产生各种性能影响。

答案 1 :(得分:0)

Amazon SQS的设计考虑到了这一点,但由于一致性模型(无论如何都是消息传递的一部分),您负责在消费者端重复消息。当然,SQS可能有点慢,成本可能会增加很多消息,但如果你想保证没有消息丢失,那么这是一个非常可靠的方法。

答案 2 :(得分:0)

新Kafka 0.8.1提供复制功能!