监听端
import pika
import time
class RabbitMqServer(object):
def __init__(self, username, password, server_ip, port, queuename):
user_pwd = pika.PlainCredentials(username, password)
self.conn = pika.BlockingConnection(
pika.ConnectionParameters(host=server_ip, port=port, credentials=user_pwd))
self.channel = self.conn.channel()
self.queuename = queuename
self.channel.queue_declare(queue=queuename, durable=True)
def send(self, message):
"""
发送消息
:param message: 消息
:return:
"""
self.channel.basic_publish(exchange='',
routing_key=self.queuename,
body=message,
properties=pika.BasicProperties(delivery_mode=2, )
)
self.conn.close()
def run(self, func):
"""
监听服务
:param func: 要回调的方法名
"""
self.channel.basic_qos(prefetch_count=1)
self.channel.basic_consume(queue=self.queuename, on_message_callback=func)
self.channel.start_consuming()
def callback(self, ch, method, properties, body):
"""回调函数,消费队列里的消息"""
try:
print(properties.reply_to)
print(properties.delivery_mode)
print(" [消费者] Received %r" % body)
time.sleep(1)
print(" [消费者] Done")
except Exception as e:
print(e)
finally:
ch.basic_ack(delivery_tag=method.delivery_tag)
if __name__ == '__main__':
import json
username = "guest"
password = "guest"
severip = "127.0.0.1"
port = 5672
rmq_server = RabbitMqServer(username, password, severip, port, "test3")
rmq_server.run(rmq_server.callback)
发送消息
import json
from testFunc.test_func.RabbitmqServer import RabbitMqServer
username = "guest"
password = "guest"
severip = "127.0.0.1"
port = 5672
rmq_server = RabbitMqServer(username, password, severip, port, "test3")
data = {"code": 6}
rmq_server.send(json.dumps(data))