当前位置: 首页 > news >正文

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生产者内容

<?phprequire_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消费者内容

<?phprequire_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消费者最高的硬实力

http://www.mrgr.cn/news/3812.html

相关文章:

  • 秒懂Linux之缓冲区
  • 2024前端面试题-css篇
  • 【Mac】植物大战僵尸杂交版 for Mac(经典策略塔防游戏)游戏介绍
  • 数据结构初阶(1)——算法的时间复杂度和空间复杂度
  • 【Android】报错:XXXDataBinding文件不能自动生成
  • 计算机毕业设计选题推荐-springboot 基于SpringBoot的家电销售展示平台
  • 2024思维导图工具评测:性能、易用性全面对比
  • 算法的学习笔记—从上往下打印二叉树(牛客JZ32)
  • Modbus-TCP——Libmodbus安装和使用(Ubuntu22.04)
  • 写给大数据开发:如何优化临时数据查询流程
  • 项目启动报错:liquibase.lockservice:? - Waiting for changelog lock....
  • 嵌入式和单片机有什么区别?
  • 守护进程是什么?
  • X-AnyLabeling系列:掩码转多边形坐标点
  • driver.find_element 找不到元素的大坑
  • Qt第十七章 多线程
  • 生信圆桌x生信菜鸟团:生物信息学初学者的交流与成长社区
  • Qt/QML学习-ScrollView
  • 5. container_of 宏的定义、作用及手动实现详细解释
  • pyqt 用lamada关联信号 传递参数 循环