Чтобы ограничить количество заданий, поступающих из моей очереди, я добавил некоторый код в свой файл заданий PHP. После того, как работа отодвинута, я некоторое время сплю:
// random nr between 3 and 4 min
$r = rand(180, 240);
sleep($r);
Очередь, которую я использую, представляет собой очередь SQS FIFO, и отправленные задания попадают туда без проблем. Мой рабочий использует только один процесс и пытается 3 раза:
more aws-worker.conf
command=php /var/www/html/website/artisan queue:work sqs_aws --sleep=5 --tries=3
autostart=true
autorestart=true
user=root
numprocs=1
Однако, когда я отправляю 2 задания, работник очереди освобождает их примерно через 1 минуту, но не удаляет их в SQS. Так они и остаются в полете и через 3 раза получают неудавшуюся метку:
[2018-12-23 13:21:54] Processing: App\Jobs\DispatchAwsGatewayJob
[2018-12-23 13:22:56] Processing: App\Jobs\DispatchAwsGatewayJob
[2018-12-23 13:27:55] Processing: App\Jobs\DispatchAwsGatewayJob
[2018-12-23 13:29:01] Processing: App\Jobs\DispatchAwsGatewayJob
[2018-12-23 13:34:00] Processing: App\Jobs\DispatchAwsGatewayJob
[2018-12-23 13:35:06] Processing: App\Jobs\DispatchAwsGatewayJob
[2018-12-23 13:40:05] Processing: App\Jobs\DispatchAwsGatewayJob
[2018-12-23 13:40:05] Failed: App\Jobs\DispatchAwsGatewayJob
[2018-12-23 13:41:10] Processing: App\Jobs\DispatchAwsGatewayJob
[2018-12-23 13:41:10] Failed: App\Jobs\DispatchAwsGatewayJob
Некоторые другие детали очереди:
Default Visibility Timeout: 30 seconds
Message Retention Period: 4 days
Receive Message Wait Time: 0 seconds
Возможно, спящий код мешает очереди fifo? У меня нет других вариантов ограничить задания в очереди....