我有一个工作来向用户发送短信。我想在指定的队列名称上运行此作业。例如,此作业添加到“ SMS ”队列。所以我找到了一种方法来做到这一点,但它存在一些错误。
创建作业实例并使用 onQueue() 函数来执行此操作:
$resetPasswordJob = new SendGeneratedPasswordResetCode(app()->make(ICodeNotifier::class), [
'number' => $user->getMobileNumber(),
'operationCode' => $operationCode
]);
$resetPasswordJob->onQueue('SMS');
$this->dispatch($resetPasswordJob);
我的工作类是这样的:
class SendGeneratedPasswordResetCode implements ShouldQueue
{
use InteractsWithQueue, Queueable;
/**
* The code notifier implementation.
*
* @var ICodeNotifier
*/
protected $codeNotifier;
/**
* Create the event listener.
*
* @param ICodeNotifier $codeNotifier
* @return self
*/
public function __construct(ICodeNotifier $codeNotifier)
{
$this->codeNotifier = $codeNotifier;
}
/**
* Handle the event.
*
* @return void
*/
public function handle()
{
echo "bla blaa bla";
#$this->codeNotifier->notify($event->contact->getMobileNumber(), $event->code);
}
public function failed()
{
var_dump("failll");
}
}
所以我输入这个命令来控制台:
php artisan queue:listen --queue=SMS --tries=1
但是我在执行此作业时收到此错误消息:
[无效参数异常]
没有为命令 [App\Services\Auth\User\Password\SendGeneratedPasswordResetCode] 注册处理程序
注意:其他方式是将事件添加到 EventServiceProvider 的监听属性并触发事件。但它不适用于指定队列名称。