何时在 Laravel Horizo​​n 中使用多个主管

esk*_*imo 6 php laravel

在我config/horizon现在有:

'production' => [
            'supervisor-1' => [
                'connection' => 'redis',
                'queue' => ['arbitrage'],
                'balance' => 'auto',
                'processes' => 2,
                'tries' => 1,
            ],
            'supervisor-2' => [
                'connection' => 'redis',
                'queue' => ['trade'],
                'balance' => 'auto',
                'processes' => 4,
                'tries' => 1,
            ],
            'supervisor-3' => [
                'connection' => 'redis',
                'queue' => ['balance', 'trade_meta'],
                'balance' => 'auto',
                'processes' => 5,
                'tries' => 1,
            ],
            'supervisor-4' => [
                'connection' => 'redis',
                'queue' => ['notifications'],
                'balance' => 'auto',
                'processes' => 2,
                'tries' => 1,
            ],
        ],
Run Code Online (Sandbox Code Playgroud)

我这样做是因为我想确保每个队列都有分配的工作人员,不同的队列并行运行并且它们不会相互影响,例如,即使notifications队列有几十个作业,trade队列为空。

我的问题是,如果这有意义,我什么时候应该使用多个主管?或者:我上面的配置与做的有什么不同:

    'supervisor-1' => [
        'connection' => 'redis',
        'queue' => ['arbitrage', 'trade', 'balance', 'trade_meta', 'notifications'],
        'balance' => 'auto',
        'processes' => 10,
        'tries' => 1,
    ],
Run Code Online (Sandbox Code Playgroud)

考虑到我指定了 10 个工作人员,这仅在这些队列中同时有 10 个以上的工作合并时才重要吗?

队列中可能同时有大约 10 到 30 个作业,而且将来可能会增加。这就是我以这种方式构建配置的原因,但我不确定定义多个主管的确切含义。

Ste*_*ütt 1

当我需要确保有工作人员同时分配到多个队列,或者如果我需要为某些队列使用不同的连接或平衡方法时,我会这样做。

在第一个示例中,如果通知队列中只有作业,则其他队列中的所有工作人员都将处于空闲状态。这意味着套利队列中的大量作业不会阻碍通知的发送。

在后一个示例中,您可以确保只要有足够的作业来满足所有进程的总体需求,所有进程都会被使用,但是任一队列中的大队列都会延迟其后列出的队列中作业的执行。