У меня ниже Слушатель называется ProcessDocumentFields
. Мой класс слушателя реализует ShouldQueue
.
. В этом я запускаю два задания, используя метод withChain
, как показано ниже:
ParseFieldContent::withChain([
new ParseFieldRules($event->document, $fields),
])->dispatch($event->document, $fields);
Теперь я хочу условно отключитьсобытие, которое в конечном итоге вызывает другое задание.
Дело в том, что оба задания (ParseFieldContent
и ParseFieldRules
) должны были завершиться.
#If below is true, fire off
if ($event->document->stream->settings()->get('field_routing')) {
event(new DocumentDefaultRulesWasProcessed($event->documents));
}
Вышеуказанное событие вызоветте же самые две работы, но я должен сначала сделать некоторые другие проверки:
#EventServiceProvider.php
DocumentDefaultRulesWasProcessed::class => [
ProcessDocumentRouteFields::class,
],
Внутри моего ProcessDocumentRouteFields
у меня есть:
foreach ($event->routes as $route) {
if ($this->assertIfRouteFieldsShouldBeHandled($route, $event->document)) {
ParseFieldContent::withChain([
new ParseFieldRules($event->document, $route->fields, false),
])->dispatch($event->document, $route->fields);
}
}
Как вы можете видеть выше, язапустите два одинаковых задания (ParseFieldContent
и ParseFieldRules
) - но только в том случае, если определенное утверждение верно.
У меня вопрос: как я могу убедиться, что задания, помещенные в ProcessDocumentFields
, выполняются первыми,тогда когда запускается событие ``, задания в ProcessDocumentRouteFields
будут выполняться?