Вставить данные в очередь в Laravel - PullRequest
0 голосов
/ 10 декабря 2018

Laravel App проверяет базу данных redis на наличие данных, отправленных сторонней организацией.

Laravel Scheduler запускает команду artisan php artisan check:redis каждые 10 минут.

Я ожидаю, что около 20 000 записей будут проверяться каждый часв часы пик.Просьба также предложить мне, если весь мой подход в целом некорректен.

  1. Планировщик запускает команду check:redis каждые 10 минут
  2. check:redis команда должна отправлять задание в очередь
  3. Очередь будет позже обрабатывать задания и создавать необходимые строки.

Ниже приведен метод handle() из App\Console\Commands\CheckRedis

public function handle()
{
  while(Redis::llen('schema_queue')){
    dispatch(new CheckRedisJob($redis->rpop('schema_queue')))
  }
}

, и это App\Jobs\CheckRedisJob

public function handle()
{
    Stage::create([
        'model' => $this->entity->model,
        'payload' => json_encode($this->entity->payload)
    ]);
}

Теперь, когда я запускаю команду вместо очереди, она непосредственно создает то, что находится в Stage::create()

Sidenote: Каждое отправленное задание будет иметь имя модели, полезную нагрузку и будетбыть динамически вставленным в указанную таблицу путем проверки и / или проверки, как требуется, что, очевидно, требует времени. (Ниже приведен пример модели / полезной нагрузки). Вот где вся идея обработки очереди заданий.

{
  model : "Profession",
  payload: {
              id: '......',
              name: '........',
              contract_type: '........',
              employment_type: '........',
              department: '........'
              .... and like 20 other fields...

           }
}
...