博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python+rabbitMQ实现生产者和消费者模式
阅读量:4619 次
发布时间:2019-06-09

本文共 1967 字,大约阅读时间需要 6 分钟。

(一)安装一个消息中间件,如:rabbitMQ

(二)生产者

sendmq.py

import pikaimport sysimport time# 远程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 = 'Hello World!'for i in range(100000000):    # n RabbitMQ a message can never be sent directly to the queue, it always needs to go through an exchange.    channel.basic_publish(        exchange='',        routing_key='balance',  # 写明将消息发送给队列balance        body=message_str,  # 要发送的消息        properties=pika.BasicProperties(delivery_mode=2, )  # 设置消息持久化(持久化第二步),将要发送的消息的属性标记为2,表示该消息要持久化    )  # 向消息队列发送一条消息    print(" [%s] Sent 'Hello World!'" % i)    # time.sleep(0.2)connection.close()  # 关闭消息队列服务的连接

  

运行sendmq.py文件,可以从以下方法查看队列中的消息数量。

一是,rabbitmq的管理界面,如下图所示:

二是,从服务器端命令查看

rabbitmqctl list_queues

(三)消费者

receivemq.py

import pikaimport sysimport time# 远程rabbitmq服务的配置信息username = 'admin'  # 指定远程rabbitmq的用户名密码pwd = 'admin'ip_addr = '10.1.7.7'port_num = 5672credentials = pika.PlainCredentials(username, pwd)connection = pika.BlockingConnection(pika.ConnectionParameters(ip_addr, port_num, '/', credentials))channel = connection.channel()# 消费成功的回调函数def callback(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(' [*] Waiting for messages. To exit press CTRL+C')channel.start_consuming()  # 启动消费

  

运行receivemq.py文件,可以从以下方法查看队列中的消息数量。

或者

rabbitmqctl  list_queues

 

延伸:

systemctl status rabbitmq-server.service # 状态

systemctl restart rabbitmq-server.service # 重启

 

转载于:https://www.cnblogs.com/andy9468/p/10643296.html

你可能感兴趣的文章
2016.10.24 继续学习
查看>>
产品功能对标 - 服务授权管理
查看>>
各地IT薪资待遇讨论
查看>>
splay入门
查看>>
带CookieContainer进行post
查看>>
C语言学习笔记--字符串
查看>>
关于七牛进行图片添加文字水印操作小计
查看>>
DataSource数据库的使用
查看>>
Luogu4069 SDOI2016 游戏 树链剖分、李超线段树
查看>>
Java的内部类真的那么难以理解?
查看>>
一文搞懂Java环境,轻松实现Hello World!
查看>>
hash实现锚点平滑滚动定位
查看>>
也谈智能手机游戏开发中的分辨率自适应问题
查看>>
关于 IOS 发布的点点滴滴记录(一)
查看>>
《EMCAScript6入门》读书笔记——14.Promise对象
查看>>
CSS——水平/垂直居中
查看>>
Eclipse连接mysql数据库jdbc下载(图文)
查看>>
Python中Selenium的使用方法
查看>>
三月23日测试Fiddler
查看>>
20171013_数据库新环境后期操作
查看>>