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

Класс BusNameStamp

Класс BusNameStamp - это штамп (stamp) очереди Symfony, который вешается на конверт сообщения Envelope и хранит имя шины, которая должна обработать это сообщение. Первым параметром в конструктор передаётся строка с именем шины. При диспетчеризации MessageBus проверяет этот штамп и направляет сообщение именно в указанную шину.

Синтаксис

new BusNameStamp(string $busName)

Пример

Давайте создадим штамп с именем шины 'command.bus' и прочитаем его значение через метод getBusName:

<?php namespace AppMessage; use SymfonyComponentMessengerStampBusNameStamp; $stamp = new BusNameStamp('command.bus'); echo $stamp->getBusName(); ?>

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

"command.bus"

Пример

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

<?php namespace AppMessage; use SymfonyComponentMessengerEnvelope; use SymfonyComponentMessengerStampBusNameStamp; $envelope = new Envelope(new SendEmailMessage()); $envelope = $envelope->with(new BusNameStamp('command.bus')); $stamp = $envelope->last(BusNameStamp::class); echo $stamp->getBusName(); ?>

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

"command.bus"

Пример

Давайте посмотрим, как штамп помогает при диспетчеризации сообщения в нужную шину через MessageBus:

<?php namespace AppMessage; use SymfonyComponentMessengerEnvelope; use SymfonyComponentMessengerMessageBusInterface; use SymfonyComponentMessengerStampBusNameStamp; class Sender { public function __construct( private MessageBusInterface $messageBus, ) { } public function send(object $message): Envelope { $envelope = new Envelope($message); $envelope = $envelope->with(new BusNameStamp('command.bus')); return $this->messageBus->dispatch($envelope); } } ?>

После вызова метода dispatch сообщение будет обработано шиной с именем 'command.bus'.

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

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