首页 文章

Laravel Job - 没有为命令注册的处理程序

提问于
浏览
3

我尝试完成一个简单的工作,就像Laravel文档中的示例一样 - https://laravel.com/docs/5.2/queues#writing-job-classes - 但我收到此错误:"No handler registered for command [App\Jobs\SendReminderEmail]" .

我按照说明制作了jobs表,甚至是failed_jobs表,并且有完整的示例代码 .

我保证handle()函数在那里,所以我不知道还有什么可以丢失 .

问候 .

Update with code

首先我在Laravel示例中使用了该类,但后来我将其简化为:

<?php

namespace App\Jobs;

use App\Jobs\Job;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;

class SyncFromJson extends Job implements ShouldQueue
{
use InteractsWithQueue, SerializesModels;

/**
 * Create a new job instance.
 *
 * @return void
 */
 public function __construct()
 {
     //
 }

/**
 * Execute the job.
 *
 * @return void
 */
public function handle()
{
    //
    $var = "fooooo";
    \Log::info("job is running!!!", $var);
}
}

为了调用这个作业,我在一个调度作业的控制器中创建了一个简单的方法:

$job = (new SyncFromJson())->delay(3);
$this->dispatch($job);

也试过这个: $this->dispatch(new SyncFromJson());

2 回答

  • 2

    对于它的 Value ,我遇到了类似的问题,实施'SelfHandling'似乎解决了这个问题 .

    尝试改变这个:

    class SyncFromJson extends Job implements ShouldQueue
    

    对此:

    class SyncFromJson extends Job implements ShouldQueue, SelfHandling
    
  • 7

    我有同样的问题 . 在我的情况下,原来是应用程序配置中的错误提供程序是问题 . 我使用以前的项目作为我的新项目的框架并继承了Laravel集合总线包(这不是必需的 . )当我删除集合总线包(laravelcollective / bus)时,运行composer update并替换

    集体\ Bus 车\ BusServiceProvider ::类,

    照亮\ Bus 车\ BusServiceProvider ::类,

    一切正常 . 这可能是一个类似的问题?

相关问题