php raabitmq中间件_Laravel框架安装RabbitMQ消息中间件步骤

Laravel5.6 整合 RabbitMQ 消息队列

简介:

Laravel 队列为不同的后台队列服务提供了统一的 API,例如 Beanstalk,Amazon SQS,Redis,甚至其他基于关系型数据库的队列。队列的目的是将耗时的任务延时处理,比如发送邮件,从而大幅度缩短 Web 请求和响应的时间。

队列配置文件存放在 config/queue.php。每一种队列驱动的配置都可以在该文件中找到,包括数据库、Beanstalkd、Amazon SQS、Redis以及同步(本地使用)驱动。其中还包含了一个 null 队列驱动用于那些放弃队列的任务。

本程序猿Laravel框架的版本为5.8(亲测5.7亦可)

1、Composer 安装 laravel-queue-rabbitmq

composer require vladimir-yuldashev/laravel-queue-rabbitmq

2、在 config/app.php 文件中,providers 中添加:

VladimirYuldashev\LaravelQueueRabbitMQ\LaravelQueueRabbitMQServiceProvider::class,

2.1、有时composer版本不足会出现种种错误,所以防止意外升级一下composer版本(确定无误亦可省略)

composer update

3、在 app/config/queue.php(版本不同,大部分用户在没有在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 notexists'queue_declare_bind' => env('RABBITMQ_QUEUE_DECLARE_BIND', true), // create the queue if not exists andbind 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),

],

],

4、修改 .env 文件

QUEUE_CONNECTION=rabbitmq #修改一下

RABBITMQ_HOST=112.74.182.5#要连接的主机名

RABBITMQ_PORT=5672#端口号

RABBITMQ_VHOST=/RABBITMQ_LOGIN=admin #mq登录名

RABBITMQ_PASSWORD=admin #mq登录密码

RABBITMQ_QUEUE=test11111 #mq连接的名称(随便写)

PS:修改.env文件时要注意此六行代码在你的文件中没有重复出现,或者重复出现但“=”后面的属性不一样也不行,可能会引起冲突,功能出现灵异错误

5、创建任务类

php artisan make:job Queue

执行之后会生成一个文件 app/Jobs/Queue.php文件

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

use Illuminate\Bus\Queueable;

use Illuminate\Foundation\Bus\Dispatchable;

use Illuminate\Queue\SerializesModels;

use Illuminate\Queue\InteractsWithQueue;

use Illuminate\Contracts\Queue\ShouldQueue;classQueue implements ShouldQueue

{

use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

private $data;/**

*Queue constructor.*@param $data*/publicfunction__construct($data)

{

$this->data =$data;

}/**

*Execute the job.*

*@return void*/publicfunctionhandle()

{

return json_encode($this->data);

}

}

6、生产,把数据放进 mq 队列,使用命令创建一个控制器

php artisan make:controller QueuedController

控制器中内容,可直接参考亦可按照自己思路修改,如下:

use Illuminate\Http\Request;

use App\Http\Requests;

use App\Jobs\Queue;classQueuedController extends Controller

{

publicfunctionTest(){

$arr=array('time'=>time()

);

$this->dispatch(new Queue($arr));

echo"成功";

}

}

7、在路由配置文件--web.php 中加入一个路由,用来调用控制器中的test方法

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

8、可以在浏览器测试代码是否流畅

8.2同时输入命令 、执行命令进行消费:

php artisan queue:work

例:

打开rabbitMQ中可以看到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值