python之RabbitMQ
一、安装RabbitMQ
1. 安装erlang
|
1
2
3
4
|
tar xf otp_src_18.3.tar.gz cd otp_src_18.3 ./configure --prefix=/mapbar/app/erlangmake && make install |
2. 安装rabbitMQ
|
1
2
3
4
5
6
|
tar xf rabbitmq-server-generic-unix-3.6.0.tar.xz mv rabbitmq_server-3.6.0 /mapbar/app/ln -s /mapbar/app/rabbitmq_server-3.6.0 /mapbar/app/rabbitmq启动: cd /mapbar/app/rabbitmq/sbin/./rabbitmq-server -detached |
3.安装API
|
1
|
pip install pika |
二、Python操作RabbitMQ
1,基本用法
生产者:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
mport pikaconnection=pika.BlockingConnection(pika.ConnectionParameters(host='192.168.10.131')) #创建一个链接对象,对象中绑定rabbitmq的IP地址 channel=connection.channel() #创建一个频道 channel.queue_declare(queue='name1') #通过这个频道来创建队列,如果MQ中队列存在忽略,没有则创建 channel.basic_publish(exchange='', routing_key='name1', #指定队列名称 body='Hello World!') #往该队列中发送一个消息print(" [x] Sent 'Hello World!'")connection.close() #发送完关闭链接 |
消费者:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import pika connection = pika.BlockingConnection(pika.ConnectionParameters(host='192.168.10.131'))#创建一个链接对象,对象中绑定rabbitmq的IP地址 channel = connection.channel() #创建一个频道 channel.queue_declare(queue='name1') #通过这个频道来创建队列,如果MQ中队列存在忽略,没有则创建 def callback(ch, method, properties, body): #callback函数负责接收队列里的消息 print(" [x] Received %r" % body) channel.basic_consume(callback, #从队列里去消息 queue='name1', #指定队列名 no_ack=True) print(' [*] Waiting for messages. To exit press CTRL+C')channel.start_consuming() |
2,发布订阅
发布订阅和简单的消息队列区别在于,发布订阅会将消息发送给所有的订阅者,而消息队列中的数据被消费一次便消失。所以,RabbitMQ实现发布和订阅时,会为每一个订阅者创建一个队列,二发布者发布消息时,会将消息放置在所有相关队列中。
在RabbitMQ中,所有生产者提交的消息都有Exchange来接收,然后Exchange按照特定的策略转发到Queue进行存储,RabbitMQ提供了四种Exchange:fanout、direct、topic、header。由于header模式在实际工作中用的比较少。
发布者
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import pika connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))channel = connection.channel() channel.exchange_declare(exchange='test_fanout', type='fanout') message = '4456'channel.basic_publish(exchange='test_fanout', routing_key='', body=message)print(' [x] Sent %r' % message)connection.close() |
订阅者
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import pika connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))channel = connection.channel() channel.exchange_declare(exchange='test_fanout', #创建一个exchange type='fanout') #任何发送到Fanout Exchange的消息都会被转发到与该Exchange绑定(Binding)的所有Queue上 #随机创建队列result = channel.queue_declare(exclusive=True)queue_name = result.method.queue #绑定channel.queue_bind(exchange='test_fanout', queue=queue_name) #exchange绑定后端队列 print('<------------->') def callback(ch,method,properties,body): print(' [x] %r' % body) channel.basic_consume(callback, queue=queue_name, no_ack=True)channel.start_consuming() |
python之RabbitMQ的更多相关文章
- Python操作RabbitMQ
RabbitMQ介绍 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现的产品,RabbitMQ是一个消息代理,从“生产者”接收消息并传递消 ...
- 用 Python、 RabbitMQ 和 Nameko 实现微服务
用 Python. RabbitMQ 和 Nameko 实现微服务 原创 07-17 17:57 首页 Linux中国 "微服务是一股新浪潮" - 现如今,将项目拆分成多个独立的. ...
- Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...
- python - 操作RabbitMQ
python - 操作RabbitMQ 介绍 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议.MQ全称为Mess ...
- 文成小盆友python-num12 Redis发布与订阅补充,python操作rabbitMQ
本篇主要内容: redis发布与订阅补充 python操作rabbitMQ 一,redis 发布与订阅补充 如下一个简单的监控模型,通过这个模式所有的收听者都能收听到一份数据. 用代码来实现一个red ...
- Python之路第十二天,高级(4)-Python操作rabbitMQ
rabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(M ...
- Python与RabbitMQ交互
RabbitMQ 消息队列 成熟的中间件RabbitMQ.ZeroMQ.ActiveMQ等等 RabbitMQ使用erlang语言开发,使用RabbitMQ前要安装erlang语言 RabbitMQ允 ...
- python中RabbitMQ的使用(安装和简单教程)
1,简介 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现的产品,RabbitMQ是一个消息代理,从"生产者"接收消息 ...
- Python之RabbitMQ的使用
今天总结一下Python关于Rabbitmq的使用 RabbitMQ官网说明,其实也是一种队列,那和前面说的线程queue和进程queue有什么区别呢? 线程queue只能在同一个进程下进行数据交互 ...
随机推荐
- js弹出框,禁刷新
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- golang 环境一键式配置
在window下,通过以下bat,自动设置环境变量,启动终端,并cd到gopath目录 set goroot=c:\go set gopath=d:\go @start "start gol ...
- SVG知识难点
参考资料:http://www.w3cplus.com/css3/clip.html 1.clip:默认值是auto,为不裁剪 <img border="0" src ...
- Hibernate操作指南-搭建一个简单的示例(基于原生API和XML)
- Spring操作指南-AOP基本示例(基于XML)
- iOS,非视图类方法
1.判断类的实例 2.获取当前最高层Window 3.获取当前app是否活跃 4.允许所有请求 5.判断设备是否越狱 6.移除字符串换行符和空格 7.iOS注释方法或属性废弃或不可用 8.本地通讯录操 ...
- ZooKeeper的Znode剖析
在ZooKeeper中,节点也称为znode.由于对于程序员来说,对zk的操作主要是对znode的操作,因此,有必要对znode进行深入的了解. ZooKeeper采用了类似文件系统的的数据模型,其节 ...
- 基于配置文件(xml)的S2S3H3搭建
本次环境选择:JDK1.6+MySQL数据库+C3P0连接池+(struts2,spring3,hibernate3) 首先,创建WEB工程 然后倒入相关jar包(maven项目,在pom.xml中导 ...
- [Silverlight]监听指定控件(FrameworkElement)的依赖属性(DependencyProperty)的更改
前言 转载请注明出处:http://www.cnblogs.com/ainijiutian 最近在silverlight项目使用Telerik的控件,遇到一个问题.就是使用RadBusyIndicat ...
- Andy - 又一款速度流畅的免费安卓 Android 模拟器 (支持手机无线控制电脑模拟器)
随着 Genymotion.BlueStacks 等电脑上的 Android 模拟器流行起来之后,似乎很多人都发现在电脑上运行使用安卓APP软件.畅玩手机游戏确实很有乐趣. 今天我们又发现了一款全新免 ...