首页 » 网站推广 » phplaraveljob技巧_RabbitMQ安装及配套Laravel运用

phplaraveljob技巧_RabbitMQ安装及配套Laravel运用

访客 2024-12-13 0

扫一扫用手机浏览

文章目录 [+]

为什么须要mq:

解耦:MQ能够使各个别系或组件之间解耦,降落它们之间的耦合度,提高系统的灵巧性和可掩护性异步处理:通过MQ可以实现异步处理,提高系统相应速率和吞吐量。
削峰:在高流量时段,MQ可以缓冲突增的要求,减轻下贱系统的瞬时压力。
可靠性:MQ常日供应持久化选项,确保不会由于网络问题或做事故障而丢失。
扩展性:MQ支持分布式支配,可以根据系统需求灵巧扩展。
灵巧性和路由:MQ支持多种路由办法,如直接、主题、扇形等,以适应不同的业务场景。
多措辞支持:大多数MQ支持多种编程措辞,使得开拓者可以利用自己熟习的措辞进行开拓。
RabbitMQ

RabbitMQ是一个开源的,基于 AMQP(Advanced Message Queue 高等行列步队协议)协议,可复用的企业系统。
支持主流的操作系统,Linux、Windows、MacOs等 多种开拓措辞支持,Java、Python、Ruby、.NET、PHP、C/C++、node.js等

phplaraveljob技巧_RabbitMQ安装及配套Laravel运用

安装

本文安装 RabbitMQ 的系统为 centos7

phplaraveljob技巧_RabbitMQ安装及配套Laravel运用
(图片来自网络侵删)
更新系统包:首先更新系统中的软件包。

yum -y update安装 EPEL 存储库:由于Erlang不在默认的 YUM 存储库中,须要安装 EPEL 存储库。

yum -y install epel-releaseyum -y update安装 Erlang :RabbitMQ 是基于Erlang 开拓的,因此须要先安装 Erlang。
可以通过以下办法安装Erlang:

• 从Erlang官网下载Erlang存储库rpm包并安装。

• 或者利用以下命令直接安装Erlang和socat(RabbitMQ依赖):

erl -version检讨Erlang版本:确认Erlang是否安装成功并检讨版本.

erl -version

显示这种版本信息的表示是老版本,须要实行:

erl

个中这个 Erlang R16B03-1 便是对应rabbitmq 须要的erlang 环境的版本

在 rabbitmq 官网查询 erlang的关联版本

https://www.rabbitmq.com/docs/which-erlang

由于我这个是老版本的erlang 以是须要划到最下面

下载RabbitMQ:下载RabbitMQ的rpm包。

上面我们查询到的 rabbitmq 对应的版本是 3.6.14,以是我们下载对应的版本

wget https://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_6_14/rabbitmq-server-3.6.14-1.el6.noarch.rpm

github 上面 rabbitmq的历史版本查看

https://github.com/rabbitmq/rabbitmq-server/tags

安装RabbitMQ:利用rpm命令安装下载的RabbitMQ包。

rpm -ivh rabbitmq-server-3.6.14-1.el6.noarch.rpm启动RabbitMQ做事:启动RabbitMQ做事,并设置开机自启。

# 启动systemctl start rabbitmq-server# 开机启动systemctl enable rabbitmq-server安装管理界面插件:安装RabbitMQ的管理界面插件以便于管理。

rabbitmq-plugins enable rabbitmq_management配置防火墙:如果做事器运行的是防火墙,须要开放RabbitMQ利用的端口,如5672和15672

firewall-cmd --zone=public --add-port=5672/tcp --permanent && firewall-cmd --reloadfirewall-cmd --zone=public --add-port=15672/tcp --permanent && firewall-cmd --reload创建用户:创建非默认用户以许可远程访问。

rabbitmqctl add_user 用户名 密码rabbitmqctl set_user_tags 用户名 administratorrabbitmqctl set_permissions -p "/" 用户名 "." "." "."启动做事并检讨状态:

systemctl start rabbitmq-serversystemctl status rabbitmq-server

打开浏览器,输入网址:http://:15672,涌现以下界面解释安装成功了

默认用户 guest guest 只能本机登录

主页概述

• connections:无论生产者还是消费者,都须要与RabbitMQ建立连接后才可以完成的生产和消费,在这里可以查看连接情形

• channels:通道,建立连接后,会形成通道,的投递获取依赖通道。

• Exchanges:交流机,用来实现的路由

• Queues:行列步队,即行列步队,存放在行列步队中,等待消费,消费后被移除行列步队。
laravel 对接rabbitmq

laravel 对接rabbitmq有对应的composer 包:laravel-queue-rabbitmq

composer require vladimir-yuldashev/laravel-queue-rabbitmq安装

查看对应 laravel的版本,和 laravel-queue-rabbitmq 是否对应

composer 包网址:

https://packagist.org/packages/vladimir-yuldashev/laravel-queue-rabbitmq

本文用的laravel 版本为 9.33.0

• 查看版本是否对应

laravel-queue-rabbitmq 对 illuminate/queue 版本有哀求,参照下列:

laravel 自带illuminate/queue版本查看:vendor->laravel->scout->composer.json

• 安装对应版本的包

composer require vladimir-yuldashev/laravel-queue-rabbitmq:^13.1.0 -vvv配置

找到 config->queue.php 文件,添加以下配置:

'rabbitmq' => [ 'driver' => 'rabbitmq', 'hosts' => [ [ 'host' => env('RABBITMQ_HOST', '127.0.0.1'), 'port' => env('RABBITMQ_PORT', 5672), 'user' => env('RABBITMQ_USER', 'guest'), 'password' => env('RABBITMQ_PASSWORD', 'guest'), 'vhost' => env('RABBITMQ_VHOST', '/'), ], ], 'worker' => env('RABBITMQ_WORKER', 'default'),//设置行列步队管理器 ],

在env里面设置值:

#行列步队配置QUEUE_CONNECTION=rabbitmqRABBITMQ_HOST=192.168.18.130RABBITMQ_PORT=5672RABBITMQ_USER=testRABBITMQ_PASSWORD=test# 设置行列步队管理器:horizon#RABBITMQ_WORKER=horizon

利用

laravel 行列步队利用文档:

https://learnku.com/docs/laravel/9.x/queues/12236

• 创建任务

php artisan make:job Test

这个命令会创建一个test的任务类

• 编辑任务类

<?phpnamespace App\Jobs;use Illuminate\Bus\Queueable;use Illuminate\Contracts\Queue\ShouldBeUnique;use Illuminate\Contracts\Queue\ShouldQueue;use Illuminate\Foundation\Bus\Dispatchable;use Illuminate\Queue\InteractsWithQueue;use Illuminate\Queue\SerializesModels;class Test implements ShouldQueue{ use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; //行列步队返回的数据 protected $data; / Create a new job instance. @return void / public function __construct($data) { $this->data = $data; } / Execute the job. @return void / public function handle() { //行列步队消费逻辑,此处就大略的打印一下 var_dump($this->data); }}

• 发送行列步队

创建一个测试掌握器,并编写测试

namespace App\Http\Controllers;use Illuminate\Foundation\Auth\Access\AuthorizesRequests;use Illuminate\Foundation\Bus\DispatchesJobs;use Illuminate\Foundation\Validation\ValidatesRequests;use Illuminate\Http\Request;use Illuminate\Routing\Controller as BaseController;class TestController extends BaseController{ public function test(){ \App\Jobs\Test::dispatch([ 'name'=>'这是一个测试行列步队', 'data'=>[ 'age'=>18, 'sex'=>1 ] ]); }}

• 要求接口创建

查看rabbitmq面板,如下:

• 运行行列步队,

在项目根目录命令窗口实行以下命令:

php artisan queue:work

总结

laravel-queue-rabbitmq 包为 Laravel 开拓者供应了一个强大且灵巧的办法来利用 RabbitMQ 作为行列步队办理方案,从而增强运用程序的异步处理能力和系统解耦。

– 欢迎点赞、关注、收藏【我码玄黄】,gonghao同名

标签:

相关文章

phpthreaddump技巧_Java ThreadDump 生成解析

当有我们的做事器CPU资源利用率(usr%)较高时,或者是一个基于 JAVA 的 Web 运用运行的比预期慢的时候,我们须要利用...

网站推广 2024-12-15 阅读0 评论0