Метод delayFor класса DelayStamp
Метод delayFor класса DelayStamp создаёт экземпляр штампа,
который указывает шине сообщений отложить отправку сообщения в транспорт
на заданное количество миллисекунд. Метод статический, поэтому вызывается
без создания объекта. Первым параметром передаётся целое число -
время задержки в миллисекундах.
Штамп добавляется в конверт сообщения через метод with
и передаётся в метод dispatch шины. Транспорт получит сообщение
только спустя указанное время.
Синтаксис
DelayStamp::delayFor(int $delay)
Пример
Давайте создадим штамп с задержкой в 5000 миллисекунд и отправим сообщение через шину:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Messenger\MessageBusInterface;
use Symfony\Component\Messenger\Stamp\DelayStamp;
class ArticleController extends AbstractController
{
public function index(MessageBusInterface $bus): Response
{
$message = new ArticleMessage('abcde');
$stamp = DelayStamp::delayFor(5000);
$bus->dispatch($message, [$stamp]);
return new Response('dispatched');
}
}
?>
Результат выполнения кода:
"dispatched"
Пример
Давайте добавим штамп к конверту через метод with
перед отправкой:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Messenger\Envelope;
use Symfony\Component\Messenger\MessageBusInterface;
use Symfony\Component\Messenger\Stamp\DelayStamp;
class ArticleController extends AbstractController
{
public function index(MessageBusInterface $bus): Response
{
$envelope = new Envelope(new ArticleMessage('user'));
$envelope = $envelope->with(DelayStamp::delayFor(10000));
$bus->dispatch($envelope);
return new Response('delayed');
}
}
?>
Результат выполнения кода:
"delayed"
Смотрите также
-
класс
DelayStamp,
который задаёт задержку отправки сообщения -
метод
delayUntil,
который откладывает отправку до указанной даты -
класс
Envelope,
который оборачивает сообщение и хранит штампы -
метод
dispatch,
который отправляет сообщение через шину