【发布时间】:2019-05-03 06:18:39
【问题描述】:
我在我的 laravel 应用程序上使用多个 redis 队列来管理重复发生的任务。
除了推送到队列中的作业通常运行时间超过 10 分钟(大约 9-15 分钟)之外,一切正常。
在 Laravel forge 上,我在一个超时 1800 的 redis 队列上创建了一个新工作人员,但运行时间超过 10 分钟的作业仍然被终止。不到 10 分钟的作业按预期工作。
有没有我遗漏的配置?
【问题讨论】:
我在我的 laravel 应用程序上使用多个 redis 队列来管理重复发生的任务。
除了推送到队列中的作业通常运行时间超过 10 分钟(大约 9-15 分钟)之外,一切正常。
在 Laravel forge 上,我在一个超时 1800 的 redis 队列上创建了一个新工作人员,但运行时间超过 10 分钟的作业仍然被终止。不到 10 分钟的作业按预期工作。
有没有我遗漏的配置?
【问题讨论】:
您应该在 config/queue.php 中将 retry_after 值设置为 1800。
您可以创建多个使用相同连接的 redis 队列,并将您的作业分派到指定的队列上。
queue.php:
'redis' => [
'connection' => env('QUEUE_REDIS_CONNECTION'),
'driver' => 'redis',
'queue' => 'default',
'retry_after => 60
],
'redis_low' => [
'connection' => env('QUEUE_REDIS_CONNECTION'),
'driver' => 'redis',
'queue' => 'email',
'retry_after => 1800
]
在你的工作中:
Job::dispatch()->onQueue('email');
【讨论】: