php - 如何在 Symfony 5 中取消发送的消息?
问题描述
我有一个用于解析网站的应用程序。解析过程有几种状态。当用户初始化进程时,状态为Running。当用户停止进程时,它会切换到Canceled。
当流程运行时,它会分派大量事件(针对每个类别和产品)。当进程被取消时,所有这些事件都应该被忽略/删除。
我的方法只是检查一个进程是否在每个事件处理程序中停止。当然,它带来了大量的冗余代码。此外,它只是在服务器上增加了额外的负载,因为工作人员应该调度所有这些不必要的事件,即使这些事件不会做任何事情。只是说,每个处理程序都必须进行数据库查询来检查进程的状态。
我是 Symfony Messenger 的新手,所以我想有一个更优雅的解决方案。我知道中间件,邮票。但不能利用它们来解决我的问题。
解决方案
如果 Symfony Messenger 你不能停止调用所有的处理程序。
但在 EventDispatcher中可以通过stopPropagation() 方法。
推荐阅读
- c# - 从 ThenInclude 中排除空值
- eclipse - Maven 安装程序不生成类文件
- django - AttributeError:“NoneType”对象没有属性“history_change_reason”
- python - 如何在不手动指定的情况下使用调色板中的“下一个”颜色?
- reactjs - 条纹 - 根据印度法规,出口交易需要描述。更多信息在这里
- azure - Azure 数据工厂将日期转换为 YYYYMMDD,然后转换为字符串
- javascript - 将对象推入数组会导致无限循环
- azure-iot-edge - How to access non container App data/Logs from an Azure-IoT-Edge Container App in gateway/Server?
- angularjs - AngularJS,ui-router 不显示模板
- python - Pandas 第 N 个最后一行切片