如何在排队的侦听器中有严格的顺序? Laravel有可能吗?

时间:2018-11-10 08:43:24

标签: laravel

当前,我正在触发一个事件,需要删除用户时。例如:

'App\Events\DeleteUserWasCalled' => [
   'App\Listeners\User\DeleteUserImages',
   'App\Listeners\User\RemoveFromMailchimp',
   'App\Listeners\User\RemoveFromStripe',
   'App\Listeners\User\RemoveOffers',
   'App\Listeners\User\UpdateRelatedTablesToNull',
   'App\Listeners\User\SoftDeleteUser',
],

所有这些侦听器都在实现ShouldQueue。但是我的问题是队列的顺序不正确。例如,'App\Listeners\User\SoftDeleteUser''App\Listeners\User\RemoveFromMailchimp'之前被处理。

RemoveFromMailchimp需要用户的电子邮件,但是在SoftDeleteUser中将其设置为Null

我想到的一个解决方案是使用作业类并将所有内容放在一个类中。但这对我来说感觉不好。

任何想法如何解决?我列出的顺序很重要(尤其是最后两个听众)

修改

class DeleteUserWasCalled
{
    use SerializesModels;

    public $user;
    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($user)
    {
        $this->user = $user;
    }
}

0 个答案:

没有答案