0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

laravel ジョブの多重起動ロック

Posted at

用語説明

キューとは

キューは、ある処理を非同期で行うための仕組みです。
キューにジョブが溜まっていき、任意の順番に実行していきます。

ジョブとは

ジョブは、非同期で行う「ある処理」の内容になります。

cache_locks

cache_driverがdatabaseの場合、ジョブの多重起動ロックをかけた場合、cache_locksテーブルにジョブの情報が保持され、有効期限が切れるまでそのジョブは起動されなくなります。

多重起動ロック

public function middleware()
{
    return [new WithoutOverlapping($this->user->id)];
}

有効期限の設定

public function middleware()
{
    return [(new WithoutOverlapping($this->order->id))->expireAfter(180)];
}

ジョブが重複した場合

再実行して欲しくない時は、dontRelease()を使用します。
重複したジョブを削除してくれます。

public function middleware()
{
    return [(new WithoutOverlapping($this->order->id))->dontRelease()];
}

「予期せず」ジョブが重複してしまった場合、データの整合性や引数の中身等がない状態でジョブが実行され、例外エラーが発生します。

参照:
https://readouble.com/laravel/8.x/ja/queues.html

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?