AMQPException库错误:表太大,缓冲区无法容纳



我正在Symfony应用程序中使用信使组件来处理来自rabbitmq的消息。

当我发送一个2-3mb的消息并且在我的处理程序中发生错误时,试图将消息发送回rabbit的中间件会引发类型为

的异常:AMQPException库错误:表太大缓冲区

我在这个链接中发现了类似的错误:

https://github.com/vyuldashev/laravel-queue-rabbitmq/issues/10

https://github.com/alanxz/rabbitmq-c/issues/224

https://github.com/php-amqp/php-amqp/issues/131

但我没有看到任何解决方案或变通提供!

我找到了一个解决方法:当消息被重定向回队列(稍后重试)时,将添加一个巨大的戳记在我的序列化器中,在方法'encode'中,我过滤戳记:

$allStamps = [];
foreach ($envelope->all() as $stampKey => $stamps) {
if ($stampKey  === 'SymfonyComponentMessengerStampErrorDetailsStamp') {
// this header could be huge and drasticaly increase a size of a message
continue;
}
$allStamps = array_merge($allStamps, $stamps);
}
return [
'body' => serialize($messageBody),
'headers' => [
// store stamps as a header - to be read in decode()
'stamps' => serialize($allStamps),
],
];

最新更新