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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。