python rabbitMq 操作记录

本文详细介绍了通过官方文档学习RabbitMQ的过程,包括生产者-消费者模式的实现,重点讲解了队列和消息的持久化配置,以及如何正确设置消费者以避免消息累积,最后提到了发布订阅模式的学习方向。

学习rabbitmq个人感觉看官方文档就完全可以学会,网上找的那些案例都不够全面,或者是操作步骤不是很清楚导致操作出现差错!

官网地址:https://www.rabbitmq.com/

 

在这里简单记录下学习过程,文档中最初介绍的是生产者-消费者模式:

生产者:product

import pika,sys,time
auth = pika.PlainCredentials('guest', 'guest')
connection = pika.BlockingConnection(pika.ConnectionParameters('127.0.0.1', 5672, '/', auth))
channel = connection.channel()
channel.queue_declare(queue='hello') # 最初定义的队列,不持久

channel.queue_declare(queue='task_queue', durable=True)  # 重新再定义一个队列,使队列持久化

for i in range(10):
    message = "send {} message".format(i)
    channel.basic_publish(
        exchange='',
        routing_key='task_queue',
        body=message,

        properties=pika.BasicProperties(
            delivery_mode=2,   # 保证消息持久性
        ))
    print("[X] sent %r" %message)
connection.close()

注意:上面的来个那种第一队列方式简易选区第二种,同时后面的消息也要设置成持久化,同理如果队列不设置持久化那么消息也没必要持久化

 

消费者:consume

import pika, time
# from api.product import product

# def receive():
auth = pika.PlainCredentials('guest', 'guest')
connection = pika.BlockingConnection(pika.ConnectionParameters(
    '127.0.0.1', 5672, '/', auth
))
channel = connection.channel()
channel.queue_declare(queue='hello')  # 创建一个普通队列
channel.queue_declare(queue='task_queue', durable=True)  # 创建一个持久化队列
def callback(ch, method, properties, body):   # 回调函数
    print(" [x] Received %r" % body)
    time.sleep(3)
    print("[X] Done")
    ch.basic_ack(delivery_tag = method.delivery_tag)   # 保证消息不会一致累加

channel.basic_consume(
    'hello',
    callback,
    auto_ack=True)
channel.basic_qos(prefetch_count=1)   # 公平分发。再一个工人彻底完成之后再分发
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()  # 开始监听 接受消息

注释: 1、在接收端完成定义队列之前都是跟生产者一样的操作,

             2、回调函数中的最后一行要加上不然消息回一直叠加

             channel.basic_consume函数中的前两个参数要注意位置,我现在用的是python3参数位置跟网上其他人的不一样,而且第三个参数也变了,建议使用之前产看下该函数源码。

              3、公平分发建议加上

              4、最后的监听一定要加上,不然不会监听,也不会有任何的输出

网上有那种同时跑两个的接收者,然后1-10按照奇偶输出,一直没搞明白怎么跑,看了文档才明白先跑两个接收者,再跑生产者。类似于下面这种

基础学习暂时到这里,今天开始学习发布订阅模式。

说明一下现在写的这个模式对比发布/订阅,后者是通过交换机进行信息分发

 

Java毕业设计-基于Springboot+Vue成绩管理系统的设计与实现-源码+数据库+使用文档+演示视频(高分项目).zip该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到97分,在window10/11测试环境严格调试,下载即用,确保可以运行,部署教程齐全,也可以作为期末作业Java毕业设计-基于Springboot+Vue成绩管理系统的设计与实现-源码+数据库+使用文档+演示视频(高分项目).zip该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到97分,在window10/11测试环境严格调试,下载即用,确保可以运行,部署教程齐全,也可以作为期末作业Java毕业设计-基于Springboot+Vue成绩管理系统的设计与实现-源码+数据库+使用文档+演示视频(高分项目).zip该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到97分,在window10/11测试环境严格调试,下载即用,确保可以运行,部署教程齐全,也可以作为期末作业Java毕业设计-基于Springboot+Vue成绩管理系统的设计与实现-源码+数据库+使用文档+演示视频(高分项目).zip该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到97分,在window10/11测试环境严格调试,下载即用,确保可以运行,部署教程齐全,也可以作为期末作业Java毕业设计-基于Springboot+Vue成绩管理系统的设计与实现-源码+数据库+使用文档+演示视频(高分项目).zip该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到97分,在window10/11测试环境严格调试,下载即用,确保可以运行,部署教程齐全,也可以作为期末作业Java毕业设计-基于Springboot+Vue成绩管理系统的设计与实现-源码+数据库+使用文档+演示视频(高分项目).zip该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到97分,在window10/11测试环境严格调试,下载即用,确保可以运行,部署教程齐全,也可以作为期末作业
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值