Nuevo en Symfony 4.3: Mejoras en la gestión de errores de Messenger
El componente Messenger incluye un mecanismo de reenvío de mensajes en caso de error. En Symfony 4.3 hemos mejorado esta funcionalidad para añadir un trasporte especial para los mensajes que no se han podido enviar. De esta forma, podrás recolectar todos los errores en un único lugar para después volver a intentar el reenvío de los mensajes fallados.
Lo único que necesitas es configurar algo como lo siguiente en tu aplicación:
framework: messenger: failure_transport: failed transports: async: dsn: 'amqp://' failed: dsn: 'doctrine://default?queue_name=failed' routing: 'App\Message\SmsNotification': async
En este ejemplo, el envío de SmsNotification
se reintenta hasta un máximo de
tres veces con el transporte async
y en caso de más errores, se envía al otro
transporte llamado failed
. Este último transporte puede ser consumido como
cualquier otro transporte:
$ php bin/console messenger:failed:show There are 3 messages waiting in the failed transport. --- --------------------------- ------------------- ----- Id Class Failed at Error --- --------------------------- ------------------- ----- 217 App\Message\SmsNotification 2019-04-10 22:12:01 ... 218 App\Message\SmsNotification 2019-04-10 22:12:00 ... 219 App\Message\SmsNotification 2019-04-10 22:11:59 ... --- --------------------------- ------------------- ----- // Run "messenger:failed:show {id} -vv" to see message details
$ php bin/console messenger:failed:show 217 There are 3 messages waiting in the failed transport. ----------- --------------------------- Class App\Message\SmsNotification Message Id 217 Failed at 2019-04-10 22:12:01 Error ... Error Class Exception Transport async ----------- --------------------------- Re-run command with "-vv" to see more message & error details. Run "messenger:failed:retry 217" to retry this message. Run "messenger:failed:purge 217" to delete it.
Esta funcionalidad fue contribuida por Ryan Weaver en el pull request #30970.
Fuente: New in Symfony 4.3: Messenger failure transport
Comentarios
Proyectos Symfony destacados
La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.