Laravel 10:dispatchSync 方法抛出异常:无法解析的依赖关系解析 [参数 #0 [ <required> $app ]]

问题描述 投票:0回答:1

同步调度作业时,会抛出异常:

Unresolvable dependency resolving [Parameter #0 [ <required> $app ]] in class Illuminate\Support\ServiceProvider

仅当作业失败时才会出现此异常。 删除“可排队”特性可以解决此问题,但我需要同步并在队列中运行此作业。

在以前的 Laravel 版本中它可以工作。

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class SomeJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    private array $data;

    /**
     * Create a new job instance.
     *
     * @param array $data
     */
    public function __construct( array $data = [] )
    {
        $this->data = $data;
    }

    /**
     * Execute the job.
     */
    public function handle(): void
    {
        // ...
        $this->fail();
    }
}


SomeJob::dispatch($data); // OK
SomeJob::dispatchSync($data) // Exception :((
laravel queue laravel-10
1个回答
0
投票

我已经弄清楚了。 原因是

AppServiceProvider
boot
方法中的以下行:

Queue::failing([ AppServiceProvider::class, 'handleFailedJob' ]);

指的是这个方法:

public static function handleFailedJob(JobFailed $event)
{
    // ..
}
© www.soinside.com 2019 - 2024. All rights reserved.