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 相关文章推荐
Python实现拼接多张图片的方法
Dec 01 Python
Python自动化构建工具scons使用入门笔记
Mar 10 Python
python对html代码进行escape编码的方法
May 04 Python
Python3解决棋盘覆盖问题的方法示例
Dec 07 Python
python爬虫爬取淘宝商品信息
Feb 23 Python
深入分析python中整型不会溢出问题
Jun 18 Python
python字符串切割:str.split()与re.split()的对比分析
Jul 16 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
Aug 07 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
Dec 18 Python
Python图片处理模块PIL操作方法(pillow)
Apr 07 Python
python使用hdfs3模块对hdfs进行操作详解
Jun 06 Python
详解python3类型注释annotations实用案例
Jan 20 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
php中大括号作用介绍
2012/03/22 PHP
php统计文章排行示例
2014/03/04 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
List Installed Software Features
2007/06/11 Javascript
js 操作css实现代码
2009/06/11 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
JS实现跟随鼠标闪烁转动色块的方法
2015/02/26 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
2016/03/06 Javascript
浅谈JS继承_借用构造函数 &amp; 组合式继承
2016/08/16 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
移动端触摸滑动插件swiper使用方法详解
2017/08/11 Javascript
JS删除数组里的某个元素方法
2018/02/03 Javascript
vue.js中created方法作用
2018/03/30 Javascript
node实现登录图片验证码的示例代码
2018/04/20 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
手把手教你实现 Promise的使用方法
2020/09/02 Javascript
Python中os.path用法分析
2015/01/15 Python
python数据类型_字符串常用操作(详解)
2017/05/30 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
如何利用python给图片添加半透明水印
2019/09/06 Python
Python requests.post方法中data与json参数区别详解
2020/04/30 Python
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
清洁工表扬信
2014/01/08 职场文书
初中地理教学反思
2014/01/11 职场文书
商场中秋节广播稿
2014/01/17 职场文书
学生感冒英文请假条
2014/02/04 职场文书
投标承诺书范本
2014/03/27 职场文书
物理教育专业求职信
2014/06/25 职场文书
让生命充满爱观后感
2015/06/08 职场文书
办公室卫生管理制度
2015/08/04 职场文书
Python中threading库实现线程锁与释放锁
2021/05/17 Python
java实现web实时消息推送的七种方案
2022/07/23 Java/Android