Laravel App checks redis database for data pushed by 3rd Party.
Laravel Scheduler runs artisan command php artisan check:redis
every 10 mins.
I am expecting about 20k records to be checked every hour at peak times. Please also suggest me if my whole approach as a whole is flawed.
- Scheduler runs check:redis command every 10 mins
- check:redis command should dispatch job to be queued
- Queue will later process jobs and create rows as required.
Below is handle() method from App\Console\Commands\CheckRedis
public function handle()
{
while(Redis::llen('schema_queue')){
dispatch(new CheckRedisJob($redis->rpop('schema_queue')))
}
}
and this is App\Jobs\CheckRedisJob
public function handle()
{
Stage::create([
'model' => $this->entity->model,
'payload' => json_encode($this->entity->payload)
]);
}
Now when I run the command, instead of queuing, it's directly creating what's in Stage::create()
Sidenote: Each job dispatched will have a Model name & payload and will be dynamically inserted to specified table by validating and/or checking as required which obviously takes time.(below is sample model/payload) That's where the whole idea of processing the Job Queue is.
{
model : "Profession",
payload: {
id: '......',
name: '........',
contract_type: '........',
employment_type: '........',
department: '........'
.... and like 20 other fields...
}
}