我一直在关注RabbitMQ教程,以便向NodeJS添加发布者和消费者。但互联网上的文档和一般教程缺乏提供正确的生产设置,以使用Nodejs集群设置的RabbitMQ客户端。
从RabbitMQ tutorial channel.consume()启动一个消费者。此使用者是否在Nodejs运行的同一线程中启动?如果我运行4个NodeJS子进程,这意味着它将创建4个消费者,对吗?
通过从环境变量获取worker计数来启动仅运行RabbitMQ worker的Nodejs应用程序的正确方法是什么?
发布于 2020-07-14 18:36:05
来自RabbitMQ tutorial channel.consume()的
启动一个使用者。此使用者是否在Nodejs运行的同一线程中启动?
是的,消费者也受制于单线程规则,因此同步消费会阻塞整个应用程序。
如果我运行4个NodeJS子进程,这意味着它将创建4个消费者,对吗?是的,通过从环境变量获取worker计数来启动仅运行RabbitMQ worker的Nodejs应用程序的正确方法是什么?
我不确定这背后的逻辑是什么,但我强烈建议不要随意限制consumers的数量,恰恰相反。为了让你的队列保持空的,你通常会想要使用尽可能多的消耗能量,因为你可以。
如果您仍然希望限制RabbitMQ使用者的数量,而不管有多少可用节点进程,则必须编写涉及主和它的子进程之间通信的业务逻辑,这不是一件微不足道的事情。
https://stackoverflow.com/questions/60034368
复制相似问题