python操作RabbiMQ

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python操作RabbiMQ相关的知识,希望对你有一定的参考价值。

RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。

MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。

 

puthon操作rabbitMQ的模块名为:pika
 
 
在操作rabbitMQ之前,先通过Queue理解生产者消费者模型
技术分享
 1 #!/usr/bin/env python
 2 # _*_coding:utf-8 _*_
 3 
 4 import  Queue
 5 import  threading
 6 
 7 message = Queue.Queue(10)
 8 
 9 
10 def producter(i):
11 
12     while True:
13         message.put(i)
14 
15 def consumer(i):
16     while True:
17         message.get()
18 
19 
20 
21 for i in range(5):
22     w = threading.Thread(target=producter,args=(i,))
23     w.start()
24 
25 for i in range(2):
26     w = threading.Thread(target=consumer,args=(i,))
27     w.start()
生产者消费者模型

 

对于RabbitMQ来说,生产和消费不再针对内存里的一个Queue对象,而是某台服务器上的RabbitMQ Server实现的消息队列。

技术分享
 1 #!/usr/bin/env python
 2 # _*_coding:utf-8 _*_
 3 
 4 import  pika
 5 
 6 connection = pika.BlockingConnection(pika.ConnectionParameters(host=192.168.1.108)) #连接一台rabbitMQ
 7 
 8 channel = connection.channel()  #创建一个频道
 9 
10 channel.queue_declare("chenchao")  #声明一个消息队列
11 
12 
13 channel.basic_publish(exchange=‘‘,routing_key="chenchao",body="Fucking!")   #发送消息
14 
15 print "sent Fucking world!!!!"
16 
17 connection.close()  #关闭连接
生产者
技术分享
 1 #!/usr/bin/env python
 2 # _*_coding:utf-8 _*_
 3 
 4 # #############################消费者########################
 5 
 6 import  pika
 7 
 8 connection = pika.BlockingConnection(pika.ConnectionParameters(host=192.168.1.108))
 9 
10 channel = connection.channel()
11 
12 channel.queue_declare("chenchao")
13 
14 def callback(ch, method, properties, body):  #固定格式 必须有4个参数
15     print body
16 
17 
18 channel.basic_consume(callback,queue="chenchao",no_ack=True)  #将从队列里取出的数据回调给callback方法
19 
20 channel.start_consuming()   #开始取值
消费者

 

 

 

以上是关于python操作RabbiMQ的主要内容,如果未能解决你的问题,请参考以下文章

RabbiMQ基础以及spring-boot-starter-amqp使用

利用RabbitMQ实现RPC(python)

sh 用芹菜清洗一个rabbimq队列

利用RabbitMQ实现RPC(python)

学习笔记:python3,代码片段(2017)

Ubuntu16.04下,rabbimq集群搭建