Класс InMemoryTransport
Класс InMemoryTransport реализует интерфейс TransportInterface
и хранит сообщения прямо в оперативной памяти во время выполнения
текущего процесса. Транспорт не сохраняет сообщения между запросами
и полностью очищается после завершения процесса. Обычно используется
для тестирования очередей без реального брокера, а также для
синхронной обработки сообщений внутри одного запроса. Сообщения
извлекаются методом get, а отправляются методом send.
Синтаксис
new InMemoryTransport()
Пример
Давайте создадим транспорт в памяти и отправим в него сообщение:
<?php
namespace AppService;
use SymfonyComponentMessengerTransportInMemoryTransport;
use SymfonyComponentMessengerEnvelope;
class MessageSender
{
public function send(): void
{
$transport = new InMemoryTransport();
$envelope = new Envelope('hello');
$transport->send($envelope);
echo 'sent';
}
}
?>
Результат выполнения кода:
"sent"
Пример
Давайте извлечём сообщение из транспорта методом get:
<?php
namespace AppService;
use SymfonyComponentMessengerTransportInMemoryTransport;
use SymfonyComponentMessengerEnvelope;
class MessageReceiver
{
public function receive(): void
{
$transport = new InMemoryTransport();
$transport->send(new Envelope('abcde'));
$envelopes = $transport->get();
foreach ($envelopes as $envelope) {
echo $envelope->getMessage();
}
}
}
?>
Результат выполнения кода:
"abcde"
Смотрите также
-
класс
MessageBus,
который диспатчит сообщения в шину -
метод
dispatch,
который отправляет сообщение в шину -
класс
Envelope,
который оборачивает сообщение и его штампы -
метод
getMessage,
который возвращает исходное сообщение из конверта