单独的Web和工作进程,是否应为每个进程build立一个新的连接?

我目前正在尝试构build一个具有Web和工作进程的NodeJS Web应用程序,并使用AMQP在它们之间进行通信。 使用我当前的设置,启动应用程序包括启动Web进程的脚本( server.js )和工作进程的另一个脚本( worker.js )。 每个文件都include第三个文件, amqp.js ,它使用一个启动函数,包括创build一个连接,然后创build一个通道,然后声明队列。

然而,在试图debugging另外一个问题时,我碰到了这篇文章 ,它显示了一个不同的结构:首先创build一个连接,然后启动两个进程,每个进程创build一个通往该连接的通道并断言两个队列。

我应该为每个工作人员build立一个新的连接吗?我可以在networking和工作人员分开的环境中实现这个连接吗?

RabbitMQ连接被认为是长寿的。 如果你的客户共享内存,他们应该共享一个连接。 这只是一个一般的build议。 我不知道有什么缺点,如果你说,10个连接你的应用程序。 如果您拥有数千个连接,则可能会影响性能,并会使监控变得更加困难。

要直接回答你的问题:

如果您的worker是独立的,并且不与任何人共享内存,您别无select,只能为其创build新的RabbitMQ连接。 否则,重新使用连接。