2017-06-28 3 views
0

Sur mon serveur client, j'envoie la file d'attente à AWS SQS à l'aide de Artisan::queue. Dans .env fichier j'ai configuré QUEUE_DRIVER=sqs et dans le fichier config/queue.php j'ai configuré comme ci-dessous.Comment récupérer la file d'attente à partir de aws SQS en utilisant laravel?

'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', 
    ], 

Maintenant, quand je l'appelle Artisan::queue de contrôleur, je vois un message est créé dans SQS. Je peux les voir dans la console AWS et ils sont comme ci-dessous.

{"job":"Illuminate\\Foundation\\Console\\QueuedJob", 
"data":[{"some_data_key":"some_data_value"}]} 

Tout va bien jusqu'ici je crois. Mais mon niveau de travailleur ne reçoit jamais de données. J'ai configuré dans le niveau des travailleurs> Configuration> Détails travailleurs comme ci-dessous:

Worker queue: queue-name 
Worker queue URL: https://sqs.us-west-2.amazonaws.com/1234567890/queue-name 
HTTP path: /worker 

Ici, mon problème est que je reçois toujours l'erreur 404 sur/adresse des travailleurs. Dès que message a été envoyé, je vois un chef d'accusation en « Messages en vol » dans la console AWS SQS et quand je vérifie le fichier journal de niveau ouvrier, je vois tas de

`127.0.0.1 (-) - - [28/Jun/2017:08:37:10 +0000] "POST /worker HTTP/1.1" 404 204 "-" "aws-sqsd/2.3"` 

J'ai vérifié si la demande de poste à/travailleur erreur retournée mais cela fonctionne bien dans un serveur différent (je ne pouvais pas vérifier dans le niveau de travailleur car je n'ai pas d'adresse URL pour cela). À ce stade, un serveur de niveau travailleur a seulement

Route::match(['GET', 'POST'], 'worker', function() { 
    return 200; 
}); 

à routes/web.php pour voir si la demande POST pourrait y arriver.

Qu'est-ce que j'ai fait de mal? Ai-je manqué quelque chose? Ou l'implémenter dans le mauvais sens?

Répondre

0

Si que vous utilisez votre environnement de travail en beanstalk élastique, assurez-vous que votre

Configuration-> Logiciel Configuration-> Container Option-> Document Racine

est réglé sur la valeur

/publique

Vérifiez également votre fournisseur d'itinéraire quelque part comme

app/Fournisseurs/RouteServiceProvider.php

Il vérifie la fonction map() pour voir si vous créez vos itinéraires HTTP dans le fichier approprié. Il peut y avoir une référence à plusieurs fichiers de route comme web.php et api.php etc