最新消息:欢迎加入小松的QQ群一起讨论一起学习,搜索页面修改成lua+ElasticSearch,使用php这个页面速度相对慢一点,优化之后速度杠杠的,如有问题请加群联系我

laravel5 rabbitmq使用测试

PHP 402浏览 0评论

今天百度了一下laravel5 rabbitmq的使用,百度出来的结果有点看不懂,于是写篇文章来讲一下rabbitmq的使用,如果没有安装rabbitmq【推荐阅读:windows安装RabbitMQ Server开启 rabbitmq-plugins

我这里使用的是laravel-queue-rabbitmq的插件

laravel-queue-rabbitmq插件添加

github: https://github.com/vladimir-yuldashev/laravel-queue-rabbitmq
laravel使用添加rabbitmq

composer require vladimir-yuldashev/laravel-queue-rabbitmq:5.2
composer update

config/app.php文件中,providers数组中添加

VladimirYuldashev\LaravelQueueRabbitMQ\LaravelQueueRabbitMQServiceProvider::class,

app/config/queue.php文件中,connections数组中添加

'rabbitmq' => [
    'driver'                => 'rabbitmq',

    'host'                  => env('RABBITMQ_HOST', '127.0.0.1'),
    'port'                  => env('RABBITMQ_PORT', 5672),

    'vhost'                 => env('RABBITMQ_VHOST', '/'),
    'login'                 => env('RABBITMQ_LOGIN', 'guest'),
    'password'              => env('RABBITMQ_PASSWORD', 'guest'),

    'queue'                 => env('RABBITMQ_QUEUE'), // name of the default queue,

    'exchange_declare'      => env('RABBITMQ_EXCHANGE_DECLARE', true), // create the exchange if not exists
    'queue_declare_bind'    => env('RABBITMQ_QUEUE_DECLARE_BIND', true), // create the queue if not exists and bind to the exchange

    'queue_params'          => [
        'passive'           => env('RABBITMQ_QUEUE_PASSIVE', false),
        'durable'           => env('RABBITMQ_QUEUE_DURABLE', true),
        'exclusive'         => env('RABBITMQ_QUEUE_EXCLUSIVE', false),
        'auto_delete'       => env('RABBITMQ_QUEUE_AUTODELETE', false),
    ],

    'exchange_params' => [
        'name'        => env('RABBITMQ_EXCHANGE_NAME', null),
        'type'        => env('RABBITMQ_EXCHANGE_TYPE', 'direct'), // more info at http://www.rabbitmq.com/tutorials/amqp-concepts.html
        'passive'     => env('RABBITMQ_EXCHANGE_PASSIVE', false),
        'durable'     => env('RABBITMQ_EXCHANGE_DURABLE', true), // the exchange will survive server restarts
        'auto_delete' => env('RABBITMQ_EXCHANGE_AUTODELETE', false),
    ],

],

.env中添加

QUEUE_DRIVER=rabbitmq

RABBITMQ_HOST=127.0.0.1
RABBITMQ_PORT=5672
RABBITMQ_VHOST=/
RABBITMQ_LOGIN=guest
RABBITMQ_PASSWORD=guest
RABBITMQ_QUEUE=queue_name

PS.默认的.env文件中已经有QUEUE_DRIVER参数修改一下

测试rabbitmq在laravel中的使用

创建一个任务类

php artisan make:job QueuedTest

执行之后app/Jobs目录下生成一个QueuedTest.php

修改QueuedTest.php的内容,下面主要的功能是添加一个时间并且转化成json

<?php

namespace App\Jobs;

use App\Jobs\Job;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;


class QueuedTest extends Job implements ShouldQueue
{
    use InteractsWithQueue, SerializesModels;
    private $data;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($data)
    {
        //
        $data['date']=date("Y-m-d H:i:s");
        $this->data = $data;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //
        echo json_encode($this->data);
    }
}

创建一个控制器

php artisan make:controller QueuedController

执行之后生成app/Http/Controllers/QueuedController.php文件
修改内容

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Jobs\Queue;

class QueuedController extends Controller
{
    public function Test(){
        $arr=array(
            'time'=>time()
        );
        $this->dispatch(new Queue($arr));
    }
}

添加路由
修改文件app/Http/routes.php
添加

Route::get('/test','QueuedController@Test');

开始测试
每执行一次
http://127.0.0.1/test

就会往队里里添加

rabbitmq插入队列数据
执行命令

php artisan queue:work --daemon

开始执行队

我的队列里是直接打印数据

rabbitmq读取队列数据

QQ交流群:136351212(满) 455721967

如无特别说明,本站文章皆为原创,若要转载,务必请注明以下原文信息:
转载保留版权:小松博客» laravel5 rabbitmq使用测试
本文链接地址:https://www.phpsong.com/3163.html

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
木有头像就木有JJ!点这里按步骤申请Gravatar头像吧!