【发布时间】:2017-08-18 23:46:42
【问题描述】:
我得到了使用 Queue::before 查看 AppServiceProvider 的想法,以此为我不再想运行和删除它们的作业添加检查,而无需为我编写的每个作业添加检查。
背景,我正在开发一个进行审计的 SaaS,因此审计可以运行数小时并包含 1000 多个工作。如果我可以在作业通过时在作业中查找审核 ID,并与已取消的任何审核 ID 的缓存数组进行比较,我可以节省时间。
那么我要做的是如何在 Queue::before 中解开 Job 以获取要检查的 id? (普通 laravel 队列代码,使用 RabbitMQ)
由于作业被包裹在一层或两层事件类中,我无法将数据转储到屏幕上查看,只能记录文件,因为它在队列中。
在 app/Providers/AppServiceProvider.php 中:
Queue::before(function (JobProcessing $event) {
// $event->connectionName
// $event->job
$job = $event->job->payload();
$obj = unserialize($job['data']['data']);
}
就我感兴趣的事件而言,有效负载有数据,有数据,这是我感兴趣的序列化对象。这似乎不是最好的方法,或者看看如何与之交互以更好的方式。
谢谢
【问题讨论】:
-
我怎样才能在一个地方为每个作业中的一个键编写检查,而不是将检查编码到每个作业文件 php 中?
标签: php laravel queue rabbitmq