python RabbitMq的订阅

野生程序猿-杂烧5年前随意分享1082

【test_RabbitMq1.py】

import pika
import json

credentials = pika.PlainCredentials('test', 'test')  # mq用户名和密码
connection = pika.BlockingConnection(pika.ConnectionParameters(host = '42.192.14.149',port = 5672,virtual_host = '/test',credentials = credentials))
channel=connection.channel()
# 声明exchange,由exchange指定消息在哪个队列传递,如不存在,则创建。durable = True 代表exchange持久化存储,False 非持久化存储
channel.exchange_declare(exchange = 'python-test',durable = True, exchange_type='fanout')
for i in range(2000):
    message=json.dumps({'OrderId':"1000%s"%i})
# 向队列插入数值 routing_key是队列名。delivery_mode = 2 声明消息在队列中持久化,delivery_mod = 1 消息非持久化。routing_key 不需要配置
    channel.basic_publish(exchange = 'python-test',routing_key = '',body = message,
                          properties=pika.BasicProperties(delivery_mode = 2))
    print(message)
connection.close()

【test_RabbitMq2.py】

import pika


credentials = pika.PlainCredentials('test', 'test')  # mq用户名和密码
connection = pika.BlockingConnection(pika.ConnectionParameters(host = '42.192.14.149',port = 5672,virtual_host = '/test',credentials = credentials))

channel = connection.channel()
# 创建临时队列,队列名传空字符,consumer关闭后,队列自动删除
result = channel.queue_declare('',exclusive=True)
# 声明exchange,由exchange指定消息在哪个队列传递,如不存在,则创建。durable = True 代表exchange持久化存储,False 非持久化存储
channel.exchange_declare(exchange = 'python-test',durable = True, exchange_type='fanout')
# 绑定exchange和队列  exchange 使我们能够确切地指定消息应该到哪个队列去
channel.queue_bind(exchange = 'python-test',queue = result.method.queue)
# 定义一个回调函数来处理消息队列中的消息,这里是打印出来
def callback(ch, method, properties, body):
    ch.basic_ack(delivery_tag = method.delivery_tag)
    print(body.decode())

channel.basic_consume(result.method.queue,callback,# 设置成 False,在调用callback函数时,未收到确认标识,消息会重回队列。True,无论调用callback成功与否,消息都被消费掉
                      auto_ack = False)
channel.start_consuming()


标签: RabbitMqpython

相关文章

推荐一款工具ImageMagick

不知道大家有没用过ImageMagick,这个是个图像处理的工具。很专业的功能我也没去了解,接触他主要是因为我们开发教学软件。很多时候需要展示word,pdf。因为我们客户环境的特殊性,不能联网。只能...

按键精灵+大漠插件 打boss(脚本demo4)

前面介绍了大漠插件,这里再来个复杂点的,这个是4开刷副本//初始化数据 //地图信息 //副本坐标 ditux = -230 dituy = -19...

vue通过组件的方式制作教学软件翻牌游戏环节

vue通过组件的方式制作教学软件翻牌游戏环节

为了方便学生记忆学习,将记忆知识点做成了翻牌游戏形式。由于记忆点知识比较多,我们可以设计成多个关卡,每个关卡就是一些知识点配置,通过组件的形式加载,更为合理,更为方便。【fanpai.vue】<...

nodejs简单实现端口映射(隧道)

nodejs简单实现端口映射(隧道)

来个万能的javascript代码,实现端口映射。前端electron桌面软件也可以用到。【port.js】var net = require('net'...

编译新的js库用在传统模式直接使用

面向dom的jquery被淘汰了,但是jquery拥有多年的生态,很多时候还是可以用在一些项目上的。没有最好的开发语言,也没有最好的框架;只有最适用的开发语言、最适用的框架。很多时候我们敏捷开发者都会...

打造支付中心

随着公司业务的开展,发现多个环节需要用到支付。我们在购买聚合支付的时候,每年年费不同,享受到的服务也有很大的差距。当资金有限的时候,我们选择了较便宜的服务,这个时候我们能创建的支付应用数量较少,因此我...