首页 > 解决方案 > 将 pm2 与 rabbitmq nodejs 一起使用

问题描述

我需要设置一个使用 pm2 来管理的 nodejs 集群。为了在工作人员之间交流和传递消息,我使用的是 rabbitmq。

我浏览了很多文章,但基本上对流程有一些困惑。

这些是要求:

创建订单时,还要为订购的服务创建预订。在这里,我正在考虑将预订的创建传递给工作进程。

创建预订时,通知用户和 devliery 主体也是管理员。

这就是我现在脑海中的画面。

我将使用 pm2 启动一个节点 js 集群,如下所示。

 // ecosystem.js
    {
    "apps" : [{
      "name"      : "API",
      "script"    : "server.js",// name of the startup file
      "instances" : 4,          // number of workers you want to run
      "exec_mode" : "cluster",  // to turn on cluster mode; defaults to 'fork' mode 
      "env": {
        "PORT"      : "9090" // the port on which the app should listen
      }
    }]
    }

这将启动 4 个工人。

现在我将如何通过rabbitmq将任何任务传递给这些工人?

或者我应该为每项任务另给工人之类的。

NotificationWorker 和 BookingCreationWorker。

这两个工人会等待他们队列中的任何任务并处理它吗?

标签: node.jsrabbitmqpm2

解决方案


我建议你为 BookingCreationWorker 任务添加一个工作人员,为 NotificationWorker.js 添加一个消费者

{
  apps: [
    {
      name: 'API',
      script: 'server.js',
      instances: 2,
      watch: true,
      exec_mode: "cluster",
      max_memory_restart: '1G',
      "env": {
        "PORT" : "9090"
      }
    },
    {
      name: 'CreateBookWorker',
      watch: true,
      script: 'worker/BookingCreationWorker.js',
      instances: 2
    }
  ]
};

推荐阅读