EventDispatcher 和 Messenger 之间的区别

Difference between EventDispatcher and Messenger

通过 Messenger 调度事件和通过 Symfony EventDispatcher 组件调度事件的基本区别是什么?

因为您已经用 RabbitMQ 标记了这个问题:您是否尝试过使用 EventDispatcher 和 RabbitMQ?我认为这是不可能的。

但引用官方文档,位于https://symfony.com/doc/current/components/messenger.html:

The Messenger component helps applications send and receive messages to/from other applications or via message queues.

在另一个请求中处理消息的纯粹能力(通过使用传输)对 EventDispatcher 产生了巨大的影响,它在您的应用程序的同一实例中处理所有给定的事件。重新启动应用程序(通过新的 shell 调用,或新的 Web 服务器请求)肯定会杀死所有尚未通过 EventDispatcher 处理的事件,但使用传输存储的事件可能仍然存在

Symfony Messenger是一个帮助您构建公交信使系统的工具。 通常,如果您的应用程序需要与 外部 服务通信(例如使用 AMQP 协议),您会使用它。

EventDispatcher 系统使您的组件能够在它们之间进行通信。 如果您想让应用程序的内部部分进行通信,您将使用此系统。