2014-02-10 92 views
0

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

一旦进程接收JSON,将其存储在Redis的或发送过来一个RabbitMQ的队列,其中一些消费者将处理它(我现在还不能确定)。

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

+0

这是否回答你的问题? http://stackoverflow.com/questions/10407760/is-there-a-performance-difference-between-pooling-connections-or-channels-in-rab – Bengt

+0

所以我只能有一个过程保持连接和所有其他过程应当发送使用它 – user601836

+0

我使用与每个进程此连接内开设自己的信道的一个连接。但是,我只有不到100个进程同时运行。 – Bengt

回答

1

我会去像redis_storage和rabbitmq_storage这样的独立服务器。两者都是简单的服务器,它们可以管理它们的连接并具有存储/ 1等功能。按照责任原则,每个人都有自己的责任。您可以先执行redis存储并对所有内容进行测试,如果您改变了主意,请实施rabbitmq存储,唯一的修改是更改模块名称。或者你可以同时使用它们。