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启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
Apr 09 Python
python 基础学习第二弹 类属性和实例属性
Aug 27 Python
Django入门使用示例
Dec 12 Python
使用python进行文本预处理和提取特征的实例
Jun 05 Python
浅谈python下含中文字符串正则表达式的编码问题
Dec 07 Python
在Python中表示一个对象的方法
Jun 25 Python
pycharm new project变成灰色的解决方法
Jun 27 Python
Python 动态变量名定义与调用方法
Feb 09 Python
python实现最速下降法
Mar 24 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
Feb 16 Python
Python实现Matplotlib,Seaborn动态数据图
May 06 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 FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
2014/05/10 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
php+js实现裁剪任意形状图片
2018/10/31 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
js/jquery解析json和数组格式的方法详解
2014/01/09 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
ExtJS判断IE浏览器类型的方法
2014/02/10 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
浅谈js的setInterval事件
2014/12/05 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
2015/11/30 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
2016/03/24 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
利用anaconda作为python的依赖库管理方法
2019/08/13 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
Ramy Brook官网:美国现代女装品牌
2019/06/18 全球购物
大学生应聘推荐信范文
2013/11/19 职场文书
数控专业自荐书范文
2014/03/16 职场文书
小学生寒假家长评语
2014/04/16 职场文书
圣诞节开幕词
2015/01/29 职场文书
公司庆典主持词
2015/07/04 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
Vue如何实现组件间通信
2021/05/15 Vue.js
Python torch.flatten()函数案例详解
2021/08/30 Python