Я хочу создать очередь (AMAZON SQS), которая запускает задания только каждые X секунд. Таким образом, если вдруг будет отправлено 50 заданий, они окажутся в очереди. Затем слушатель очереди выполняет задание, что-то делает и ждет X секунд. После этого следующая работа вытягивается. Еще одна секундная пауза. И т. Д.
Для прослушивателя очереди опция опции сна только определяет, как долго работник будет «спать», если нет новых доступных заданий. Поэтому он будет спать только в том случае, если в очереди ничего нет.
Или я должен просто поставить pause (x) в моем коде PHP?
[править] Я только что протестировал метод сна с FIFO и стандартной очередью AWS SQS, и это испортило всю очередь. Внезапно задания (успешно) повторно отправляются 3 раза, после чего происходит переход в сбойное состояние. Более того, задержка, указанная в моем коде (3-4 минуты), была проигнорирована, вместо этого была взята одна минута.<?php
namespace App\Jobs;
use App\City;
class RetrieveStations extends Job
{
protected $cities;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct ($cities)
{
$this->cities = $cities;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
// code here
doSomething()
sleep(X);
}
}
Точно, вам нужно уснуть свой PHP-код, другого пути нет.
Других решений пока нет …