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

时间:2013-11-08 11:22:48

标签: erlang rabbitmq message-queue zeromq

你好真棒的Erlang社区!

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

我在erlang中制作它。

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

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

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

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

3 个答案:

答案 0 :(得分:5)

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

这些包括:

  • 如果您需要保证您的邮件处理完毕 至少一次,恰好一次等(即交易)
  • 如果你的系统负载如此可能会很方便 将您的消息保存在磁盘而不是内存(持久性)
  • 你需要其他安全的铃声和口哨,与其他人互动 系统,复杂的消息传递模式(路由)等。

答案 1 :(得分:2)

当你需要解耦我系统的不同层时,我会选择一个消息传递组件。此外,消息传递组件允许您能够根据标题对主题/扇出/路由等消息/请求执行不同的集成模式... 消息传递系统也用于可扩展性,因此您可以在同一队列中同时运行同一进程的多个实例。

我想提到的最后一件事是RabbitMQ是一个消息代理,但ZeroMQ不是,它是一个消息库。

答案 2 :(得分:1)

如果您可以牺牲性能的可靠性,请使用ZeroMq。

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