Python队列RabbitMQ 使用方法实例记录


Posted in Python onAugust 05, 2019

本文实例讲述了Python队列RabbitMQ 使用方法。分享给大家供大家参考,具体如下:

目前的exchange的路由策略是:每个需要队列的服务独享一个队列(queue),消费者(consumer)采用ACK自动应答模式处理队列消息。

如果需要新增一个队列服务,需要做如下开发步骤:

1.创建队列,发送消息

<?php
$routingkey = 'key';
//设置你的连接
$conn_args = array('host' => 'localhost', 'port' => '5672', 'login' => 'guest', 'password' => 'guest');
$conn = new AMQPConnection($conn_args);
if ($conn->connect()) {
  echo "Established a connection to the broker \n";
} else {
  echo "Cannot connect to the broker \n ";
}
//你的消息
$message = json_encode(array('Hello World3!', 'php3', 'c++3:'));
//创建channel
$channel = new AMQPChannel($conn);
//创建exchange
$ex = new AMQPExchange($channel);
$ex->setName('exchange2'); //创建名字
$ex->setType(AMQP_EX_TYPE_DIRECT);
$ex->setFlags(AMQP_DURABLE);
echo "exchange2 status:" . $ex->declareExchange();
echo "\n";
for ($i = 0; $i < 100; $i++) {
  if ($routingkey == 'key2') {
    $routingkey = 'key';
  } else {
    $routingkey = 'key2';
  }
  $ex->publish($message, $routingkey);
}

这样就产生了50条消息,但是没有消费者,所以没有被消费

Python队列RabbitMQ 使用方法实例记录

2.创建消费者,消费信息

<?php
set_time_limit(0);
$e_name = 'exchange2'; //交换机名
$q_name = 'queue2'; //队列名
$k_route = 'key2'; //路由key 
//连接RabbitMQ
$conn_args = array('host' => '127.0.0.1', 'port' => '5672', 'login' => 'guest', 'password' => 'guest', 'vhost' => '/');
$conn = new AMQPConnection($conn_args);
$conn->connect();
$channel = new AMQPChannel($conn);  
//创建交换机
$ex = new AMQPExchange($channel);
$ex->setName($e_name);
$ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型
$ex->setFlags(AMQP_DURABLE); //持久化
echo "Exchange Status:" . $ex->declareExchange() . "\n";
//创建队列
$q = new AMQPQueue($channel);
$q->setName($q_name);
$q->setFlags(AMQP_DURABLE); //持久化 
//绑定交换机与队列,并指定路由键
echo 'Queue Bind: ' . $q->bind($e_name, $k_route) . "\n"; //阻塞模式接收消息
echo "Message:\n";
$q->consume('processMessage', AMQP_AUTOACK); //自动ACK应答 
$conn->disconnect();
/** * 消费回调函数 * 处理消息 */
function processMessage($envelope, $queue) {
  var_dump($envelope->getRoutingKey());
  $msg = $envelope->getBody();
  echo $msg . "\n"; //处理消息
}

运行之后

Python队列RabbitMQ 使用方法实例记录

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Django框架中render_to_response()函数的使用方法
Jul 16 Python
Python脚本实现自动将数据库备份到 Dropbox
Feb 06 Python
python实现图片文件批量重命名
Mar 23 Python
查看django执行的sql语句及消耗时间的两种方法
May 29 Python
python 列表降维的实例讲解
Jun 28 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
python的pip安装以及使用教程
Sep 18 Python
计算机二级python学习教程(2) python语言基本语法元素
May 16 Python
python Pandas如何对数据集随机抽样
Jul 29 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
Python定义函数实现累计求和操作
May 03 Python
python怎么对数字进行过滤
Jul 05 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
Aug 05 #Python
基于python框架Scrapy爬取自己的博客内容过程详解
Aug 05 #Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
Aug 05 #Python
使用coverage统计python web项目代码覆盖率的方法详解
Aug 05 #Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
Aug 05 #Python
selenium2.0中常用的python函数汇总
Aug 05 #Python
Django中使用CORS实现跨域请求过程解析
Aug 05 #Python
You might like
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
thinkPHP3.2简单实现文件上传的方法
2016/05/16 PHP
js 数组实现一个类似ruby的迭代器
2009/10/27 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
2015/02/02 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
2016/09/16 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
angular2中router路由跳转navigate的使用与刷新页面问题详解
2017/05/07 Javascript
js轮播图无缝滚动效果
2017/06/17 Javascript
vue中tab选项卡的实现思路
2018/11/25 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
在vue中使用vuex,修改state的值示例
2019/11/08 Javascript
[01:08:17]2018DOTA2亚洲邀请赛3月29日 小组赛B组 EG VS VGJ.T
2018/03/30 DOTA
Python实用日期时间处理方法汇总
2015/05/09 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
python读取和保存视频文件
2018/04/16 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
pytorch实现mnist数据集的图像可视化及保存
2020/01/14 Python
next在python中返回迭代器的实例方法
2020/12/15 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
River Island美国官网:英国高街时尚品牌
2018/09/04 全球购物
软件测试工程师笔试题带答案
2015/03/27 面试题
关于运动会的稿件
2014/02/02 职场文书
公司总经理岗位职责
2014/03/15 职场文书
诚信考试倡议书
2014/04/15 职场文书
村委会贫困证明范文
2014/09/21 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
结婚老公保证书
2015/02/26 职场文书
辞职信模板(中英文版)
2015/02/27 职场文书