Bonjour,

J'utilise Laravel 8 et je souhaiterais savoir si c'est possible d'exécuter des jobs de manière asynchrone.

Pour l'instant quand j'ajoute des jobs dans une queue, le job en cours doit se terminer avant de passer au suivant.

Dans mon fichier de config j'ai bien QUEUE_CONNECTION=database

Voici comment j'appelle mon job :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
$this->dispatch((new RebuildAvailabilities($structureId, $id)));
et Voici mon job :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
 
namespace App\Jobs;
 
use App\Http\Services\AvailabilityBuilderService;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUniqueUntilProcessing;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
 
// php artisan queue:listen --queue=availabilities --tries=1
 
class RebuildAvailabilities implements ShouldQueue, ShouldBeUniqueUntilProcessing
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
 
    protected $structureId;
    protected $officeId;
 
    /**
     * The number of seconds after which the job's unique lock will be released.
     *
     * @var int
     */
    public $uniqueFor = 3600;
 
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($structureId, $officeId)
    {
        $this->onQueue('availabilities');
 
        $this->structureId = $structureId;
        $this->officeId = $officeId;
    }
 
    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        $availabilityService = app(AvailabilityBuilderService::class);
        $availabilityService->updateAvailabilities($this->structureId, $this->officeId);
    }
 
    public function uniqueId()
    {
        return $this->officeId;
    }
}
Ou-est ce que j'ai fait une erreur svp ?

Merci