Laravel5中队列的mysql配置

消息队列的理解

对于这块,是属于典型的生产者/消费者模型。一个生产者程序制造任务,放进队列里,然后消费者程序去检查队列,发现了任务,就消费它。理论上理解通透了。来看看实际操作。
laravel实现的消息队列

  1. 实现生产者

通过消息队列的模型,我们知道应该有一个生产者,那么在laravel中,该如何去构造这个生产者呢?很简单。

PHP artisan make:command PushMessage –queued

执行完后,可以在app目录下看到 app\Commands\PushMessage.php ,打开这个文件,会看到它集成了一个 Command 这个类,但是呢,我们这里并没有这个类(如果你用的是5.0版本,那么它是存在的,5.1就没有啦)。不要紧张,自己在新建一个 app\Commands\Command.php 代码内容如下:

namespace App\Commands;

abstract class Command
{
//
}

OK!,然后再次回到 app\Commands\PushMessage.php 这个文件,其中有一个方法 handle ,我们这里为了演示,就使用写文件的操作来进行啦。在其中写入以下内容

file_put_contents('D:/webApp/test.txt', 'hello world!');

到这里,生产者就写完了,找个控制器。将这个生产者生成的内容推进队列里边吧。我这里演示,是自己在 app\Http\Controllers\TestController.php 中进行的调用。

这里有两个点,需要注意:
① 这里我们使用的是Queue Facade,但是官方建议使用Bus Facade.两者效果一样,你自己权衡。
② 这里我为了查看效果,特意加了一个60s后,执行队列中的任务。

  1. 队列数据表保存的地方

光生产出来不行的,还得有个地方把这些生产的产品保存起来。这里为了简单,我就使用数据库的方式吧。其他方式大家可以自己试试,都很容易。使用数据库,需要进行以下配置:

打开 config/queue.php,更改默认队列驱动为数据库:

    default’ => env(‘QUEUE_DRIVER’, ‘database’)

配置好,你的数据库连接服务。这个就不说了。通过config/app.php 来配置

执行以下两条命令:

    php artisan queue:table
    php artisan migrate

命令的含义,就是在数据库中创建一个队列表,用来保存任务。
好的,保存任务的列表页搞好了。接下来就是要进行消费了。这就很简单啦。

  1. 队列的消费者

这个消费者的概念,对应上官方文档就是 动队列监听服务 ,当它监听到有要执行的任务时,就会自动按照指定条件执行。

php artisan queue:listen

测试的队列服务

现在是来检验成果的时候了。以我本地环境为例。首先运行程序,产生几个任务:
在浏览器中打开:http://127.0.0.1/laravel/public/index.php
这个时候打开数据库,可看到如下内容: 插入了几条数据

Laravel5中队列的mysql配置_第1张图片
123.png

这个时候,你去对应的目录,就会看到:test.txt 这个文件了。

你可能感兴趣的:(Laravel5中队列的mysql配置)