1,安装pika库
yum -y install epel-release
yum -y install python-pip
pip install --upgrade pip
pip install pika
2,rabbitMq.py
#!/bin/python2
#coding=utf-8
import pika
import uuid
import sys
class RabbitMQ(object):
def __init__(self,addr,rabbitMqName):
self.mqAddr =addr
self.msgQueueName = rabbitMqName
def msg_on_recv(self, ch, mothod, properties, msg):
print("[Consumer] recv %s" % msg)
def msg_start(self):
print("[Consumer] waiting for msg")
self.mqParam = pika.URLParameters(self.mqAddr)
try:
self.connection = pika.BlockingConnection(self.mqParam)
self.channel = self.connection.channel()
self.channel.queue_declare(queue=self.msgQueueName)
self.channel.basic_consume(self.msgQueueName,self.msg_on_recv)
self.channel.start_consuming()
except pika.exceptions.AMQPError as e:
print('AMQPError {0} , {1}'.format(self.mqAddr, e))
def msg_send(self, msg):
print("[Producer] send %s" % msg)
self.mqParam = pika.URLParameters(self.mqAddr)
try:
self.connection = pika.BlockingConnection(self.mqParam)
self.channel = self.connection.channel()
self.channel.queue_declare(queue=self.msgQueueName)
self.channel.basic_publish(exchange='', routing_key=self.msgQueueName, body=msg)
except pika.exceptions.AMQPError as e:
print('AMQPError {0} , {1}'.format(self.mqAddr, e))
3,调用实例
rabbitMqProducer.py
请把address换成你的rabbitMq的地址
from rabbitMq import *
obj = RabbitMQ("address",'my_queue')
obj.msg_send('hello world')
[dev@test-ba-node-004 python]$ cat rabbitMqConsumer.py 请把address换成你的raddbitMq的地址
from rabbitMq import *
obj = RabbitMQ("address",'my_queue')
obj.msg_start()
4,运行结果:
[dev@test-ba-node-004 python]$ python rabbitMqProducer.py
[Producer] send hello world
[dev@test-ba-node-004 python]$ python rabbitMqConsumer.py
[Consumer] waiting for msg
[Consumer] recv hello world
5,踩的坑
self.channel.basic_consume(self.msgQueueName,self.msg_on_recv)
这个函数的顺序变过,旧的函数为callback函数在前,queue在后,新的换顺序了,所以这个函数的使用跟版本有关