Моя настройка:
- Ubuntu 16.04
- Laravel 5.6
- PHP 7.2.4
- MySQL 5.7.22
У меня очень странная ситуация с очередями. Я настроил базу данных в качестве драйвера очереди, но когда я использую консоль tinker
для проверки диспетчеризации заданий, первое задание всегда исчезает: его нет в таблице jobs
, его нет в таблице failed_jobs
, и есть ничего в логах тоже нет. Проблема возникает каждый раз, когда я начинаю новый сеанс tinker
. Если я повторяю рассылку секунду, треть, время и т. Д., Все работает как надо.
Вот простая работа, которую я определил:
class AddToList implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $data;
public function __construct($data)
{
$this->data = $data;
}
public function handle()
{
Log::info('List updated!');
return; // temporarily added for testing
// . . . other code
}
а в тинкере я делаю:
>>> \App\Jobs\AddToList::dispatch([])->onQueue('default')->delay(now());
=> Illuminate\Foundation\Bus\PendingDispatch {#2312}
и ничего нет, как я описал выше. И если я сделаю это во второй раз:
>>> \App\Jobs\AddToList::dispatch([])->onQueue('default')->delay(now());
=> Illuminate\Foundation\Bus\PendingDispatch {#2315}
задание появляется в таблице jobs
и обрабатывается по желанию.
Кто-нибудь сталкивался с чем-то похожим?