我正在使用 Laravel Horizon 来处理排队的作业。下面是我的代码
<?php
namespace App\Jobs;
class ProcessPodcast implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $podcast;
public function handle(AudioProcessor $processor)
{
// Process uploaded podcast...
Log::channel('slack')->send('Processing ...');
}
}
在作业处理方法中,我已经登录到松弛通道。当执行这种类型的排队作业时,我得到了松弛消息。
有时,我说 1% 到 5%,当我派出工作时ProcessPodcast::dispatch()
,我没有收到 slack 消息。而且我没有得到工作显示在 Horizon Failed Job 页面下。这种行为是完全随机的。很难复制。我在想:
案例 #1:Laravel 没有创建作业,因此没有执行任何作业
案例 #2:Laravel 创建了作业,但 Horizon 没有运行作业
ProcessPodcast
无论哪种情况,检查作业是否保存到 Redis都会非常有帮助。我认为 Redis 不可能做到这一点。
请提供有关如何调试此问题的建议。