Nuevo en Symfony 4.4: Nuevo middleware para el componente Messenger

En el componente Messenger, se usa el middleware para configurar lo que sucede cuando se envía un mensaje al bus de mensajes. En Symfony 4.4 hemos añadido un nuevo middleware para actualizar el entity manager de Doctrine después de consumir los mensajes.

Para activarlo, añade messenger.middleware.doctrine_clear_entity_manager al middleware de tus buses:

# config/packages/messenger.yaml
framework:
    messenger:
        buses:
            messenger.bus.default:
                default_middleware: false
                middleware:
                    # ...
                    - 'messenger.middleware.doctrine_clear_entity_manager'

La primera ventaja de este middleware es que evita un consumo de memoria excesivo cuando se procesan muchos mensajes en un proceso de larga duración. La segunda ventaja es que evita efectos secundarios difíciles de depurar. Por ejemplo, en el caso de que un usuario trate de recuperar su cuenta (mediante el envío asíncrono de emails via Messenger y AMQP), si se actualiza la dirección de email después del primer intento, el segundo email se enviará a la anterior dirección de email. Al usar este middleware se soluciona este problema.

Esta funcionalidad fue contribuida por Konstantin Myakshin en el pull request #31334.

Fuente: New in Symfony 4.4: Messenger Middleware to Clear Doctrine Entity Manager

Comentarios

Publicada el

15 de octubre de 2019

Etiquetas

Proyectos Symfony destacados

La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.