ユーザーにSMSを送信するジョブがあります。指定したキュー名でこのジョブを実行したい。たとえば、このジョブは「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
しかし、このジョブを実行すると、次のエラー メッセージが表示されます。
[InvalidArgumentException]
コマンド [App\Services\Auth\User\Password\SendGeneratedPasswordResetCode] のハンドラーが登録されていません
注: もう 1 つの方法は、EventServiceProvider のlistenプロパティにイベントを追加して、イベントを発生させることです。ただし、キュー名を指定すると機能しません。