PHP要安装并打开amqp扩展和sockets扩展
自行安装所基于Erlang环境 RabbitMQ客户端
上链接 https://www.jianshu.com/p/3874a446a1e0
1.安装RabbitMQ扩展
composer require vladimir-yuldashev/laravel-queue-rabbitmq:版本号
根据laravel版本安装对应的版本
https://github.com/vyuldashev/laravel-queue-rabbitmq
2.在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_CONNECTION=rabbitmq #修改一下
RABBITMQ_HOST=127.0.0.1 #要连接的主机名
RABBITMQ_PORT=5672 #端口号
RABBITMQ_VHOST=/
RABBITMQ_LOGIN=guest #mq登录名
RABBITMQ_PASSWORD=guest #mq登录密码
RABBITMQ_QUEUE=rebbitmq #mq连接的名称(随便写)
PS:修改.env文件时要注意此六行代码在你的文件中没有重复出现,或者重复出现但“=”后面的属性不一样也不行,可能会引起冲突,功能出现灵异错误
4.创建任务类
php artisan make:job Queue
执行之后会生成一个文件 app/Jobs/Queue.php文件
修改Queue.php文件内容,下面主要的功能是添加到数据库
<?php
namespace App\Jobs;
use App\Models\TUsers;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class Queue implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
//添加学生
$ini = [
'name' => rand(1, 100),
'sex' => rand(1, 2),
];
$data =TUsers::Create($ini);
echo 1;
}
}
5.生产,把数据放进 mq 队列,使用命令创建一个控制器
<?php
namespace App\Http\Controllers;
use App\Models\TUser;
use App\Jobs\Queue as JobsQueue;
use App\Models\TUsers;
class IndexController extends Controller
{
public function insert()
{
JobsQueue::dispatch();
echo 111;
}
}
6.在路由配置文件–web.php 中加入一个路由,用来调用控制器中的insert方法
Route::get('/index','IndexController@insert');
每访问一次 生产一个
7.执行
php artisan queue:work

8. 登录RabbitMQ访问127.0.0.1:15672 账号 guest 密码guest
9. 观察

再放个链接 https://rabbitmq.shujuwajue.com/
版权声明:本文为php12345679原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。