【问题标题】:Why or when should I use messages queues such as RabbitMQ, ZeroMQ in Erlang?为什么或何时应该在 Erlang 中使用 RabbitMQ、ZeroMQ 等消息队列?
【发布时间】:2013-11-20 09:27:57
【问题描述】:

你好,很棒的 Erlang 社区!

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

我正在用 erlang 制作它。

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

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

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

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

【问题讨论】:

    标签: erlang rabbitmq message-queue zeromq


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      这些包括:

      • 如果您需要保证您的消息在 至少一次,恰好一次等(即交易)
      • 如果您的系统负载如此之大,如果您可以 将消息保存在磁盘而不是内存中(持久性)
      • 您需要其他花里胡哨的功能,例如安全、与其他设备的互操作 系统、复杂的消息传递模式(路由)等。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2012-10-01
          • 2013-08-09
          • 2010-12-21
          • 2019-09-22
          • 1970-01-01
          • 2014-02-13
          • 2015-04-20
          • 1970-01-01
          • 2011-06-30
          相关资源
          最近更新 更多