node.js - 将 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。
这两个工人会等待他们队列中的任何任务并处理它吗?
解决方案
我建议你为 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
}
]
};
推荐阅读
- r - 使用给定两个向量的条件在 R 图上绘制曲线
- amazon-web-services - 如何为 AWS DynamoDB 中的新字段添加值?
- kubernetes - 有没有办法从 Kubernetes 中的服务对象获取活动日志?
- javascript - 如何获取动态对象键并使用它?
- django - Django ORM 为缺少的日期填充 0
- php - 在 RHEL 7.9 中加载 oci8.so 和 odbc.so 动态库时出错
- jquery - 使用 jQuery 修复导航菜单
- sql - “您无法添加或更改记录,因为表中需要相关记录”
- excel - 如何多选工作表
- kubernetes - 具有 nexus 不安全注册表的 GKE Containerd 节点池