基于Redis 的任务队列Bull -- (十九)sandbox/child-pool

本文详细介绍了Bull任务队列在处理处理器时如何使用沙箱和进程池。当处理器为JS脚本路径时,Bull会创建沙盒进程,确保进程崩溃不影响其他进程。进程池通过ChildPool管理,根据isSharedChildPool决定是否共享。初始化子进程时,使用IPC通信,子进程在完成任务后返回IDLE状态。沙箱调用子进程执行任务并监听各种事件。然而,Bull进程池没有最大数量限制,可能导致过多子进程同时存在。
摘要由CSDN通过智能技术生成

bull在设置处理器时,如果处理器是字符串类型则认为它是js脚本路径

queue.process('my-processor.js')

这种情况下会在单独的 node 进程中运行进程函数。这类进程称为沙盒进程

如果沙盒崩溃,不会影响任何其他进程,并且会自动生成一个新进程来取代它。

setHandler 方法中,会使用沙盒包装指定的处理器脚本,然后用进程池来运行它

if (typeof handler === 'string') {
    const supportedFileTypes = ['.js', '.ts', '.flow', '.cjs'];
    const processorFile =
      handler +
      (supportedFileTypes.includes(path.extname(handler)) ? '' : '.js');

    if (!fs.existsSync(processorFile)) {
      throw new Error('File ' + processorFile + ' does not exist');
    }
    co
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

afan_coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值