我正在一个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();
}
有办法吗?