I just spent the past two hours trying to figure out why my latest deployment to our dev environment didn't have any Horizon queue workers running. I finally figured out my issue, so here's a lil write up in case you are experiencing the same.
At SafetyTek we are running two queue servers, one for
production and one for our
dev environment. Both had been working fine up until today when I was making some changes.
Earlier in the day I had adjusted the
.env file of our dev environment to have
APP_ENV=dev instead of
APP_ENV=production so that we can disable certain production-only loggers.
At some point after this I was bouncing around our application and noticed that certain actions weren't happening so I decided to hop into the horizon dashboard to see a backlog of jobs and no processes running to consume those jobs.
I spent hours editing configs, hunting down logs, rebooting the server, restarting processes.
As it turns out, in
config/horizon.php there is a configuration key called
environments that allows you to configure certain process settings based on the
APP_ENV you have set.
So our production one was still working fine since the
production environment was configured here, but since there was no
dev key it reads that as "don't start any processes".
The fix is just adding a key for whatever your
APP_ENV is set to
'environments' => [ 'production' => [ 'supervisor-1' => [ 'maxProcesses' => 10, 'balanceMaxShift' => 1, 'balanceCooldown' => 3, ], ], 'dev' => [ 'supervisor-1' => [ 'maxProcesses' => 10, 'balanceMaxShift' => 1, 'balanceCooldown' => 3, ], ], 'local' => [ 'supervisor-1' => [ 'maxProcesses' => 3, ], ], ]
Hopefully this saves someone else a headache!