在Symfony中通过ID获取队列工作者结果

时间:2019-02-19 14:29:50

标签: php symfony worker enqueue

我正在一个Symfony 4项目中工作,该项目需要通过一系列命令/操作来执行繁重的工作。目前,我正在使用入队,但如果需要,我很乐意更改包。唯一的要求是,我不必在生产机器上安装其他软件(此刻,我正在通过cron作业使用队列)。

我能够将命令发送到队列,并通过cli命令使用它:

$ ./bin/console enqueue:consume --setup-broker -vvv

我想从控制器发送命令,并立即返回一个 jobid ,以便稍后用于获取作业状态并最终获得结果。

这是伪代码:

public function run(Request $request, ProducerInterface $producer) {

  $message = ''; // My command to be consumed
  $promise = producer->sendCommand('queue_command', $message, true);

  return array(
    'jobid' => $promise->getId(),
  );
}

public function result($jobid, ProducerInterface $producer){

  //Get the promise via the jobid
  $promise = $producer->getPromise($jobid);

  //Get the result
  return $promise->receive();
}

有办法吗?

0 个答案:

没有答案