当前,我正在触发一个事件,需要删除用户时。例如:
'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;
}
}