我对以下内容感兴趣:
我已经读过他们,但我找不到好的比较。特别是我对比较它们的性能基准感兴趣。 (也许我应该自己做一个!我希望不要。)
答案 0 :(得分:7)
好吧,我没有使用其他两个,但可以与ZeroMQ分享我的经验。在我看来,它擅长你们所有人。
它与TCP一样快,不使用CPU或大量内存。它可以非常快速地推送大量消息。在内存不足之前它会使你的网络通道畅通(我怀疑你是否能够最大化CPU)。在某个地方与RabbitMQ进行了比较,ZMQ的表现比它高出2倍。从我在网上看到的内容来看,它正在高速交易中使用。
RabbitMQ也是一个非常好的工具。看看它 - 它可能适合你正在寻找的东西
如果您正确设计了应用程序,那么您就没有单点故障。将两个插座连接到另一个插座非常容易。因此,如果其中一个失败 - 另一个是处理工作。有一些像水印这样的东西可以帮助你。阅读ZeroMQ Guide,了解如何在没有SPOF的情况下设计应用。
关于传输选项(如果我理解正确的话) - 由您来定义协议。 ZeroMQ基本上承诺,它会将这一团数据提供给另一端。使用JSON,协议缓冲区,摩尔斯电码,无论你喜欢什么。
AMQP中没有内置路由。同样,由您来指定哪个ZeroMQ套接字连接到哪个,但这很容易。
我用它开发了几个月(使用Python)并没有发现它的稳定性问题。即使我尝试以错误的方式使用它,它只会抛出一个很好的错误,告诉我不要这样做。即使重新启动/杀死某些服务并将其重新启动也不会造成任何问题。我会说这是一个非常稳定的软件。
作为一个注释:始终使用最新版本 - 2.1版本非常注重稳定性,因此很多稳定性问题都在其中解决。
超过20种语言的绑定,活动邮件列表,非常好的文档,频繁发布。还有什么吗?
因为它是作为一个库设计的,所以你可以自己设计应用程序(与框架的情况不同),它几乎可以帮助你。它感觉有点像普通的TCP套接字,功能更强大,更易于使用(它保证了一条消息将作为一个整体传递,不仅仅是前128个字节,其余的就像普通套接字一样)。
有一些,但它们都在指南中记录。 (例如:当你连接(SUB)它时,你可能会错过来自PUB套接字的前几条消息。指南中有一个解释,配方如何处理它。)
我发现这是一款设计最好的软件 - 稳定,写得很好,文档齐全,并不妨碍我。
我建议您先阅读the guide端到端。它编写得很好,有很多语言(包括C ++)的例子,它描述了许多边缘案例和痛点。