我应该何时使用ZeroMQ / RabbitMQ / ActiveMQ等消息库

时间:2016-10-18 15:13:44

标签: sockets server rabbitmq activemq zeromq

我正在制作一个包含一些客户端和服务器的小项目(通过反应堆管理客户端)

我想知道是否需要使用某种消息提供程序库来让它们进行交互?或者只是普通的插座就足够了?

那么在场景中我应该使用这些库吗?

2 个答案:

答案 0 :(得分:2)

<强> A)
当一些更抽象的(甚至可能是复合的)形式行为通信模式要在刚刚原始的点对点传输方式和一些容易缩放&amp;以后需要或预期成分
{ XREQ/XREP | PUSH/PULL | PAIR/PAIR | PUB/SUB }

<强> b)中
如果多个传输类的混合对您的效果目标有益,请使用左{ tcp:// | ipc:// | inproc:// | epgm:// }

<强> c)中
当一个人不希望从扩展IO处理性能中弄脏手,并且可以选择让这些问题由专用IO线程运行和扩展超出自己的工作范围(因为它正在中央Context()内部留下一组运行良好且经过性能优化,经过精心调整的线程集,编程团队只需享受操作已发布的消息传递方法的舒适度,而无需重新花时间关于低级别的黑客攻击和细节,可以专注于正在开发的应用程序所需的特定领域知识。)

答案 1 :(得分:2)

一直都是!

要记住几件事:

1)。 RabbitMQ需要一个中央服务器,而ZeroMQ则不需要 2)。 RabbitMQ是一个先行者,ZeroMQ是一个反应堆。后者是恕我直言,更容易编码。

还要考虑nanomsg。它与ZeroMQ类似,但设计更简洁,可以更轻松地添加其他模式(因此也是如此)。

像RabbitMQ,ZeroMQ和nanomsg这样的东西只是字节移位器。为了使它们有用,最好将序列化消息。如果您的系统是单一语言(例如C#),那么使用该语言内置的任何序列化工具都没有错。但是,您可能还希望考虑像Google Protocol Buffers,XSD / XML或ASN.1,Avro这样的东西。这些都是与语言无关的序列化程序,允许您开发分布式异构系统。 JSON在某种意义上很有吸引力(每个人都在使用它),尽管从我所看到的将JSON模式转换为代码的工具开始,它们还远未成熟。