python 消息队列-rabbitMQ 和 redis介绍使用
2021-07-15 13:07
标签:nec tag 消息 redis ann 多个 避免 pre lock 1、rabbitMQ 与ptyhon 进程queue 区别。进程queue 主要用户Python父子进程之间或者统一进程不同子进程。rabbit可以用户不同语言之前的相互交流,socket可以实现同样功能,但是较为复杂。 2、 rabbitMQ 消息轮训。一个生产者对多个消费者时候。会自动将消息轮训给不同消费者。 3、服务端消息持久化声明 python 消息队列-rabbitMQ 和 redis介绍使用 标签:nec tag 消息 redis ann 多个 避免 pre lock 原文地址:https://www.cnblogs.com/xiajq/p/9536421.html# 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()
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介绍使用
文章链接:http://soscw.com/index.php/essay/105587.html