EventDispatcher和Messenger之间的区别

时间:2019-11-07 16:45:32

标签: symfony rabbitmq symfony-messenger

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

2 个答案:

答案 0 :(得分:3)

Symfony Messenger是可帮助您构建总线Messenger系统的工具。 通常,如果您的应用程序需要与外部服务进行通信(例如,使用AMQP协议),则可以使用它。

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

答案 1 :(得分:2)

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

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

  

Messenger组件可帮助应用程序向其他应用程序发送消息或从其他应用程序发送消息或从消息队列接收消息。

处理另一个请求中的消息(通过使用传输)的纯粹能力与EventDispatcher有着巨大的区别,后者在应用程序的同一实例中处理所有给定的事件。重新启动应用程序(通过新的Shell调用或新的Web服务器请求)肯定会杀死所有尚未通过EventDispatcher处理的事件,但是使用传输存储的事件可能仍然存在