Laravel 5.7 очередь заданий не работает асинхронно - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь использовать Laravel 5.7 очередь заданий , чтобы сделать какие-то вставки / обновления в моей базе данных, и я, вероятно, сделал что-то не так, потому что, когда задание вызывается, оно, похоже, блокирует мое приложение, поэтомуне работает асинхронно.Мой код имеет следующую структуру:

.env

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

queue.php

'default' => env('QUEUE_CONNECTION', 'sync'),

'connections' => [

    'sync' => [
        'driver' => 'sync',
    ],

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

job_caller.php

method_name(){ 
  InsereProspeccao::dispatch($path, $evento, $equipe)->onQueue('jobs');
  retur some_msg_to_user;
}

job_name.php

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

class InsereProspeccao implements ShouldQueue{

use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

  private $path = '';
  private $evento = '';
  private $equipe = '';


 public function __construct($path, $evento, $equipe){
     $this->path = $path;
     $this->evento = $evento;
     $this->equipe = $equipe;        
 }

   public function handle(){
      //all program logic
      //access DB for insert/update
   }

}

Obs .: Я ЧИТАЮ ДОКУМЕНТАЦИЮ, НО Я НЕ УЗНАЮ, ЧТО ТАКОЕНЕПРАВИЛЬНО!

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Вы используете QUEUE_CONNECTION=sync, который в основном работает синхронно.

Пожалуйста, выполните следующие шаги:

  • Выполните php artisan queue:table, что создаст миграцию для jobs таблица автоматически

  • Запустите php artisan migrate, которая создаст таблицу, запустив миграцию

  • Измените QUEUE_CONNECTION=database и по умолчанию она будетавтоматически возьмите jobs таблицу для управления очередями.

  • Запустите php artisan config:clear, чтобы очистить кэш конфигурации приложения

Это должно быть хорошо,Проверьте документацию для получения дополнительной помощи.

0 голосов
/ 22 февраля 2019

Попробуйте это: QUEUE_CONNECTION=database и все должно быть хорошо.

Вы также можете настроить rabbitmq или другие драйверы, потому что их реализация намного более продвинута и будет более производительной.Но база данных - хорошее начало.

...