您当前的位置: 首页 >  ar

知其黑、受其白

暂无认证

  • 3浏览

    0关注

    1250博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

laravel5.6 基于redis,使用消息队列(邮件推送)

知其黑、受其白 发布时间:2021-06-21 16:53:11 ,浏览量:3

laravel5.6 基于redis,使用消息队列(邮件推送)
  • 用户表
  • config/queue.php 文件如下
  • config/database.php
  • 创建队列任务类(app/Jobs/xxx.php)
  • 控制器将数据添加到队列中
  • 启动、监听队列
    • 监听三种情况:
  • 设置API路由,执行请求,执行队列任务
  • 查看redis是否有队列数据
  • 命令行监听界面
  • 查看邮箱发件箱,邮件已发出
  • 使用Supervisor将队列任务启动 添加到守护进程中
  • 总结

邮件发送如何配置参考:https://www.cnblogs.com/clubs/p/10640682.html

用户表
CREATE TABLE `recruit_users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `phone` varchar(50) CHARACTER SET utf8 DEFAULT NULL COMMENT '手机号码',
  `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `status` tinyint(4) DEFAULT '1' COMMENT '帐户状态(0失效 1正常)',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `lastlogintime` timestamp NULL DEFAULT NULL COMMENT '最后登陆时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

1、在 Laravel 中使用 Redis 你需用通过 Composer 来安装 predis/predis 包文件,不然会报错Class ‘Predis\Client’ not found

composer require predis/predis ^1.1

2、laravel队列配置(配置文件 .env 和 config/queue.php)

QUEUE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=******
REDIS_PORT=6379

当.env 文件没有配置 或者 设置变量为空时,会按照 config/queue.php 文件的配置信息运行laravel,一般只配置.env文件,不修改queue.php文件

config/queue.php 文件如下
return [
    'default' => env('QUEUE_DRIVER', 'redis'),//修改队列驱动,使用redis

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

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

        'beanstalkd' => [
            'driver' => 'beanstalkd',
            'host' => 'localhost',
            'queue' => 'default',
            'retry_after' => 90,
        ],

        'sqs' => [
            'driver' => 'sqs',
            'key' => env('SQS_KEY', 'your-public-key'),
            'secret' => env('SQS_SECRET', 'your-secret-key'),
            'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
            'queue' => env('SQS_QUEUE', 'your-queue-name'),
            'region' => env('SQS_REGION', 'us-east-1'),
        ],

        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
            'queue' => 'default',
            'retry_after' => 90,
            'block_for' => null,
        ],
    ],

    'failed' => [
        'database' => env('DB_CONNECTION', 'mysql'),//队列执行失败 存放的数据库
        'table' => 'failed_jobs',//队列执行失败 存放的表
    ],
];
config/database.php

Redis 在应用中的配置文件存储在 config/database.php,在这个文件中,你可以看到一个包含了 Redis 服务信息的 redis 数组:

'redis' => [
    'client' => 'predis',
    'default' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => 0,//选择使用的redis库
    ],
],
创建队列任务类(app/Jobs/xxx.php)

使用artisan命令 在app/Jobs 目录下创建执行队列任务的类:

php artisan make:job SendEmail

app/Jobs/SendEmail.php 代码如下:

            
关注
打赏
1665558895
查看更多评论
0.4052s