Получить результат работника очереди по идентификатору в Symfony

Я работаю над проектом Symfony 4, который должен выполнять тяжелые работы через очередь команд / действий. На данный момент я использую enqueue, но я был бы рад изменить пакет, если это необходимо. Единственное требование - мне не нужно устанавливать дополнительное программное обеспечение на производственном компьютере (в данный момент я использую очередь через задания cron).

Я могу отправить команду в очередь и использовать ее с помощью команды cli:

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

Я хотел бы отправить команду из контроллера и немедленно вернуть идентификатор работы, который будет использоваться позже, чтобы получить состояние задания и - в конечном итоге - получить результаты.

Это псевдокод:

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 ответов

Другие вопросы по тегам