python中rabbitMQ的使用

本文详细介绍了Python中RabbitMQ的使用,包括生产者消费者模型的实现、消息的公平分发、消费者宕机处理机制和消息持久化。通过实例展示了如何在消费者宕机时保证消息的正确分发,以及如何实现消息队列的持久化,避免服务宕机导致消息丢失。
摘要由CSDN通过智能技术生成

rabbitMQ在python中的使用

(1)实现简单的生产者和消费者模型
生产者:当启动publishs的时候,生产者则会创建一个连接,申明一个管道去定义一个queue,queue定义的名字是task_mess,然后在这个queue中发送body消息,等待着消费者接收该管道里面queue=task-mess队列里面的消息。
在这里插入图片描述

import pika
#socket连接
connection = pika.BlockingConnection(pika.ConnectionParameters(
    'localhost'))
#申明一个管道
channel = connection.channel()
#给管道里面申明一个queue
channel.queue_declare(queue='task_mess')
#通过管道发送消息
channel.basic_publish(exchange='',
                      routing_key='task_mess',
                      body='Hello World!2222222')
print("消息以及发送到subscribe端")
connection.close()
消费者:当启动subscribe的时候,消费者则会创建一个连接,申明一个管道去定义一个queue,queue定义的名字是task_mess,然后在这个queue中等待生产者发送的消息,当消息接收到就会调用callback函数,执行里面的处理。

在这里插入图片描述

import pika
#socket连接
connection = pika.BlockingConnection(pika.ConnectionParameters(
        host='localhost'))
#申明一个管道
channel = connection.channel()
#给管道里面申明一个queue
channel.queue_declare("task_mess")
def callback(ch,method,properties,body):
    #ch 是申明的管道的内存地址
    #method  吧消息发给谁的处理信息
    #properties序列化
    #body publish端发来的信息

    print("subscribe端已经接收到消息正在处理~~~",body)
    print("%s:ch,%s:method,%s:properties"%(ch,method,properties))
#管道接收消息
channel.basic_consume("task_mess",callback)
channel.start_consuming()

(2)RabbitMQ消息是通过轮询的方式分发任务的

当有一个生产者(publish)和多个消费者(subscribe,subscribe1,subscribe2)的时候(一对多),生产者的执行顺序就是按照先开启先接收的原则,直到所有的消费者都分配到消息的时候,重新从第一个执行的消费者开始继续接收消息。(当我启动消费者的顺序是subscribe,subscribe1,subscribe2当publish来消息的时候,subscribe先接收任务,然后subscribe1接收任务,最后是subscribe2接收任务,直到所有的消费者都执行过任务,在从新回到subscribe开始接收)

模拟的场景是,先分别开启subscribe,subscribe1ÿ

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值