laravel框架中的消息队列

队列可以将处理异步化,将处理过程放到后台,前端为用户快速的相应结果,为用户提供更好的体验

安装队列扩展包需要登录到homestead虚拟机里,

vagrant ssh
composer require "predis/predis:~1.0"

==附==
如果要将消息通知加到队列中,可以在通知类中增加一个接口,如下:

use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;

class RegisterNotification extends Notification implements ShouldQueue
{
    use Queueable;

安装完成后,如果需要队列错误表,则执行以下命令:

php artisan queue:failed-table

php artisan migrate

如果需要队列监控面板。则执行以下命令(仍需要在homestead虚拟机里安装):

composer require laravel/horizon

php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"

安装完成后可以通过以下命令启动队列监听

php artisan horizon

启动之后就可以通过路由/horizon来访问监听面板

注:①在登录到虚拟机执行命令时,需要进入到虚拟机中具体的项目目录内再执行相应命令

②在使用消息队列时,需要将.env配置文件中的QUEUE_DRIVER值改为redis,不然如果是默认值sync,那么则还是同步处理

消息通知

通过如下命令创建一个消息通知类

php artisan make:notification RegisterNotification

在相应方法内发送通知的方法:通过Notification类调用send方法,send方法的第一个参数是含有email字段的数据,第二个参数是消息通知类,如下是注册成功监听类中的通知发送

public function handle(Registered $event)
    {
        $user = $event->user;
        Notification::send($user, new RegisterNotification($user));
        return redirect('/');
    }

发送邮件或通知,在开发时可以通过laravel框架自带的邮件服务器来测试,.env文件中的配置如下:

APP_URL=http://homestead.sw

MAIL_DRIVER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025

配置完成后可以通过域名:8025来接收邮件

猜你喜欢

转载自blog.csdn.net/weixin_41767780/article/details/81835101