mingalevme / illuminate-uqueue
Laravel/Lumen 唯一队列(数据库,Redis)
1.2.1
2020-10-15 18:02 UTC
Requires
- php: >=7.1
- ext-json: *
- illuminate/queue: >=5.8
Requires (Dev)
- doctrine/dbal: ^2.8
- mockery/mockery: ^1.0
- phpunit/phpcov: >=5.0
- phpunit/phpunit: >=7.0
- predis/predis: >=1.0
README
为 Laravel/Lumen 5.5+ 版本提供唯一队列支持。
Travis CI
Codecov
支持的驱动程序
- 数据库
- Redis(基于有序集)
安装
-
composer require mingalevme/illuminate-uqueue
-
在 Laravel 5.5+ 中,服务提供者和外观将自动注册。
对于框架的较旧版本或 Lumen,请按照以下步骤操作
注册适当的服务提供者
\Mingalevme\Illuminate\UQueue\LaravelUQueueServiceProvider::class
或\Mingalevme\Illuminate\UQueue\LumenUQueueServiceProvider::class
。 -
如果您计划使用数据库作为驱动程序,应添加迁移(如果需要,更改表名)
<?php // /src/migrations/2017_01_01_000002_jobs_add_uniqueable.php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class JobsAddUniqueable extends Migration { /** * Run the migrations. * * @return void */ public function up() { if (!Schema::hasColumn('jobs', 'unique_id')) { Schema::table('jobs', function($table) { $table->string('unique_id')->nullable(); $table->unique(['queue', 'unique_id'], 'jobs_queue_unique_id_unique'); }); } } /** * Reverse the migrations. * * @return void */ public function down() { if (Schema::hasColumn('jobs', 'unique_id')) { Schema::table('jobs', function (Blueprint $table) { $table->dropUnique('jobs_queue_unique_id_unique'); $table->dropColumn('unique_id'); }); } } }
- 创建一个实现了接口
\Mingalevme\Illuminate\UQueue\Jobs\Uniqueable
的作业
<?php namespace App\Jobs; use Mingalevme\Illuminate\UQueue\Jobs\Uniqueable; class ExampleJob implements Uniqueable { protected $data; public function __construct(array $data) { ksort($data); $this->data = $data; } public function uniqueable() { return md5(json_encode($this->data)); } public function handle() { // ... } }