当前位置: 首页 > 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消费者最高的硬实力

相关文章:

  • HTML—css
  • 鸿蒙Harmony实战开发:Touchscreen驱动器件硬件接口使用实例
  • top命令详解
  • avue-crud 自定义搜索项 插槽
  • 【Rust光年纪】从zlib到LZ4:探索Rust语言中的数据压缩和解压实现
  • Python 字符串去除空格
  • 批量处理图集SpriteAltas,关闭它的可读写属性
  • C++:IO流
  • AICon 全球人工智能与机器学习技术大会参会有感
  • ansible 中剧本的书写与运行
  • 干货速学!供应商选择与评估流程详解
  • 你应该停止使用的 7 个已弃用的 Python 库
  • 通过Golang实现中间人攻击,查看和修改https流量包
  • Linux基础知识学习(五)
  • Go小技巧易错点100例(十七)
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Cumulo 的 ClojureScript 模块已经成型
  • Golang-长连接-状态推送
  • Making An Indicator With Pure CSS
  • overflow: hidden IE7无效
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Spring声明式事务管理之一:五大属性分析
  • Vue 2.3、2.4 知识点小结
  • Web设计流程优化:网页效果图设计新思路
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 聚类分析——Kmeans
  • 开发基于以太坊智能合约的DApp
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 如何利用MongoDB打造TOP榜小程序
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 通过npm或yarn自动生成vue组件
  • 优化 Vue 项目编译文件大小
  • 再谈express与koa的对比
  • 在weex里面使用chart图表
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # Apache SeaTunnel 究竟是什么?
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #{}和${}的区别?
  • #define用法
  • $GOPATH/go.mod exists but should not goland
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (2)(2.10) LTM telemetry
  • (2)MFC+openGL单文档框架glFrame
  • (2020)Java后端开发----(面试题和笔试题)
  • (3)nginx 配置(nginx.conf)
  • (6)添加vue-cookie
  • (Git) gitignore基础使用
  • (poj1.3.2)1791(构造法模拟)
  • (三)c52学习之旅-点亮LED灯
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (转)关于pipe()的详细解析