Laravel Queue — пауза между заданиями

Я хочу создать очередь (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);


}
}

0

Решение

Точно, вам нужно уснуть свой PHP-код, другого пути нет.

Php спать

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector