Разница между EventDispatcher и Messenger - PullRequest
0 голосов
/ 07 ноября 2019

В чем принципиальная разница между отправкой события по Messenger и отправкой события по Symfony EventDispatcher Component?

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

Symfony Messenger - это инструмент, который поможет вам построить систему обмена сообщениями. Как правило, вы будете использовать его, если вашему приложению требуется связь с внешними службами (например, с использованием протокола AMQP).

Система EventDispatcher дает вашим компонентам возможность взаимодействовать междуих. Вы будете использовать эту систему, если хотите, чтобы внутренние части вашего приложения связывались.

1 голос
/ 07 ноября 2019

Как вы уже пометили этот вопрос с RabbitMQ: вы пытались использовать EventDispatcher и RabbitMQ? Я не думаю, что это возможно.

Но процитировать официальную документацию, расположенную по адресу https://symfony.com/doc/current/components/messenger.html:

Компонент Messenger помогает приложениям отправлять и получать сообщения в / из другие приложения или через очереди сообщений.

Чистая способность обрабатывать сообщение в другом запросе (с помощью транспорта) имеет огромное значение для EventDispatcher, который обрабатывает все данные события втот же экземпляр вашего приложения. Перезапуск приложения (с помощью нового вызова оболочки или нового запроса веб-сервера) обязательно уничтожит все события, которые еще не были обработаны с помощью EventDispatcher, но те, которые хранятся с использованием транспорта, могут все еще быть там

...