Laravel 11.x WarteschlangenkettenfunktionenPhp

PHP-Programmierer chatten hier
Guest
 Laravel 11.x Warteschlangenkettenfunktionen

Post by Guest »

Ich verwende Laravel 11.x als Framework und versuche derzeit herauszufinden, wie man einen großen Prozess über die Amazon SP-API am besten handhaben kann. Ich möchte die API-Anfragen innerhalb von Jobs bearbeiten und sie für einen größeren Prozess verketten. Z.B. Der Prozess zum Erhalten eines Versandetiketts für ein Fullfilment-Paket dauert etwa 16 Schritte. (Eine schreckliche Sache.)
Ich erstelle Jobs für jede Anfrage und möchte sie nach Bedarf verketten. z.B. Jeder POST-Anfrage muss eine Anfrage an die operationStatus-Ressource folgen, die schließlich mit ERFOLGREICH oder FEHLGESCHLAGEN antworten sollte.
Die Frage ist also, kann ich kleinere Prozesse in Funktionen kapseln und sie schließlich für die großen verketten? Prozess?
Z.B. Dies sind drei Funktionen, die nacheinander abgearbeitet werden sollen:

Code: Select all

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();
}
Gibt es eine Möglichkeit, so etwas zu archivieren?

Code: Select all

Bus::chain([
$this->createInboundPlan($request),
$this->generatePackingOptions($inboundPlanId, $request),
$this->generatelistPackingOptions($inboundPlanId, $request)
])->dispatch();
Derzeit ist die einzige Idee, die ich habe, nicht mit Funktionen zu arbeiten und stattdessen „übergeordnete“ Jobs zu erstellen, die verkettet werden. Ich meine, ich könnte einfach eine große Kette für diesen großen Prozess erstellen und nicht alles kapseln, aber ich brauche vielleicht später noch einmal einzelne Teile davon und mir gefällt die Idee dieser Struktur^^
Grüße

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post