2017-06-28 3 views
0

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?

Antwort

0

Wenn Ihr sind Ihre Arbeitnehmer Umgebung in elastischen Bohnenstengel verwenden, stellen Sie sicher, dass Ihre

Configuration-> Software Configuration-> Container Option-> Document Root

wird auf den Wert

/öffentlich

Auch Ihre Route Anbieter überprüfen irgendwo wie

app/Anbieter/RouteServiceProvider.php

Es überprüfen Karte() Funktion, um zu sehen, ob Sie Ihre http Routen entsprechende Datei erstellen. Es kann auf mehrere Routendateien wie web.php und api.php usw. verweisen.

Verwandte Themen