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

Метод delayUntil

Метод delayUntil принадлежит классу DelayStamp и создаёт экземпляр штампа, который задерживает обработку сообщения в очереди до заданного момента времени. Первым параметром передаётся дата и время, раньше которого сообщение не должно быть обработано.

Синтаксис

DelayStamp::delayUntil(\DateTimeInterface $datetime): DelayStamp

Пример

Давайте отложим обработку сообщения до 1 января 2030 года:

<?php namespace App\Message; use Symfony\Component\Messenger\Stamp\DelayStamp; class ArticleMessage { public function __construct( public string $text, public DelayStamp $delay, ) { } } ?>

Теперь создадим и отправим сообщение с отложенной обработкой:

<?php namespace App\Controller; use App\Message\ArticleMessage; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Messenger\MessageBusInterface; use Symfony\Component\Messenger\Stamp\DelayStamp; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(MessageBusInterface $bus): Response { $delay = DelayStamp::delayUntil(new \DateTimeImmutable('2030-01-01 00:00:00')); $bus->dispatch(new ArticleMessage('hello', $delay)); return new Response('dispatched'); } } ?>

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

"dispatched"

Пример

Давайте отложим обработку сообщения до момента, вычисленного относительно текущего времени:

<?php namespace App\Controller; use App\Message\ArticleMessage; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Messenger\MessageBusInterface; use Symfony\Component\Messenger\Stamp\DelayStamp; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(MessageBusInterface $bus): Response { $delay = DelayStamp::delayUntil(new \DateTimeImmutable('+1 hour')); $bus->dispatch(new ArticleMessage('article', $delay)); return new Response('dispatched'); } } ?>

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

"dispatched"

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

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