我尝试完成一个简单的工作,就像Laravel文档中的示例一样 - https://laravel.com/docs/5.2/queues#writing-job-classes - 但我收到此错误:"没有为命令[App \ Jobs \ SendReminderEmail]&#注册处理程序34。
我按照说明制作了jobs表甚至fail_jobs表,并且有完整的示例代码。
我保证handle()函数在那里,所以我不知道还有什么可以遗漏。
问候。
使用代码更新:
首先我在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());
答案 0 :(得分:7)
为了它的价值,我遇到了类似的问题并实施了“SelfHandling”。似乎解决了这个问题。
尝试更改此内容:
class SyncFromJson extends Job implements ShouldQueue
对此:
class SyncFromJson extends Job implements ShouldQueue, SelfHandling
答案 1 :(得分:2)
我遇到了完全相同的问题。在我的情况下,原来是应用程序配置中的错误提供程序是问题。我使用以前的项目作为我的新项目的框架并继承了Laravel集合总线包(这不是必需的。)当我删除集合总线包(laravelcollective / bus)时,运行composer update并替换
集体\总线\ BusServiceProvider ::类,
带
照亮\总线\ BusServiceProvider ::类,
一切顺利。这可能是一个类似的问题?