python之路day11【RabbitMQ、Redis、Mysql】
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python之路day11【RabbitMQ、Redis、Mysql】,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3214字,纯文字阅读大概需要5分钟。
内容图文
![python之路day11【RabbitMQ、Redis、Mysql】](/upload/InfoBanner/zyjiaocheng/472/e73fda99d5a84457883622fbaeffd290.jpg)
consumer
1 #! /usr/bin/env python3 2 # -*- coding:utf-8 -*- 3 import pika 4 5 connection = pika.BlockingConnection(pika.ConnectionParameters( 6 ‘localhost‘)) 7 channel = connection.channel() 8 9 # You may ask why we declare the queue again ? we have already declared it in our previous code. 10 # We could avoid that if we were sure that the queue already exists. For example if send.py program 11 # was run before. But we‘re not yet sure which program to run first. In such cases it‘s a good 12 # practice to repeat declaring the queue in both programs. 13 channel.queue_declare(queue=‘hello‘) 14 15 16 def callback(ch, method, properties, body): 17 print(" 收到: %r" % body.decode("utf-8")) 18 19 channel.basic_consume(callback, 20 queue=‘hello‘, 21 no_ack=True) 22 print(‘ 等待。。。‘) 23 channel.start_consuming()
注意代码中的英文注释,特别是为什么又一次声明queue。。。
1.4 轮询原理
1.3中如果依次运行两个consumer,分别记consumer1、consumer2,那么producer第一次发消息是consumer1收到,第二次发是consumer2收到,第三次发又是consumer1收到......也就是说,rabbitMQ是依次把消息发给consumer端。
1.5 消息持久化
producer
1 #! /usr/bin/env python3 2 # -*- coding:utf-8 -*- 3 import pika 4 5 connection = pika.BlockingConnection(pika.ConnectionParameters("localhost")) # 相当于建立一个socket连接 6 channel = connection.channel() # 定义一个管道 7 # 声明Queue 8 channel.queue_declare(queue="hello2",durable=True) # durable=True 是把这个队列持久化,如果rabbitMQ挂掉,队列还在;如果 9 # 队列中的消息没有持久化,则消息会丢失 10 channel.basic_publish(exchange="", 11 routing_key="hello2", 12 body="Hi,how are you?", 13 properties=pika.BasicProperties( 14 delivery_mode=2,)) # properties=pika.BasicProperties(delivery_mode=2,) 这是队列中的消息持久化 15 print("发送了一句话。。。") 16 connection.close()
上述代码中,第8行只是队列持久化,如果rabbitMQ挂掉,队列还在;但如果队列中的消息没有持久化,则消息会丢失。
1.6 消息公平分发
如果Rabbit只管按顺序把消息发到各个消费者身上,不考虑消费者负载的话,很可能出现,一个机器配置不高的消费者那里堆积了很多消息处理不完,同时配置高的消费者却一直很轻松。为解决此问题,可以在各个消费者端,配置perfetch=1,意思就是告诉RabbitMQ在我这个消费者当前消息还没处理完的时候就不要再给我发新消息了。
1.7 消息发布/订阅(Publish/Subscribe)
1.8 有选择地接收消息(exchange type = direct)
python之路day11【RabbitMQ、Redis、Mysql】
标签:
本文系统来源:http://www.cnblogs.com/zingp/p/5964291.html
内容总结
以上是互联网集市为您收集整理的python之路day11【RabbitMQ、Redis、Mysql】全部内容,希望文章能够帮你解决python之路day11【RabbitMQ、Redis、Mysql】所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。