您的位置:首页 > 编程语言 > Python开发

Python下使用pika简单实现RabbitMQ通信

2017-06-06 21:16 176 查看
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。

现在介绍一下基本的RabbitMQ的通信过程:

RabbitMQ基本的通信模型是这样的,它类似于C-S通信模型,它包含一个producer (生产者),queue(消息队列)和一个consumer(消费者),生产者发送的消息只会存储在中间的消息队列中:

                                                 


下面是使用ubu环境,使用python实现简易的消息通信,需要安装rabbitmq-server和pika(使用的第三方控件):

1.RabbitMQ的安装直接使用apt-get install rabbitmq-server;

2.pika可以使用pip install pika,我这样没有安装成功,我是下载pika的源码包进行安装的,地址是:https://pypi.python.org/pypi/pika/#downloads,解压后使用python setup.py install 安装即可

下面是一个简易的消息通信的代码:

client.py

#!/usr/bin/env python
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) #创建一个连接
channel = connection.channel()  #创建通道

channel.queue_declare(queue='hello') #把消息队列的名字为hello

channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!') #设置routing_key(消息队列的名称)和body(发送的内容)
print(" [x] Sent 'Hello World!'")
connection.close()  #关闭连接

server.py

#!/usr/bin/env python
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) #创建一个连接
channel = connection.channel()  #建立通道

channel.queue_declare(queue='hello') 把消费者和queue绑定起来,生产者和queue的也是hello

def callback(ch, method, properties, body):  #回调函数get消息体
print(" [x] Received %r" % body)

channel.basic_consume(callback,
queue='hello',
no_ack=True)

print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()  #创建死循环,监听消息队列,可使用CTRL+C结束监听


最后执行python srver.py 启动服务端监听消息队列,执行python client.py启动客户端向消息队列发送消息

更多内容请查询RabbitMQ官网:http://www.rabbitmq.com/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息