aloware/fair-queue

Laravel 包,用于提供针对多个分区的公平作业消费。

安装数: 10,449

依赖: 0

建议者: 0

安全性: 0

星标: 6

关注者: 2

分支: 1

开放问题: 0

语言:Vue

v1.48 2023-04-14 05:53 UTC

README

Laravel 包,用于提供针对多个分区的公平作业消费。

安装

composer require aloware/fair-queue

资产

运行以下命令以发布资产和配置文件

php artisan fair-queue:publish

用法

此包使用 Redis 作为数据存储。默认情况下,它使用 default Redis 连接。您可以在 fair-queue 配置文件中配置使用其他连接,或者在环境文件中设置。

FAIR_QUEUE_REDIS_DB="default"
FAIR_QUEUE_KEY_PREFIX="fair-queue"

现在,您需要将 Job 类中需要公平消费功能的 use Dispatchable; 替换为 use FairDispatchable;

<?php

namespace App\Jobs;

use Aloware\FairQueue\FairDispatchable;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class ExampleJob implements ShouldQueue
{
    use FairDispatchable, InteractsWithQueue, Queueable, SerializesModels;
...

您可以在调度时使用 ->fairConsume() 来分区您的数据,并让您的队列作业在这些分区中公平消费。

ExampleJob::dispatch()
    ->onConnection($connection)
    ->onQueue($queue)
    ->fairConsume($companyId);

重试

理解此包的机制非常重要。您可能会认为已发送到队列的 FairSignalJob(而不是原始作业)并不知道在消费者接收到信号后将要处理的确切作业。

在失败/重试的情况下,没有保证相同的作业会被相同的信号选中进行处理。

因此,您在 queue:work 命令中配置的重试次数是无效的。建议将其设置为最大的数字(例如 10)作为最大重试次数,并使用公平队列的 ->tries() 链式调用设置重试次数。

ExampleJob::dispatch()
    ->onConnection($connection)
    ->onQueue($queue)
    ->fairConsume($companyId)
    ->tries(3);

监控

查看仪表板以监控队列分区、作业等。

https://your.domain/fairqueue/dashboard

许可证

MIT 许可证(MIT)。请参阅 许可证文件 获取更多信息。