Я использую базу данных для очереди.
php artisan queue:work не запущен.
Если я добавлю в очередь из App\Models\Mail: ProcessMail::dispatch(['test' => 'test'); значение auto_increment изменилось, но строки в базе данных нет, ошибок в логах и исключений нет. Если я попробую ProcessMail::dispatch(['test' => 'test'); в контроллере, все будет нормально: строка создается в базе данных.
Это код ProcessMail:
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Log;
class ProcessMail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
private $mailData;
/**
* Create a new job instance.
*
* @param [] $mailData
* @return void
*/
public function __construct($mailData)
{
$this->mailData = $mailData;
Log::info('job constructor');
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
Log::info('job handle');
}
}
Структура таблицы очереди:
CREATE TABLE `jobs` (
`id` bigint(20) UNSIGNED NOT NULL,
`queue` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
`attempts` tinyint(3) UNSIGNED NOT NULL,
`reserved_at` int(10) UNSIGNED DEFAULT NULL,
`available_at` int(10) UNSIGNED NOT NULL,
`created_at` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Как я могу решить эту проблему?
@ErkanÖzkök Привет. Я поделился своей структурой, но по умолчанию она из php artisan queue:table






Я нашел проблему. Я вызываю ProcessMail::dispatch(['test' => 'test'); после DB::beginTransaction(); и потому что я отлаживаю - я запускаю DB::rollback(); Итак, созданное задание удалено из таблицы. Это исключительно моя вина. Возможно, кто-то сэкономит время.
Можете ли вы поделиться своей структурой таблицы очереди