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
系统使您的组件能够在它们之间进行通信。
如果您想让应用程序的内部部分进行通信,您将使用此系统。
通过 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
系统使您的组件能够在它们之间进行通信。
如果您想让应用程序的内部部分进行通信,您将使用此系统。