2014-02-10 90 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存儲,唯一的修改是更改模塊名稱。或者你可以同時使用它們。