第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

Python-RabbitMQ fanout廣播模式

標簽:
Python

现实生活中,机器的配置不同,有的性能高,有的性能低,有可能A机器处理了四条消息,B机器一条消息还没处理完,要是按照轮询方式来分发消息的话,那就是A机器一直是空闲,B机器有一大丢消息处理不完。我们在部署集群的时候,往往要添加一个服务器的权重值,那个服务器性能好就多给它点儿任务,那么在RabbitMQ怎么办呢?RabbitMQ里的公平分发是指你有多大本事就干多少活儿,比如A机器处理速度快RabbitMQ就多给它发,B机器处理速度慢就给它少发。RabbitMQ是这样做的,Server端在给Client发消息时会先检查Client端还有多少条消息没有处理完,如果当前队列里消息大于1就不发,队列里为空就发。只需要在**消费者**端加一条短短的代码channel.basic_qos(prefetch_count=1)即可。

我们编辑两个消费者端来测试receive.py和receive2.py
https://img1.sycdn.imooc.com//5b2390e700017f6b08650480.jpg

https://img1.sycdn.imooc.com//5b2390f70001617608590481.jpg编辑完成后,开启两个消费者端,用生产者连续发消息测试,可以看到在receive2没有处理完的时候,生产者的消息是不会发送给它的。

以上例子都是一对一的发消息,也就是说生产者发一条消息,只有一个消费者能接收,那现在学习一下让所有消费者都能接收到(广播效果),这时候就要用到Exchange了,Exchange一端接收生产者的消息,一段是把消息投递到Queue中,Exchange必须精确的知道投递的精确对象,是投递到某一个Queue呢,还是投递到很多的Queue呢,还是删除?Exchange在定义的时候是有类型的,以决定到底哪些Queue符合条件,可以接收消息。我们可以理解它为"转发器"。Exchange类型:

1、fanout:所有绑定到此Exchange的Queue都可以接收消息
2、direct:通过routing_key和Exchange决定的那个唯一的Queue可以接收信息
3、topic:所有符合routing_key(可以是表达式)的routing_key所绑定的Queue可以接收消息
4、headers:通过headers决定把消息发给哪些Queue

fanout就是纯广播,只要绑定到此Exchange的队列就能收到消息

https://img1.sycdn.imooc.com//5b2390ff0001fe4304200160.jpg

看一下是怎么实现的
1、生产者端
https://img1.sycdn.imooc.com//5b2391100001cbcd08550428.jpg

代码中的channel.exchange_declare里面的参数没有写变量,比如exchange="logs",type="fanout",但是写上会报错,不知道什么原因。。。。
2、消费者端
https://img1.sycdn.imooc.com//5b23911900019cb508490262.jpg

生产者发消息,多开几个消费者端,可以看到能同时接收到消息(消费者端执行格式:python publisher.py 你们好)。

注意:在测试的时候我先打开的生产者端,按常理讲我再开消费者端的时候是能够接收到消息的,但事实是没有消息。。。。原因很简单,我们想象一下收音机的功能,当你关闭收音机的时候是听不到广播的,只有当你打开收音机的时候才能听到,比如12点打开的收音机,你只能听到12点的广播,你是不能听到11点半的广播的,说简单点也就是实时的。 以上就是我们所说的消息的订阅与发布。

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消