服务器ip :192.168.0.191 系统:centos7.9
# for RabbitMQ 3.9, the latest series
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management
python 产生 消费 demo
app.py
启动一个简易的flask应用
from flask import Flask
from flask_restful import Api
from producer import ToMq
app = Flask(__name__)
api = Api(app)
api.add_resource(ToMq, "/tomq/<string:s>")
if __name__ == '__main__':
app.run(debug=True)
producer.py
生产者实例代码
import pika
from flask_restful import Resource
class ToMq(Resource):
def opt(self, s):
# ############################## 生产者 ##############################
credentials = pika.PlainCredentials(username="admin", password="admin") # 连接凭证 如果不指定 则默认使用 guest guest
#
connection = pika.BlockingConnection(pika.ConnectionParameters(host='192.168.0.191',
virtual_host='/',
credentials=credentials))
channel = connection.channel()
channel.queue_declare(queue='abc') # 如果队列没有创建,就创建这个队列
channel.basic_publish(exchange='',
routing_key='abc', # 指定队列的关键字为,这里是队列的名字
body=s) # 往队列里发的消息内容
msg = "Message '{}' has been sent to mq".format(s)
connection.close()
return msg
def post(self, s):
m = self.opt(s)
return m
def get(self, s):
m = self.post(s)
return m
consumer.py
消费者示例代码
import pika
# ########################### 消费者 ###########################
credentials = pika.PlainCredentials(username="admin", password="admin") # 连接凭证 如果不指定 则默认使用 guest
#
connection = pika.BlockingConnection(pika.ConnectionParameters(host='192.168.0.191',
virtual_host='/',
credentials=credentials))
channel = connection.channel()
channel.queue_declare(queue='abc') # 如果队列没有创建,就创建这个队列
def callback(ch, method, propertities,body):
print(" [x] Received %r" % body)
channel.basic_consume("abc", callback, auto_ack=True)
print(' [*] Waiting for message. To exit press CTRL+C')
channel.start_consuming()
使用方式:
启动消费者脚本constumer.py
python3 constumer.py
在另一终端启动flask应用(消费者脚本终端不要关闭)
python3 app.py
浏览器访问
http://127.0.0.1:5000/tomq/xxxxx 其中xxxx为发送给mq的消息
观察consumer终端会得到以下信息