5

你好,很棒的 Erlang 社区!

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

我正在用erlang制作它。

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

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

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

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

4

3 回答 3

5

当您需要本机消息传递工具不提供的东西时,您想使用消息传递库。

这些包括:

  • 如果您需要保证您的消息至少被处理一次,恰好一次等(即事务)
  • 如果您的系统负载如此之大,如果您可以将消息保存在磁盘上而不是内存上(持久性)会很方便
  • 您需要其他花里胡哨的东西,例如安全性、与其他系统的互操作、复杂的消息传递模式(路由)等。
于 2013-11-08T16:29:18.553 回答
2

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

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

于 2013-11-08T13:21:27.597 回答
1

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

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

于 2013-11-08T16:14:32.313 回答