daison/laravel-horizon-cluster

支持集群的修改版laravel/horizon

0.2.0 2024-04-19 04:52 UTC

This package is auto-updated.

Last update: 2024-09-19 05:53:19 UTC


README

Packagist Downloads

seeking's laravel horizon

Laravel Horizon - 集群支持

此包扩展了 Laravel Horizon,以支持 Redis 集群。根据我的测试,它还应该与 AWS 弹性负载均衡器兼容。

安装

composer require daison/laravel-horizon-cluster

安装此包后,现在使用 horizon:install 发布资源

php artisan horizon:install

移除自动发现

修改你的原始laravel的 composer.json 并添加以下内容

{
    "extra": {
        "laravel": {
            "dont-discover": [
                "laravel/horizon"
            ]
        }
    }
}

使用修改后的horizon

修改你的 config/app.php

return [
    'providers' => [
        // ...

        Daison\LaravelHorizonCluster\AppServiceProvider::class,
        App\Providers\HorizonServiceProvider::class,
    ],
];

config/database.php

通常你的laravel config/database.php 应该看起来像这样。

return [
    'redis' => [
        'client' => 'predis',

        'clusters' => [
            'default' => [
                [
                    'host'     => env('REDIS_HOST', '127.0.0.1'),
                    'port'     => env('REDIS_PORT', '6379'),
                    'password' => env('REDIS_PASSWORD', null),
                    'database' => 0,
                ],
            ],
            // ...
        ],

        'options' => [
            'cluster' => 'redis',
        ],
    ],
];

config/horizon.php

确保你的horizon将具有这种配置或类似的配置。

return [
    'use' => 'clusters.default',

    // ...

    'defaults' => [
        'worker' => [
            'connection' => 'redis',
            'balance'    => env('HORIZON_QUEUE_WORKER_BALANCE', false),
            'timeout'    => env('HORIZON_QUEUE_WORKER_TIMEOUT', 10),
            'sleep'      => env('HORIZON_QUEUE_WORKER_SLEEP', 3),
            'maxTries'   => env('HORIZON_QUEUE_WORKER_MAXTRIES', 3),
        ],
    ],

    'environments' => [
        env('APP_ENV') => [
            'worker' => [
                'connection' => 'redis',
                'queue'      => [
                    '{redis-high}',
                    '{redis}',
                    '{redis-low}',
                ],
                'memory'       => env('HORIZON_QUEUE_WORKER_MEMORY', 128),
                'minProcesses' => env('HORIZON_QUEUE_WORKER_MIN_PROCESSES', 1),
                'maxProcesses' => env('HORIZON_QUEUE_WORKER_MAX_PROCESSES', 3),
            ],
        ],
    ],
];

享受使用具有集群支持的 Laravel Horizon!