Я пытаюсь настроить Events, Listeners и Jobs в одном из моих проектов. Код может работать, если я удаляю "Implements ShouldQueue". Но после того, как я включил в свой класс реализации ShouldQueue, он перестает работать
Мой EventServiceProvider
class EventServiceProvider extends ServiceProvider
{
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
'App\Events\IncorpPaid' => [
'App\Listeners\ProcessIncorpReceived',
],
];
}
Класс моего мероприятия
Namespace App\Events;
use App\Company;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class IncorpPaid
{
use Dispatchable, SerializesModels;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(Company $company)
{
$this->company = $company;
}
}
Мой слушатель
namespace App\Listeners;
use App\Company;
use App\Events\IncorpPaid;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Http\Request;
use Illuminate\Queue\SerializesModels;
class ProcessIncorpReceived
{
//use SerializesModels;
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
}
/**
* Handle the event.
*
* @param IncorpPaid $event
* @return void
*/
public function handle(IncorpPaid $event)
{
\App\Jobs\SendKYC::dispatch($event->company);
}
}
И, наконец, мой код проблемы.
Следующие работы. Но проблема в том, что это не ставит работу в очередь.
namespace App\Jobs;
use App\Company;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class SendKYC
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(Company $company)
{
$this->company = $company;
}
/**
* Execute the job.
*
* @return void
*/
public function handle(Company $company)
{
//error_log(print_r($this->company->puc,true));
// error_log(print_r($company,true));
\App\Services\SendDocsForSignature::processKYC($this->company);
}
}
Но это ставит в очередь работу, но не работает. $ this-> company возвращает пустую модель компании.
namespace App\Jobs;
use App\Company;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class SendKYC implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(Company $company)
{
$this->company = $company;
}
/**
* Execute the job.
*
* @return void
*/
public function handle(Company $company)
{
\App\Services\SendDocsForSignature::processKYC($this->company);
}
}