2017-05-17 61 views
1

我目前正在嘗試構建一個具有Web和工作進程的NodeJS Web應用程序,並使用AMQP在它們之間進行通信。使用我當前的設置,啓動應用程序需要啓動Web進程的腳本(server.js)和工作進程的另一個腳本(worker.js)。它們中的每一個include第三個文件,amqp.js它使用啓動功能,涉及創建一個連接,然後創建一個通道,然後斷言隊列。單獨的Web和工作進程應該爲每個進程打開一個新連接嗎?

但是,在試圖調試另一個問題時,我遇到了this article,它顯示出不同的結構:首先創建連接,然後啓動兩個進程,每個進程創建一個通向該連接的通道並聲明兩個隊列。

我應該爲每個工作人員創建一個新的連接嗎?是否可以在網絡和工作人員分開且無法進行通信的環境中實現此連接?

回答

2

RabbitMQ連接被認爲是長期存在的。如果你的客戶共享內存,他們應該共享一個連接。這只是一個普遍的建議。我不知道有什麼缺點,如果你說,10個連接你的應用程序。如果您擁有數千個連接,則可能會影響性能並可能會使監控變得更加困難。

直接回答你的問題:

如果您worker是獨立的,不與任何共享內存,你沒有別的選擇,只能爲它創建新的RabbitMQ連接。否則,重新使用連接。

相關問題