Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

ciarlill's avatar

Difference between "delay" in Forge, and retry_after in queue config?

I am working on some new long running jobs for our app and having some confusion about the difference between the "delay" setting in forge (which appears to add a --delay=X to the queue worker) and the retry_after setting in my queue config file.

My hope is that --delay and retry_after are doing the same thing, and that specifying --delay overrides the configured retry_after. That is the behavior I want right now. I want to avoid setting up a new queue connection just for these specific long-running jobs. I want my job to timeout after 3600 seconds, and per the docs, I need the job to not retry until longer than that, so 3610 seconds. Here is the daemon that is running:

artisan queue:work database --sleep=10 --daemon --quiet --timeout=3600 --delay=3610 --tries=2 --queue=recordings

I just want to make sure that my config will not conflict with that:

'database' => [
            'driver' => 'database',
            'table' => 'jobs',
            'queue' => 'default',
            'retry_after' => 60
        ],

Can anyone clarify that for me? Thanks

0 likes
2 replies
ciarlill's avatar

It really is not. There is no mention of --delay on that page at all. The only reference to delay is in regards to delayed jobs, which is not what I am asking about here.

I believe it is possible that at one point "delay" was renamed to "retry_after", but I want to be sure using it in the queue worker arguments will override "retry_after".

Please or to participate in this conversation.