8

ユーザーに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プロパティにイベントを追加して、イベントを発生させることです。ただし、キュー名を指定すると機能しません。

4

2 に答える 2