Новое в Symfony 4.4: Messenger Middleware для очистки Doctrine Entity Manager

В компоненте Messenger, middleware используется для настройки того, что происходит при отправке сообщения на message bus. В Symfony 4.4 добавили новый middleware для очистки Doctrine Entity Manager после использования каждого сообщения.

Включите его, добавив messenger.middleware.doctrine_clear_entity_manager в middleware в bus.

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

Первое преимущество этого middleware заключается в том, что оно позволяет избежать утечек памяти при обработке сообщений. Второе преимущество заключается в том, что он предотвращает неожиданные побочные эффекты. Например, в случае процесса восстановления учетной записи пользователя (когда электронная почта отправляется асинхронно с Messenger и AMQP), если адрес электронной почты обновляется после первой попытки, вторая электронная почта отправляется на старый адрес электронной почты. Использование этого middleware решит эту проблему.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *