作业完成后,我在生成另一个作业队列时遇到了一些问题。
如laravel docs中所述,我使用JobProcessed $event
来检测事件,它位于AppServiceProvider.php中,如下所示
Queue::after(function (JobProcessed $event) {
$payload = $event->job->getRawBody();
$payload = json_decode($payload);
$data = $payload->data;
$command = unserialize($data->command);
if($command->queue == 'importInsights' && in_array($command->getInsightsOption(), ['item1', 'item2'])) {
try {
Artisan::queue("sync:insights", [
'insightOption' => 'some option',
'--day' => 'test date',
'--queue' => 'syncInsights'
]);
}
catch (\Exception $e) {
Log::error("Failed to call insights queue" . $e->getMessage());
}
}
});
对于我的本地机器它正在工作,因为我在Windows上并且没有安装redis,但在测试服务器中我们有redis并且没有任何事情发生。
第一份工作没有问题,工作正常,但第二份工作没有发生任何事情。我也试过了Artisan::call
,没有运气。如果我试着在事件处理程序中添加像Log::error("Test for queue handler");
之类的简单代码,这将毫无问题地工作。
任何建议都将受到赞赏。