python 消息队列-rabbitMQ 和 redis介绍使用

Posted 马里亚纳仰望星空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 消息队列-rabbitMQ 和 redis介绍使用相关的知识,希望对你有一定的参考价值。

1、rabbitMQ 与ptyhon 进程queue 区别。进程queue 主要用户Python父子进程之间或者统一进程不同子进程。rabbit可以用户不同语言之前的相互交流,socket可以实现同样功能,但是较为复杂。

 

2、 rabbitMQ  消息轮训。一个生产者对多个消费者时候。会自动将消息轮训给不同消费者。

# Author : xiajinqi

import pika

connetction = pika.BlockingConnection(pika.ConnectionParameters("localhost"))

channel = connetction.channel()

channel.queue_declare(queue=hello)
#  1个生产着,三个消费者,会自动轮训,其中一个消费者宕机后,消息会自动发给其他消费者处理。
channel.basic_publish(exchange=‘‘,routing_key=hello,body=hello world!)

print("消息已经发送")

channel.close()



# Author : xiajinqi
import pika
import time

connetction = pika.BlockingConnection(pika.ConnectionParameters("localhost"))

channel = connetction.channel()

channel.queue_declare(queue=hello)  #避免生产者后启动,没有这个队列报错。所以在此申明

def  callback(ch,method,properties,body):
    ‘‘‘
    :param ch:  管道对象内存地址
    :param method: 发消息给谁的申明信息
    :param properties:
    :param body:
    :return:
    ‘‘‘
    print(ch,method,properties,body)
    ch.basic_ack(delivery_tag=method.delivery_tag)  #执行完以后告诉服务端
   # time.sleep(30)
    pass

## 申明收到调用callbak处理  no_ack 默认为false消息不会丢失,表示需要客户端回调函数处理完,主动告诉服务端已经处理完。为true断电消息会丢失
#channel.basic_consume(callback,queue=hello,no_ack=True)
channel.basic_consume(callback,queue=hello)

print("开始收消息")

channel.start_consuming()

3、服务端消息持久化声明

channel.queue_declare(queue=hello1,durable=True) # durable队列持久化申明
#  1个生产着,三个消费者,会自动轮训,其中一个消费者宕机后,消息会自动发给其他消费者处理。
#delivery_mode 消息持久化声明
channel.basic_publish(exchange=‘‘,routing_key=hello1,body=hello world!,properties=pika.BasicProperties(delivery_mode=2))

 

以上是关于python 消息队列-rabbitMQ 和 redis介绍使用的主要内容,如果未能解决你的问题,请参考以下文章

python中消息队列RabbitMQ的使用

基于Python语言使用RabbitMQ消息队列

python RabbitMQ消息队列

RabbitMQ介绍 + python操作

基于Python语言使用RabbitMQ消息队列

Python-RabbitMQ消息队列实现rpc