我们有兴趣听听ActiveMQ vs RabbitMQ vs ZeroMQ的优缺点。还欢迎提供有关任何其他有趣的消息队列的信息。
当前回答
我只能对ActiveMQ补充我的2分,但由于这是最受欢迎的之一:
你想写的语言可能很重要。虽然ActiveMQ确实有一个客户端,但与Java库相比,他们的c#实现还远远不够完整。
这意味着一些基本功能是不可靠的(故障转移协议……嗯…在某些情况下失败,没有重新交付支持)和其他根本不存在。由于. net对项目似乎不是那么重要,所以开发相当缓慢,似乎也没有任何发布计划。Trunk经常是坏的,所以如果你真的考虑到这一点,如果你想让事情继续下去,你可能会考虑为项目做出贡献。
然后是ActiveMQ本身,它有很多不错的功能,但也有一些非常奇怪的问题。我们使用Fuse (Progress)版本的activemq出于稳定的原因,但即使这样,也有几个奇怪的“bug”,你要记住:
在某些情况下停止发送消息的代理 日志错误使队列显示不再存在的消息(它们没有被传递给消费者,但仍然) 优先级仍然没有实现(自从人类诞生以来就在问题列表上) 等等。
总而言之,如果你能接受它的问题,这是一个非常好的产品:
A)在使用。net时不害怕主动参与 B)用java开发;-)
其他回答
在这篇博文的评论中有一些关于Twitter编写他们自己的消息队列的讨论,这可能会很有趣。
史蒂夫承受了很大的负荷和压力 ActiveMQ, RabbitMQ等的测试。 ActiveMQ实际上相当慢(非常慢) 比Kestrel慢),RabbitMQ 总是因为太多而崩溃 生产者和太少的消费者。
你可能不会有像twitter一样的初始加载:)
比你想知道的更多的信息:
http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes
更新
只是在详细说明保罗在评论中补充的内容。上面提到的页面在2010年之后就消失了,所以阅读时要有所保留。3年里很多东西都变了。
我没有使用ActiveMQ或RabbitMQ,但使用ZeroMQ。在我看来,ZeroMQ和ActiveMQ等之间的最大区别是0MQ是无代理的,并且没有内置消息传递的可靠性。如果您正在寻找一种易于使用、支持多种消息传递模式、传输、平台和语言绑定的消息传递API,那么0MQ绝对值得一看。如果您正在寻找一个成熟的消息传递平台,那么0MQ可能不适合。
有关如何使用0MQ的大量示例,请参阅www.zeromq.org/docs:cookbook。
我成功地使用0MQ在电力使用监控应用程序中传递消息(见http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/)
我只能对ActiveMQ补充我的2分,但由于这是最受欢迎的之一:
你想写的语言可能很重要。虽然ActiveMQ确实有一个客户端,但与Java库相比,他们的c#实现还远远不够完整。
这意味着一些基本功能是不可靠的(故障转移协议……嗯…在某些情况下失败,没有重新交付支持)和其他根本不存在。由于. net对项目似乎不是那么重要,所以开发相当缓慢,似乎也没有任何发布计划。Trunk经常是坏的,所以如果你真的考虑到这一点,如果你想让事情继续下去,你可能会考虑为项目做出贡献。
然后是ActiveMQ本身,它有很多不错的功能,但也有一些非常奇怪的问题。我们使用Fuse (Progress)版本的activemq出于稳定的原因,但即使这样,也有几个奇怪的“bug”,你要记住:
在某些情况下停止发送消息的代理 日志错误使队列显示不再存在的消息(它们没有被传递给消费者,但仍然) 优先级仍然没有实现(自从人类诞生以来就在问题列表上) 等等。
总而言之,如果你能接受它的问题,这是一个非常好的产品:
A)在使用。net时不害怕主动参与 B)用java开发;-)
阿比,这都取决于你的用例。与其依赖别人对用例的描述,不如自由地将你的用例发布到rabbitmq讨论列表中。在推特上提问也会得到一些回应。祝福你,亚历克西斯