Laravel 8 queue avec job asynchrone
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:
$this->dispatch((new RebuildAvailabilities($structureId, $id)));
et Voici mon job :
Code:
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