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?