为什么我的队列事件延迟不起作用

Why does my queue event delay not working

我需要你的帮助。

我正在使用 Laravel 5.5 队列和 Linux 管理器工具(与文档完全一样)

现在我有一个很奇怪的问题。

当我毫不拖延地使用这个命令时

event(new NewOrderHasBeenPlaceEvent($get_order_details, $tran_id, $customerDet->phone));

一切正常。

但是当我使用延迟选项时

 event(new NewOrderHasBeenPlaceEvent($get_order_details, $tran_id, $customerDet->phone))->delay(Carbon::now()->addMinutes(5));

我收到一个错误: 调用数组的成员函数 delay() 但队列已按预期执行。

我试过 google 但什么也找不到,这让我卡了一整天。提前致谢。

您不应该在 event() 助手上使用 delay()。您可以通过实现 ShouldQueue 对事件侦听器进行排队,它对侦听器代码进行排队,但在触发事件时不进行排队。

如果你想使用延迟,你可以做一个工作 class 并使用延迟选项调度它,即 MyJob::dispatch()->delay(Carbon::now()->addMinutes( 5))