我知道您可以使用after
,failing
和Queue::before(function (JobProcessing $event) {
// $event->connectionName
// $event->job
// $event->job->payload()
});
钩子监听工作事件:
https://laravel.com/docs/5.6/queues#job-events
AbstractTask
我只希望某些工作在这里进行。这些作业是从某个称为instanceof
的抽象基类扩展而来的。通常,我只会执行$job instanceof AbstractTask
检查,但这样的操作将不起作用:
$event->job
有什么办法可以标记这些工作事件要接走的工作?
修改
似乎可以在$payload = json_decode($job->getRawBody());
$data = unserialize($payload->data->command);
if ($data instanceof AbstractTask) {
dd($data);
}
中找到我想要的实际Job(这是我自己的Job类),如下所示:
python
我很难相信,没有一种更简单的方法来获取实际正在处理的基础Job,因此我也提出了Github问题:
答案 0 :(得分:0)
我在您的问题上贴了。
您可以尝试一下,看看resolveName
是否为您提供了您的工作/任务的正确班级名称:
Queue::before(function (JobProcessing $event) {
$class = $event->job->resolveName();
// without an instance
if (is_a($class, AbstractTask::class, true)) {
...
}
// with an instance
$instance = app($class);
if ($instance instanceof AbstractTask) {
...
}
});