Я работаю над проектом Symfony 4, который должен выполнять тяжелые работы через очередь команд / действий.На данный момент я использую enqueue, но я был бы рад изменить пакет, если это необходимо.Единственное требование - мне не нужно устанавливать дополнительное программное обеспечение на производственном компьютере (в данный момент я использую очередь через задания 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();
}
Есть ли способ сделать это?