Python rabbitMQ如何实现生产消费者模式
(一)安装一个消息中间件,如:rabbitMQ
(二)生产者
sendmq.py
importpika
importsys
importtime
#远程rabbitmq服务的配置信息
username='admin'#指定远程rabbitmq的用户名密码
pwd='admin'
ip_addr='10.1.7.7'
port_num=5672
#消息队列服务的连接和队列的创建
credentials=pika.PlainCredentials(username,pwd)
connection=pika.BlockingConnection(pika.ConnectionParameters(ip_addr,port_num,'/',credentials))
channel=connection.channel()
#创建一个名为balance的队列,对queue进行durable持久化设为True(持久化第一步)
channel.queue_declare(queue='balance',durable=True)
message_str='HelloWorld!'
foriinrange(100000000):
#nRabbitMQamessagecanneverbesentdirectlytothequeue,italwaysneedstogothroughanexchange.
channel.basic_publish(
exchange='',
routing_key='balance',#写明将消息发送给队列balance
body=message_str,#要发送的消息
properties=pika.BasicProperties(delivery_mode=2,)#设置消息持久化(持久化第二步),将要发送的消息的属性标记为2,表示该消息要持久化
)#向消息队列发送一条消息
print("[%s]Sent'HelloWorld!'"%i)
#time.sleep(0.2)
connection.close()#关闭消息队列服务的连接
运行sendmq.py文件,可以从以下方法查看队列中的消息数量。
一是,rabbitmq的管理界面,如下图所示:
二是,从服务器端命令查看
rabbitmqctllist_queues
(三)消费者
receivemq.py
importpika
importsys
importtime
#远程rabbitmq服务的配置信息
username='admin'#指定远程rabbitmq的用户名密码
pwd='admin'
ip_addr='10.1.7.7'
port_num=5672
credentials=pika.PlainCredentials(username,pwd)
connection=pika.BlockingConnection(pika.ConnectionParameters(ip_addr,port_num,'/',credentials))
channel=connection.channel()
#消费成功的回调函数
defcallback(ch,method,properties,body):
print("[%s]Received%r"%(time.time(),body))
#time.sleep(0.2)
#开始依次消费balance队列中的消息
channel.basic_consume(queue='balance',on_message_callback=callback,auto_ack=True)
print('[*]Waitingformessages.ToexitpressCTRL+C')
channel.start_consuming()#启动消费
运行receivemq.py文件,可以从以下方法查看队列中的消息数量。
或者
rabbitmqctllist_queues
延伸:
systemctlstatusrabbitmq-server.service#状态
systemctlrestartrabbitmq-server.service#重启
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。