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删除指定类型(或非指定)的文件实例详解
Jul 06 Python
你眼中的Python大牛 应该都有这份书单
Oct 31 Python
python3大文件解压和基本操作
Dec 15 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
pandas带有重复索引操作方法
Jun 08 Python
python使用yield压平嵌套字典的超简单方法
Nov 02 Python
使用Tkinter制作信息提示框
Feb 18 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
May 11 Python
Python使用configparser读取ini配置文件
May 25 Python
python数据类型强制转换实例详解
Jun 22 Python
一篇文章教你用python画动态爱心表白
Nov 22 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
Dec 18 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 session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
php中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
2013/11/26 PHP
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
curl和libcurl的区别简介
2015/07/01 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
Node.js编程中客户端Session的使用详解
2015/06/23 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
纯js实现隔行变色效果
2017/11/29 Javascript
实战node静态文件服务器的示例代码
2018/03/08 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
Vue实现简单分页器
2018/12/29 Javascript
JS解惑之Object中的key是有序的么
2019/05/06 Javascript
用Vue.js方法创建模板并使用多个模板合成
2019/06/28 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
微信跳一跳小游戏python脚本
2018/01/05 Python
python skimage 连通性区域检测方法
2018/06/21 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
美国校服网上商店:French Toast
2019/10/08 全球购物
手术室护士自我鉴定
2013/10/14 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
检讨书范文2000字
2015/01/28 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
Vue实现下拉加载更多
2021/05/09 Vue.js
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js