symfony - Symfony kernel.terminate 事件异步运行命令或服务
问题描述
我想在 kernel.terminate 事件上执行我的服务以使其异步。在返回响应之前我在我的控制器中做的是这个
$this->eventDispatcher->addListener(KernelEvents::TERMINATE, function (PostResponseEvent $event) use ($vat) {
// Launch the job
$command = new WebDriverCommand();
$command->setContainer($this->container);
$input = new ArrayInput(array('id' => $vat->getId()));
$output = new NullOutput();
$command->run($input, $output);
});
我的问题是:运行执行我的服务的命令和不使用命令直接调用服务之间有区别吗?提前致谢。
解决方案
完全没有区别。你的命令无论如何都不能有任何逻辑。无论如何,事件侦听器和您的命令都应该调用服务——成为框架和域逻辑之间的粘合剂。
实际上,您的类将更容易进行单元测试和维护。
推荐阅读
- apache-kafka - Flink 在 Kafka 中获取错误消息:“毒消息”
- sql - Rails 和 PSQL:如何将 STRING 类型的列转换为具有后备值的 UUID
- mysql - SQL Update Join with Where 子句;phpmyadmin
- r - R dplyr:按组汇总所有变量的完整案例
- angularjs - 在特定间隔时间 angularjs 后显示超时错误消息
- javascript - 如何将 onclick 事件添加到具有相同类名的多个类?
- spring-data-jpa - 使用 liquibase 设置 Spring Boot 项目
- logging - 将 journalctl -f 的输出通过管道传输到文件中,但文件大小有限
- php - 在 Wordpress 标题中插入 H1(标题)上方的块
- java - 使用 java kubernetes-client 从 kubernetes 入口删除路径