1.先打开本地的nginx服务和redis服务
2.使用php artisan make:job ChatSendMSg创建 ChatSendMSg队列文件
3.官网说明
这一步使用redis数据库不需要配置 👇👇👇👇👇👇 这里是使用mysql的配置
php artisan queue:table
这个是创建数据库代码模型。还没有写入数据库 运行会生成这个文件
php artisan migrate
这个是往数据库创建
以上这个两句指令可以手动创建加入数据库,这个的指令只要是创建队列数据库进行存队列
以下是数据库格式
CREATE TABLE `yun_jobs` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`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,
PRIMARY KEY (`id`),
KEY `jobs_queue_index` (`queue`(250))
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
这是修改过的格式
CREATE TABLE `yun_failed_jobs` (
`id` int(30) NOT NULL AUTO_INCREMENT COMMENT '主键',
`connection` text COMMENT '存储类型',
`queue` text COMMENT '队列名称',
`payload` longtext COMMENT '上传失败数据',
`exception` longtext COMMENT '错误异常信息',
`failed_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '错误时间',
`log_time` varchar(255) DEFAULT NULL COMMENT '次数标记',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息队列失败记录表';
这一步使用redis数据库不需要配置 👆👆👆👆👆👆👆
配置连接数据库文件
代码快
'redis' => [
'client' => 'predis',
//默认位置
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('DATABASE_KEY', 0),
],
//session的存储位置
'session' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 1,
],
//队列的缓存位置
'queue' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 2,
],
//cache的缓存位置
'cache' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 3,
]
],
在配置
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => 'default',
'retry_after' => 90,
'block_for'=>null, //根据您的队列负载调整此值要比连续轮询 Redis 数据库中的新任务更加有效。例如,您可以将值设置为 5,以指示驱动程序在等待任务变得可用时应该阻塞 5 秒:
],
####运行指令
默认消费
php artisan queue:work
指定消费
php artisan queue:listen redis --queue=test
注意:建议使用指定消费,默认会出现消费失败