为什么或何时应该在Erlang中使用RabbitMQ、ZeroMQ等消息队列?

为什么或何时应该在Erlang中使用RabbitMQ、ZeroMQ等消息队列?,erlang,rabbitmq,message-queue,zeromq,Erlang,Rabbitmq,Message Queue,Zeromq,您好,非常棒的二郎社区 我正在做一个包含客户端和后端的小项目。(复杂..对吗?)) 我是在二郎做的 客户端和后端将是两个独立的进程,我想知道是否需要(或者应该)使用某种消息队列来让它们进行交互 我知道我可以让他们使用PIDs进行交互,并使用“!”操作符发送消息 我想我想说的是,我正在努力寻找这个问题的答案: “我为什么或什么时候应该在Erlang中使用RabbitMQ、ZeroMQ等消息队列”当您需要解耦系统的不同层时,我会选择消息组件。此外,一个消息组件允许您对消息/请求执行不同的集成模式,例

您好,非常棒的二郎社区

我正在做一个包含客户端和后端的小项目。(复杂..对吗?))

我是在二郎做的

客户端和后端将是两个独立的进程,我想知道是否需要(或者应该)使用某种消息队列来让它们进行交互

我知道我可以让他们使用PIDs进行交互,并使用“!”操作符发送消息

我想我想说的是,我正在努力寻找这个问题的答案:


“我为什么或什么时候应该在Erlang中使用RabbitMQ、ZeroMQ等消息队列”

当您需要解耦系统的不同层时,我会选择消息组件。此外,一个消息组件允许您对消息/请求执行不同的集成模式,例如基于标题的主题/扇出/路由。。。 消息传递系统还用于可伸缩性目的,因此您可以让同一进程的多个实例同时从同一队列运行


最后我要提到的是RabbitMQ是一个消息代理,但ZeroMQ不是,它是一个消息传递库

如果为了性能而牺牲可靠性,请使用ZeroMq


如果您需要可靠性(消息持久性等),并且可能会放弃一些性能,请使用代理解决方案,如RabbitMq。

当您需要本机消息传递功能无法提供的内容时,您希望使用消息传递库

这些措施包括:

  • 如果您需要保证您的邮件在 至少一次、恰好一次等(即交易)
  • 如果您的系统负载是这样的,那么如果您可以 将邮件保存在磁盘而不是内存中(持久性)
  • 你需要其他的东西,比如安全性,与其他人的互操作 系统、复杂的消息传递模式(路由)等