我和主管一起跑视野,但后来杀死了主管,我只是在跑步
php artisan horizon
我有 2 个队列和两个单独的主管。这是地平线配置。
'defaults' => [
'logger' => [
'connection' => 'redis',
'queue' => [env('QUEUE_DEFAULT', '{default}')],
'balance' => 'simple',
'maxProcesses' => 1,
'memory' => 128,
'tries' => 2,
'timeout' => 30,
'nice' => 0,
],
'scheduler' => [
'connection' => 'redis',
'queue' => [env('QUEUE_SCHEDULE', '{schedule}')],
'balance' => 'simple',
'maxProcesses' => 1,
'memory' => 128,
'tries' => 3,
'timeout' => 30,
'nice' => 1,
],
],
'environments' => [
'production' => [
'logger' => [
'maxProcesses' => 3,
'balanceMaxShift' => 1,
'balanceCooldown' => 3,
'memory' => 256
],
'scheduler' => [
'maxProcesses' => 2,
'balanceMaxShift' => 1,
'balanceCooldown' => 3,
'memory' => 256
],
],
'develop' => [
'logger' => [
'maxProcesses' => 2,
'balanceMaxShift' => 1,
'balanceCooldown' => 3
],
'scheduler' => [
'maxProcesses' => 2,
'balanceMaxShift' => 1,
'balanceCooldown' => 3
],
],
'local' => [
'logger' => [
'maxProcesses' => 2,
],
'scheduler' => [
'maxProcesses' => 3,
],
],
],
在开发环境中进行测试时,horizon 会随机处理默认队列中的一项作业。默认队列保存由排队事件侦听器推送的作业,该侦听器除了将日志写入文件之外什么都不做。它随机工作并处理一项工作,然后一切都在地平线上挂起,从未处理过。如果我跑
php aritsan horizon:terminate
然后重新启动 Horizon,有时它会处理 1 个作业,然后再次开始将所有内容置于待处理状态。
这是我的 redis 队列和数据库配置。
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => env('QUEUE_DEFAULT', '{default}'),
'retry_after' => 900,
'block_for' => null,
],
DB:
'redis' => [
'cluster' => true,
'client' => env('REDIS_CLIENT', 'predis'),
'options' => [
'cluster' => env('REDIS_CLUSTER', 'redis'),
],
'clusters' => [
'default' => [
[
'scheme' => env('REDIS_SCHEME', 'tcp'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_DATABASE', 1),
],
],