Функции цепочки очередей Laravel 11.xPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Функции цепочки очередей Laravel 11.x

Сообщение Anonymous »

Я использую Laravel 11.x в качестве платформы и в настоящее время пытаюсь найти «лучший» способ обработки большого процесса из Amazon sp-api. Я хочу обрабатывать запросы API внутри заданий и хочу объединить их в более крупный процесс. Например. Процесс получения транспортной этикетки для упаковки Fullfilment занимает примерно 16 шагов. (ужасная вещь..)
Я создаю задания для каждого запроса и хочу связывать их по мере необходимости. например каждый POST-запрос должен следовать за запросом к ресурсу OperationStatus, который в конечном итоге должен ответить УСПЕХОМ или FAILED.
Итак, вопрос в том, могу ли я инкапсулировать меньшие процессы в функции и, наконец, связать их в цепочку для больших процесс?
Например. это три функции, которые следует обрабатывать одну за другой:

Код: Выделить всё

public function createInboundPlan(Request $request){
$uuid = Str::orderedUuid()->toString();
Bus::chain([
new CreateInboundPlan($uuid, $request),
new GetInboundOperationStatus($uuid, Cache::pull($uuid.':'.'CreateInboundPlan'.':'.'operationId'), $request),
])->catch(function (Throwable $e) {
// A job within the chain has failed...
})->dispatch();
}

public function generatePackingOptions(string $inboundPlanId, Request $request){
$uuid = Str::orderedUuid()->toString();
Bus::chain([
new GeneratePackingOptions($uuid, $inboundPlanId, $request),
new GetInboundOperationStatus($uuid, Cache::pull($uuid.':'.'GeneratePackingOptions'.':'.'operationId'), $request),
])->catch(function (Throwable $e) {
// A job within the chain has failed...
})->dispatch();
}

public function listPackingOptions(string $inboundPlanId, Request $request){
$uuid = Str::orderedUuid()->toString();
Bus::chain([
new ListPackingOptions($uuid, $inboundPlanId, $request),
new SelectInboundPackingOption($uuid, Cache::pull($uuid.':'.'ListPackingOptions'.':'.'packingOptions'), $request),
])->catch(function (Throwable $e) {
// A job within the chain has failed...
})->dispatch();
}
Есть ли способ заархивировать что-то подобное?

Код: Выделить всё

Bus::chain([
$this->createInboundPlan($request),
$this->generatePackingOptions($inboundPlanId, $request),
$this->generatelistPackingOptions($inboundPlanId, $request)
])->dispatch();
На данный момент единственная идея, которая у меня есть, — это не работать с функциями, а вместо этого создавать «родительские» задания, которые объединяются в цепочку. Я имею в виду, что я мог бы просто создать большую цепочку для этого большого процесса и не обобщать все, но отдельные части этого процесса могут понадобиться мне позже, и мне нравится идея этой структуры^^
Привет


Подробнее здесь: https://stackoverflow.com/questions/793 ... -functions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»