In meinem Client-Server sende ich eine Warteschlange an AWS SQS mit Artisan::queue
. In .env
Datei habe ich QUEUE_DRIVER=sqs
konfiguriert und in config/queue.php
Datei wie unten konfiguriert.Wie wird die Warteschlange von AWS SQS mit Laravel abgerufen?
'default' => env('QUEUE_DRIVER', 'sqs'),
'sqs' => [
'driver' => 'sqs',
'key' => 'MY_AWS_KEY',
'secret' => 'MY_AWS_SECRET',
'prefix' => 'https://sqs.us-west-2.amazonaws.com/1234567890',
'queue' => 'queue-name',
'region' => 'us-west-2',
],
Wenn ich jetzt Artisan::queue
von Controller-Aufruf sehe ich Nachricht in SQS erstellt wird. Ich kann sie in der AWS-Konsole sehen und sie sind wie unten.
{"job":"Illuminate\\Foundation\\Console\\QueuedJob",
"data":[{"some_data_key":"some_data_value"}]}
Alles ist gut soweit ich glaube. Aber meine Worker-Ebene erhält niemals Daten. Ich habe in Worker Tiere> Konfiguration> Worker-Details konfiguriert wie folgt:
Worker queue: queue-name
Worker queue URL: https://sqs.us-west-2.amazonaws.com/1234567890/queue-name
HTTP path: /worker
Hier, mein Problem ist, dass ich auf/Arbeiter-Adresse immer 404 Fehler. Sobald Nachricht gesendet wurde, sehe ich einen Zähler nach oben in „Nachrichten in Flight“ in AWS SQS Konsole und wenn ich Worker Tieres Protokolldatei überprüfen, ich sehe Haufen
`127.0.0.1 (-) - - [28/Jun/2017:08:37:10 +0000] "POST /worker HTTP/1.1" 404 204 "-" "aws-sqsd/2.3"`
überprüfte ich, wenn Post Anfrage/Arbeiter Fehler zurückgegeben, aber es funktioniert in Ordnung auf anderen Server (ich konnte nicht in der Worker Tier einchecken, da ich keine URL-Adresse dafür habe). An diesem Punkt Worker Tier-Server hat nur
Route::match(['GET', 'POST'], 'worker', function() {
return 200;
});
in routes/web.php
zu sehen, ob POST-Anfrage dort erreichen kann.
Was habe ich falsch gemacht? Habe ich etwas verpasst? Oder es falsch umsetzen?