首页 > 解决方案 > 如何在 Symfony 5 中取消发送的消息?

问题描述

我有一个用于解析网站的应用程序。解析过程有几种状态。当用户初始化进程时,状态为Running。当用户停止进程时,它会切换到Canceled

当流程运行时,它会分派大量事件(针对每个类别和产品)。当进程被取消时,所有这些事件都应该被忽略/删除。

我的方法只是检查一个进程是否在每个事件处理程序中停止。当然,它带来了大量的冗余代码。此外,它只是在服务器上增加了额外的负载,因为工作人员应该调度所有这些不必要的事件,即使这些事件不会做任何事情。只是说,每个处理程序都必须进行数据库查询来检查进程的状态。

我是 Symfony Messenger 的新手,所以我想有一个更优雅的解决方案。我知道中间件,邮票。但不能利用它们来解决我的问题。

标签: phpsymfony

解决方案


如果 Symfony Messenger 你不能停止调用所有的处理程序

但在 EventDispatcher中可以通过stopPropagation() 方法


推荐阅读