Сегодня я рвал на себе волосы, пытаясь заставить работать цепочку.Что бы ни случилось, я не могу получить работу в цепочке.Первый всегда работает и успешно, но цепочка никогда не будет работать.
Например, у меня есть прослушиватель событий типа
class PersistPreviousStatement implements ShouldQueue
{
/**
* @param StatementCreated $event
*/
public function handle(StatementCreated $event): void
{
DoOneThing::withChain([
new DoSomething()
])->dispatch();
}
}
Мои два класса заданий приведены ниже:
class DoOneThing
{
use Dispatchable, Queueable;
public function handle(): void
{
$statement = Statement::find(20);
$statement->file = 'yyy';
$statement->save();
}
}
class DoSomething
{
use Dispatchable, Queueable;
public function handle(): void
{
$statement = Statement::find(10);
$statement->file = 'xxxx';
$statement->save();
}
}
В описанной выше ситуации.Мой класс DoOneThing правильно устанавливает запись с помощью 'yyy', однако класс DoSomething не запускается.Если я изменю порядок как
DoSomething::withChain([
new DoOneThing()
])->dispatch();
DoSomething запускается, а не DoOnething.У меня оба задания установлены в очередь / диспетчеризация, а мой драйвер настроен на синхронизацию.Я также могу отправлять задания друг за другом независимо друг от друга, например:
DoSomething :: dispatch () DoOneThing :: dispatch ()
, и оба будут выполняться.
Есть идеи?