Получить результат работника очереди по идентификатору в Symfony - PullRequest
0 голосов
/ 19 февраля 2019

Я работаю над проектом 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();
}

Есть ли способ сделать это?

...