Laravel Queue - пауза между заданиями - PullRequest
0 голосов
/ 12 декабря 2018

Я хочу создать очередь (AMAZON SQS), которая запускает задания только каждые X секунд.Таким образом, если вдруг будет отправлено 50 заданий, они окажутся в очереди.Затем слушатель очереди выполняет задание, что-то делает и ждет X секунд.После этого следующая работа вытягивается.Еще одна секундная пауза.И т. Д. И т. П.

Для прослушивателя очереди параметр режима сна определяет только то, как долго работник будет «спать», если нет новых доступных заданий.Поэтому он будет спать только в том случае, если в очереди ничего нет.

Или я должен просто поставить паузу (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);


}
}

1 Ответ

0 голосов
/ 12 декабря 2018

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

Php sleep

...