前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python之Rabbitmq处理消息

Python之Rabbitmq处理消息

作者头像
Wu_Candy
发布2022-07-04 16:54:47
4460
发布2022-07-04 16:54:47
举报
文章被收录于专栏:无量测试之道

1

概念说明


Broker:简单来说就是消息队列服务器实体。 Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。 Queue:消息队列载体,每个消息都会被投入到一个或多个队列。是Rabbitmq的内部对象,用于存储消息 Binding:绑定,它的作用就是把Exchange和Queue按照路由规则绑定起来。 Routing Key:路由关键字,Exchange根据这个关键字进行消息投递。 Vhost:虚拟主机,一个Broker里可以开设多个Vhost,用作不同用户的权限分离。 Producer:消息生产者,就是投递消息的程序。 Consumer:消息消费者,就是接受消息的程序。 Channel:消息通道,在客户端的每个连接里,可建立多个Channel,每个Channel代表一个会话任务。

2

看看Rabbitmq里面的消息长什么样子


如下截图所示:

Mesages=2 表示展示出两条数据。

3

Rabbitmq处理消息简单模式


大致五个步骤: step1:获取Rabbitmq服务的连接 step2:创建一个信道 step3:声明一个队列(与发消息程序的声明保持一致) step4:定义一个回调函数,用于接收和处理队列中的消息 step5:队列与回归函数绑定 step6:开始消费消息

代码语言:javascript
复制
import pika

#接收消息,并写入文件,这也算是持久化了
def write_file(message):
    with open("msg.txt","a+") as f:
        f.write(message)


def consumer():#消息消费者
    # 获取与rabbitmq 服务的连接
    connection = pika.BlockingConnection(pika.ConnectionParameters(host='127.0.0.1', port=5672,credentials=pika.PlainCredentials('guest', 'guest')))
    # 创建一个 AMQP 信道(Channel)
    channel = connection.channel()
    # 声明消息队列tester,durable=False 表示不持久化
    channel.queue_declare(queue='tester', durable=False)
    # 定义一个回调函数来处理消息队列中的消息,这里是将消息写入文件,你也可以入库。
    def callback(ch, method, properties, body):
        ch.basic_ack(delivery_tag=method.delivery_tag) # 告诉生成者,消息处理完成
        write_file(body.decode())
    #告诉rabbitmq在tester列表里面收消息,收到就调用callback函数
    channel.basic_consume('tester', callback)
    # 开始接收信息,并进入阻塞状态,队列里有信息才会调用callback进行处理
    channel.start_consuming()

if __name__=="__main__":
    consumer()

Tips: callback回调函数将消息直接写入文件

如下图所示:

4

查看Rabbitmq界面消息是否处理完成


如下截图所示:

友情提示:“无量测试之道”原创著作,欢迎关注交流,禁止第三方不显示文章来源时转载。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无量测试之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 CMQ 版
消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档