РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1330 of 1361 menu

Класс DelayStamp

Класс DelayStamp вешается на конверт сообщения и указывает транспорту, через сколько миллисекунд доставить сообщение в очередь. Первым параметром передаётся целое число - задержка в миллисекундах. Штамп можно добавить через метод with конверта или с помощью статических методов delayFor и delayUntil.

Синтаксис

new DelayStamp(int $delay)

Пример

Давайте отправим сообщение с задержкой в 5 секунд:

<?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 { $bus->dispatch(new ArticleMessage('abcde'), [ new DelayStamp(5000), ]); return new Response('dispatched'); } } ?>

Результат выполнения кода:

"dispatched"

Пример

Давайте воспользуемся методом delayFor, который создаёт штамп через объект DateInterval:

<?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 { $bus->dispatch(new ArticleMessage('hello'), [ DelayStamp::delayFor(new \DateInterval('PT10S')), ]); return new Response('delayed'); } } ?>

Результат выполнения кода:

"delayed"

Пример

Давайте отложим сообщение до конкретной даты с помощью метода delayUntil:

<?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 { $bus->dispatch(new ArticleMessage('user'), [ DelayStamp::delayUntil(new \DateTimeImmutable('+1 hour')), ]); return new Response('scheduled'); } } ?>

Результат выполнения кода:

"scheduled"

Смотрите также

  • класс Envelope,
    который оборачивает сообщение и его штампы
  • метод with,
    который добавляет штамп в конверт
  • метод delayFor,
    который создаёт штамп через DateInterval
  • метод delayUntil,
    который создаёт штамп до конкретной даты
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить