我应该为每个通知实施 shouldQueue
Should I implement shouldQueue for every single notification
我有一份名为 NotifyUsersJob 的工作 class,当然,它实现了 shouldQueue 接口,它是 Laravel 给我的默认队列 class。
在handle方法中,我有这样的逻辑。
Notification::send($this->users, new NotifyUser($this->message));
在 NotifyUser 通知中 class 我发送通知抛出 WebPushChannel。
我的问题是我是否也应该在 NotifyUser class 中实现 shouldQueue,如果我应该这样做,为什么?
顺便说一句,一切都很好,两者都运行良好,但我想知道这样做的正确方法。
这取决于您要实现的目标。
如果您想 运行 在后台发送通知,那么可以。使用 should queue 将创建一个在后台处理的作业,这样您就不必等到它被处理。
但是,如果您认为您的应用程序可能会在某个时候崩溃,那么您将无法及时发现错误。如果将数据库用于队列,则必须从失败的作业 table 中提取。
所以我的收获是。
- 如果您认为您的通知可能需要一些时间来处理,请使用 shouldqueue,以便它 运行 在后台运行并且您的应用程序发送滞后
- 如果您认为如果通知不起作用,您需要立即收到错误,那么请不要使用 shouldQueue
我有一份名为 NotifyUsersJob 的工作 class,当然,它实现了 shouldQueue 接口,它是 Laravel 给我的默认队列 class。 在handle方法中,我有这样的逻辑。
Notification::send($this->users, new NotifyUser($this->message));
在 NotifyUser 通知中 class 我发送通知抛出 WebPushChannel。 我的问题是我是否也应该在 NotifyUser class 中实现 shouldQueue,如果我应该这样做,为什么? 顺便说一句,一切都很好,两者都运行良好,但我想知道这样做的正确方法。
这取决于您要实现的目标。 如果您想 运行 在后台发送通知,那么可以。使用 should queue 将创建一个在后台处理的作业,这样您就不必等到它被处理。
但是,如果您认为您的应用程序可能会在某个时候崩溃,那么您将无法及时发现错误。如果将数据库用于队列,则必须从失败的作业 table 中提取。 所以我的收获是。
- 如果您认为您的通知可能需要一些时间来处理,请使用 shouldqueue,以便它 运行 在后台运行并且您的应用程序发送滞后
- 如果您认为如果通知不起作用,您需要立即收到错误,那么请不要使用 shouldQueue