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

Класс ReceivedStamp

Класс ReceivedStamp представляет собой штамп (stamp), который Symfony автоматически добавляет в конверт сообщения в момент его получения из транспорта. Штамп содержит имя транспорта, из которого пришло сообщение. Первым параметром конструктора передаётся имя транспорта в виде строки. Наличие этого штампа в конверте сигнализирует, что сообщение было получено воркером из очереди, а не отправлено напрямую через шину.

Класс удобно использовать в middleware и обработчиках, когда нужно понять, пришло сообщение синхронно или из асинхронного транспорта.

Синтаксис

new ReceivedStamp(string $transportName)

Пример

Давайте создадим штамп и получим имя транспорта через метод getTransportName:

<?php namespace AppService; use SymfonyComponentMessengerStampReceivedStamp; class StampService { public function handle(): string { $stamp = new ReceivedStamp('async'); return $stamp->getTransportName(); } } ?>

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

"async"

Пример

Давайте проверим наличие штампа в конверте через метод last:

<?php namespace AppMessageHandler; use AppMessageArticleMessage; use SymfonyComponentMessengerEnvelope; use SymfonyComponentMessengerStampReceivedStamp; class ArticleHandler { public function __invoke(ArticleMessage $message, Envelope $envelope): void { $stamp = $envelope->last(ReceivedStamp::class); if ($stamp instanceof ReceivedStamp) { echo $stamp->getTransportName(); } else { echo 'sync'; } } } ?>

Результат выполнения кода при получении из транспорта 'async':

"async"

Пример

Давайте добавим штамп в конверт вручную через метод with и выведем имя транспорта:

<?php namespace AppService; use AppMessageArticleMessage; use SymfonyComponentMessengerEnvelope; use SymfonyComponentMessengerStampReceivedStamp; class EnvelopeService { public function handle(): string { $envelope = new Envelope(new ArticleMessage()); $envelope = $envelope->with(new ReceivedStamp('async')); $stamp = $envelope->last(ReceivedStamp::class); return $stamp->getTransportName(); } } ?>

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

"async"

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

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