【问题标题】:Sending data over a connection通过连接发送数据
【发布时间】:2014-03-07 11:43:27
【问题描述】:

我有一个 Erlang 应用程序,它产生了几个(可能是数千个)进程。这些进程中的每一个都向接收回 json 的远程服务发出 http 请求。

一旦进程接收到 json,它会将其存储在 redis 上,或者通过 rabbitmq 队列发送到某个消费者会处理它的地方(我仍然不确定)。

由于对于redis和rabbitmq我都必须打开一个连接,我想知道是在每个进程中打开和关闭连接还是让某种服务器保持连接将由每个进程调用更好。

【问题讨论】:

  • 这能回答你的问题吗? stackoverflow.com/questions/10407760/…
  • 所以我应该只有一个进程保持连接,所有其他进程都应该使用它发送
  • 我使用了一个连接,每个进程在此连接中打开一个自己的通道。但是,我同时运行的进程不到 100 个。

标签: json erlang redis rabbitmq


【解决方案1】:

我会使用单独的服务器,例如 redis_storage 和 rabbitmq_storage。两者都是简单的服务器,可以管理它们的连接并具有类似 store/1 的功能。根据责任原则,每个人都有自己的职责。您可以先实现 redis 存储并测试所有内容,如果您改变主意然后实现 rabbitmq 存储,唯一的修改是更改模块名称。或者你可以同时使用它们。

【讨论】:

    【解决方案2】:

    您绝对应该为 redis/rabbitmq 使用单独的连接池。

    你听说过台球男孩吗? https://github.com/devinus/poolboy

    这就是工作的工具。

    【讨论】:

      猜你喜欢
      • 2014-07-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      相关资源
      最近更新 更多