RabbitMQ-消息队列之work使用

1、安装rabbitmq

怎么安装rabbitmq请查看之前课程,如果已经安装,请略过此步。

2、创建vendor文件夹或是直接采用PHP框架

复制代码
mkdir vendor

3、进入文件

复制代码
cd vendor

4、安装php扩展

复制代码
composer require php-amqplib/php-amqplib

5、进入上级创建worker文件夹

复制代码
cd ../
mkdir worker

6、进入worker文件并创建生产者php

复制代码
cd worker
touch pro.php

7、输入worker生产者内容

复制代码
<?php

require_once  '../vendor/autoload.php';


use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;

$v_host = 'order';

$queue_name = 'task_queue';

$connection = new AMQPStreamConnection('localhost',5672,'wangyulong','wangyulong',$v_host);

$channel = $connection->channel();


$channel->queue_declare($queue_name,false,true,false,false);


for($i=1;$i<=10;$i++){

	$data = 'this is '.$i.' message';


	$msg = new AMQPMessage($data,['delivery_mode'=>AMQPMessage::DELIVERY_MODE_PERSISTENT]);


	$channel->basic_publish($msg,'',$queue_name);

}

$channel->close();

$connection->close();

8、创建消费者php

复制代码
touch worker.php

9、输入worker消费者内容

复制代码
<?php

require_once  '../vendor/autoload.php';


use PhpAmqpLib\Connection\AMQPStreamConnection;

$v_host ='order';
$queue_name = 'task_queue';

$connection = new AMQPStreamConnection('localhost',5672,'wangyulong','wangyulong',$v_host);

$channel = $connection->channel();

$channel->queue_declare($queue_name,false,true,false,false);


$callback = function($msg){
	echo 'received ',$msg->body,"\n";
	$msg->ack();
	
};

$channel->basic_qos(null,1,null);

$channel->basic_consume($queue_name,'',false,false,false,false,$callback);

while($channel->is_open()){
	$channel->wait();
}




$channel->close();

$connection->close()

10、执行生产者

复制代码
php pro.php

11、执行消费者

复制代码
php worker.php
此时,10条数据很快就执行完毕。如果你再复制一份消费者2出来,与消费者1同时执行,这个时候你重新执行以下生产者,你会发现,消费者1的结果展示是1 3 5 7 9,消费者2的结果展示是 2 4 6 8 10。这就是rabbitmq消费者最高的硬实力
相关推荐
方方洛4 小时前
ray教程-18-性能调优与反模式
人工智能·分布式·机器学习
GIS数据转换器4 小时前
基于CIM的城市智慧供热监管服务平台
java·大数据·开发语言·人工智能·后端·物联网·struts
weixin_417396835 小时前
星级酒店境外电视频道怎么合法接入?合规要点与核对清单
开发语言·前端·php·1024程序员节·综合布线
m4Rk_5 小时前
【论文阅读】Agent记忆机制(114):MemoryTax——当 Agent 能自主搜索历史,专门的记忆系统还划算吗?
论文阅读·人工智能·学习·开源·github
adfreedom5 小时前
如何避免每个业务系统中都有几十个枚举查询
后端
熊猫钓鱼>_>5 小时前
鸿蒙PC构建实战:hvigor modelVersion 降级 + schema 清理 + ArkTS 编译三连坑完整复盘
开发语言·华为·ai编程·harmonyos·openharmony·数据·ai生成
m0_639906945 小时前
SpringBoot自动配置原理
java·spring boot·后端
FRing035 小时前
JavaScript入门到精通三十一(原型继承、原型链)
开发语言·前端·javascript
4SAPI5 小时前
会议智能处理大模型 API 生产选型指南:4SAPI、硅基流动与 OpenRouter 的架构权衡
人工智能·架构·自动化·gateway·php
1024奇点5 小时前
【仓颉语言入门 · 第二篇 第 12 课】
开发语言·数据库·ide·mysql·开源