RabbitMQ的分发机制
https://www.kuangstudy.com/zl/rabbitmq#1366709722819948546
MQ消息队列有如下几个角色:
1、生产者
2、存储消息
3、消费者
一. 分发模式
1.发布订阅:生产者发送消息到消息队列进行存储,消费者们只要订阅了,就会收到消息队列中的消息,是一种推的机制。这是它一个最基础的功能。
2.轮询分发:生产者将消息投递到消息队列,消息队列会按照一定的机制将消息推送给消费者,而这种规则呢是一种公平的分发;并不会因为消费者的延时而造成他的不公平性(不论你的服务器性能怎么样,都会是公平的,消息队列中的消息平均分发,不会造成数据的倾斜),一旦有一个消费者消费了消息,后面的消费者就不会重复的去消费消息;自动应答。
3.公平分发:公平分发会按照服务器的性能来分配,快的消费多一点,慢的消费少一点(能者多劳);会造成数据的倾斜;一旦有一个消费者消费了消息,后面的消费者就不会重复的去消费消息;需要手动应答。
4.重发:当app创建了订单,但是订单系统出现了故障,这个时候我们的消息队列中会有一个应答机制,它没有收到消费成功的反馈(如:消费的服务器出现故障),就会造成消息的堆积,但是堆积的消息不会删除掉,它会重新发送给另一个消费的服务器来进行消费,以此类推;它的目的就是为了保证消息的一个可靠性(KafKa不支持重发)。
5.消息拉取:rbc通讯机制,消息被动拉取。
二.AMQP协议
1.生产者
2.消费者
三.RabbitMq的主要组成
Server:又称Broker ,接受客户端的连接,实现AMQP实体服务。 安装rabbitmq-server
Connection:连接,应用程序与Broker的网络连接 TCP/IP/ 三次握手和四次挥手
Channel:网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道,客户端可以建立对各Channel,每个Channel代表一个会话任务。
Message :消息:服务与应用程序之间传送的数据,由Properties和body组成,Properties可是对消息进行修饰,比如消息的优先级,延迟等高级特性,Body则就是消息体的内容。
Virtual Host 虚拟地址,用于进行逻辑隔离,最上层的消息路由,一个虚拟主机理由可以有若干个Exhange和Queueu,同一个虚拟主机里面不能有相同名字的Exchange
Exchange:交换机,接受消息,根据路由键发送消息到绑定的队列。(不具备消息存储的能力)
Bindings:Exchange和Queue之间的虚拟连接,binding中可以保护多个routing key.
Routing key:是一个路由规则,虚拟机可以用它来确定如何路由一个特定消息。
Queue:队列:也成为Message Queue,消息队列,保存消息并将它们转发给消费者。
消息模式
03-1、简单模式 Simple
参考第12章节
03-2、工作模式 Work
web操作查看视频
类型:无
特点:分发机制
03-3、发布订阅模式
web操作查看视频
类型:fanout
特点:Fanout—发布与订阅模式,是一种广播机制,它是没有路由key的模式。
03-4、路由模式
web操作查看视频
类型:direct
特点:有routing-key的匹配模式
03-5、主题Topic模式**
web操作查看视频
类型:topic
特点:模糊的routing-key的匹配模式
03-6、参数模式
web操作查看视频
类型:headers
特点:参数匹配模式
##分发模式
1默认轮询分发 默认 每个服务器不论性能一个一个分发接收
2公平分发 应答机制必须是手动应答 autoACk=false 并且手动应答 ,且设置qs qs默认轮询分发
qs=1 (没次可以从rabbitmq取出的数据,更具服务器性能设置,不能太大)且手动应答 公平分发
RabbitMQ的分发机制相关推荐
- 【RabbitMQ】5、RabbitMQ任务分发机制
当有Consumer需要大量的运算时,RabbitMQ Server需要一定的分发机制来balance每个Consumer的load.接下来我们分布讲解. 应用场景就是RabbitMQ Server会 ...
- 轻松搞定RabbitMQ(二)——工作队列之消息分发机制
上一篇博文中简单介绍了一下RabbitMQ的基础知识,并写了一个经典语言入门程序--HelloWorld.本篇博文中我们将会创建一个工作队列用来在工作者(consumer)间分发耗时任务.同样是翻译的 ...
- RabbitMQ学习总结(6)——消息的路由分发机制详解
2019独角兽企业重金招聘Python工程师标准>>> 一.Routing(路由) (using the Java client) 在前面的学习中,构建了一个简单的日志记录系统,能够 ...
- View事件分发机制(源码 API27)
1.什么是事件分发机制 当用户触摸屏幕时,会产生一个touch事件,这个touch事件(motionEvent)传递到某个具体的view处理的整个过程 用户触摸屏幕会产生一个事件流(ACTION_DO ...
- Android事件分发机制详解
2019独角兽企业重金招聘Python工程师标准>>> 之前在学习Android事件方法机制的时候,看过不少文章,但是大部分都讲的不是很清楚,我自己理解的也是云里雾里,也尝试过阅读源 ...
- android触摸事件分发,Android 事件分发机制
Android 事件分发机制一直让人头痛,之前也是面向 GitHub 编程得过且过.今天下定决心了解一下,以便后面自己定制 View 效果.Android 触摸事件有三个基本类型:ACTION_DOW ...
- View事件分发机制(源码分析篇)
01.Android中事件分发顺序 1.1 事件分发的对象是谁 事件分发的对象是事件.注意,事件分发是向下传递的,也就是父到子的顺序. 当用户触摸屏幕时(View或ViewGroup派生的控件),将产 ...
- 事件分发机制并不是洪水猛兽
文章目录 OnTouchListener与OnClickListener的优先级 事件分发 滑动冲突 处理滑动冲突 1. 内部拦截法 2.外部拦截法 当MotionEvent产生后,系统总归要将其传递 ...
- 【Android View事件分发机制】关于拦截事件的注意点
在父容器拦截事件时,为什么不能拦截DOWN事件呢? 先看看源码: 回顾一下事件分发机制原理,当事件来了之后,如果父容器不拦截,则会询问其child view ,当某child view 有事件需求,父 ...
最新文章
- ASP.NET MVC + ECharts图表案例
- 【linux】——linux下的软件安装
- python划分数据集_Python数据集切分实例
- CSS基础(part15)--元素的隐藏与显示
- 实时手势识别 【手部跟踪】Mediapipe中的hand
- 关于tar无法解压缩问题
- sklearn网格搜索GridSearchCV得到各个评价指标的均值与方差
- FastDFS 入门简介
- HtmlTextWriter类的学习
- 孙杨事件的几点事实!
- 计算机系统时microsoft账号是,电脑microsoft账户登不进去
- 简要概述网络安全保障体系的总体框架
- 正大国际期货:正大期货公司开户指南
- 数据库之视图和触发器
- 这个“安装macOS High sierra”应用程序副本已损坏,不能用来安装macOS
- 最完整Android Studio插件整理
- 图形推理1000题pdf_【3分钟模考】图形推理06组
- lyapunov函数
- 单连通和多(复)连通
- Ruby RestClient教程
热门文章
- 模拟电话交换机和IPPBX之间进行连接
- 使用C++ opencv将16位图像映射到8位
- 有一种爱 不能称之为爱情
- 程序员python代码打招呼方式_某编程少年说他是Python大神,神级程序员不用一行代码教他做人!...
- Vue学习笔记01-基础部分
- win7利用pycharm代码连接夜神模拟器运行appium,被杀进程怎么办
- 数据库系统概念 - 数据模型,关系模型,关系,候选码,主码,外码
- MOSES翻译系统的训练,调优和使用
- M480 EMAC驱动01-EMAC底层接口
- 工作三年程序员收入到底多高?透露收入:网友:哇,真的好高呀!