Класс RedeliveryStamp
Класс RedeliveryStamp представляет собой штамп (stamp),
который добавляется в конверт сообщения Envelope
при повторной доставке. Он хранит количество повторных
попыток и сообщение об ошибке, из-за которой предыдущая
попытка обработки завершилась неудачно. Первым параметром
конструктора передаётся число повторных доставок, вторым -
текст ошибки, третьим - имя транспорта, четвёртым - время
возникновения ошибки.
Синтаксис
new RedeliveryStamp(
int $retryCount,
?string $exceptionMessage = null,
?string $transportName = null,
?\\DateTimeImmutable $redeliveredAt = null
)
Пример
Давайте создадим штамп повторной доставки с двумя попытками:
<?php
use Symfony\\Component\\Messenger\\Stamp\\RedeliveryStamp;
$stamp = new RedeliveryStamp(2, 'handler failed');
echo $stamp->getRetryCount();
?>
Результат выполнения кода:
"2"
Пример
Давайте добавим штамп в конверт сообщения через метод with:
<?php
use Symfony\\Component\\Messenger\\Envelope;
use Symfony\\Component\\Messenger\\Stamp\\RedeliveryStamp;
$envelope = new Envelope(new \\stdClass());
$envelope = $envelope->with(new RedeliveryStamp(1, 'timeout'));
$stamp = $envelope->last(RedeliveryStamp::class);
echo $stamp->getExceptionMessage();
?>
Результат выполнения кода:
"timeout"
Пример
Давайте получим имя транспорта и время повторной доставки:
<?php
use Symfony\\Component\\Messenger\\Stamp\\RedeliveryStamp;
$stamp = new RedeliveryStamp(3, 'error', 'async');
echo $stamp->getTransportName() . ' ' . $stamp->getRedeliveredAt()->format('Y-m-d');
?>
Результат выполнения кода:
"async 2026-09-14"
Смотрите также
-
класс
Envelope,
который оборачивает сообщение и хранит штампы -
класс
DelayStamp,
который задаёт задержку перед доставкой сообщения -
класс
ReceivedStamp,
который отмечает факт получения сообщения из транспорта -
раздел
failed,
который описывает работу с неудачными сообщениями