访问 Bull-queue 以查看来自 nodejs 的作业统计信息

Yur*_*nev 3 task-queue node.js shelljs

我需要访问 Bull-queue 以查看工作统计信息并显示在页面上。我正在使用bull-repl从 CLI 访问队列,如下所示:

> bull-repl 
BULL-REPL> connect marathon reddis://localhost:6379
Connected to reddis://localhost:6379, queue: marathon
BULL-REPL | marathon> stats
??????????????????????
?  (index)  ? Values ?
??????????????????????
?  waiting  ?   0    ?
?  active   ?   0    ?
? completed ?   55   ?
?  failed   ?   1    ?
?  delayed  ?   0    ?
?  paused   ?   0    ?
??????????????????????
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下代码从 JS 中执行相同的操作:

const shell = require('shelljs');
const ccommandExistsSync = require('command-exists').sync;

function installBullRepl(){
    if(ccommandExistsSync('bull-repl')){
        queueStats();
    } else{
        shell.exec('npm i -g bull-repl');
        queueStats();
    }
}

function queueStats(){
    let stats;

    shell.exec('bull-repl'); // launch `bull-repl`
    shell.exec('connect marathon reddis://localhost:6379'); // connect to redis instance
    stats = shell.exec(`stats`); // display count of jobs by groups

    return stats;
}

installBullRepl();
Run Code Online (Sandbox Code Playgroud)

第一个 shell.exec 运行, launch bull-repl,但需要在工具内运行的其余代码永远不会执行,我认为这是因为shelljs每个命令独立运行。如何让最后两个命令在工具中运行?

Yur*_*nev 9


队列#getJobCounts

getJobCounts() : Promise<JobCounts>

返回一个承诺,它将返回给定队列的作业计数。

  interface JobCounts {
    waiting: number,
    active: number,
    completed: number,
    failed: number,
    delayed: number
  }
}
Run Code Online (Sandbox Code Playgroud)

要连接到 Redis 数据库中的队列并按状态返回和作业数量,请执行以下操作。

const Queue = require('bull');
const marathonQueue = new Queue('marathon', 'redis://127.0.0.1:6379');
marathonQueue.getJobCounts().then(res => console.log('Job Count:\n',res));
Run Code Online (Sandbox Code Playgroud)