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的分发机制相关推荐

  1. 【RabbitMQ】5、RabbitMQ任务分发机制

    当有Consumer需要大量的运算时,RabbitMQ Server需要一定的分发机制来balance每个Consumer的load.接下来我们分布讲解. 应用场景就是RabbitMQ Server会 ...

  2. 轻松搞定RabbitMQ(二)——工作队列之消息分发机制

    上一篇博文中简单介绍了一下RabbitMQ的基础知识,并写了一个经典语言入门程序--HelloWorld.本篇博文中我们将会创建一个工作队列用来在工作者(consumer)间分发耗时任务.同样是翻译的 ...

  3. RabbitMQ学习总结(6)——消息的路由分发机制详解

    2019独角兽企业重金招聘Python工程师标准>>> 一.Routing(路由) (using the Java client) 在前面的学习中,构建了一个简单的日志记录系统,能够 ...

  4. View事件分发机制(源码 API27)

    1.什么是事件分发机制 当用户触摸屏幕时,会产生一个touch事件,这个touch事件(motionEvent)传递到某个具体的view处理的整个过程 用户触摸屏幕会产生一个事件流(ACTION_DO ...

  5. Android事件分发机制详解

    2019独角兽企业重金招聘Python工程师标准>>> 之前在学习Android事件方法机制的时候,看过不少文章,但是大部分都讲的不是很清楚,我自己理解的也是云里雾里,也尝试过阅读源 ...

  6. android触摸事件分发,Android 事件分发机制

    Android 事件分发机制一直让人头痛,之前也是面向 GitHub 编程得过且过.今天下定决心了解一下,以便后面自己定制 View 效果.Android 触摸事件有三个基本类型:ACTION_DOW ...

  7. View事件分发机制(源码分析篇)

    01.Android中事件分发顺序 1.1 事件分发的对象是谁 事件分发的对象是事件.注意,事件分发是向下传递的,也就是父到子的顺序. 当用户触摸屏幕时(View或ViewGroup派生的控件),将产 ...

  8. 事件分发机制并不是洪水猛兽

    文章目录 OnTouchListener与OnClickListener的优先级 事件分发 滑动冲突 处理滑动冲突 1. 内部拦截法 2.外部拦截法 当MotionEvent产生后,系统总归要将其传递 ...

  9. 【Android View事件分发机制】关于拦截事件的注意点

    在父容器拦截事件时,为什么不能拦截DOWN事件呢? 先看看源码: 回顾一下事件分发机制原理,当事件来了之后,如果父容器不拦截,则会询问其child view ,当某child view 有事件需求,父 ...

最新文章

  1. ASP.NET MVC + ECharts图表案例
  2. 【linux】——linux下的软件安装
  3. python划分数据集_Python数据集切分实例
  4. CSS基础(part15)--元素的隐藏与显示
  5. 实时手势识别 【手部跟踪】Mediapipe中的hand
  6. 关于tar无法解压缩问题
  7. sklearn网格搜索GridSearchCV得到各个评价指标的均值与方差
  8. FastDFS 入门简介
  9. HtmlTextWriter类的学习
  10. 孙杨事件的几点事实!
  11. 计算机系统时microsoft账号是,电脑microsoft账户登不进去
  12. 简要概述网络安全保障体系的总体框架
  13. 正大国际期货:正大期货公司开户指南
  14. 数据库之视图和触发器
  15. 这个“安装macOS High sierra”应用程序副本已损坏,不能用来安装macOS
  16. 最完整Android Studio插件整理
  17. 图形推理1000题pdf_【3分钟模考】图形推理06组
  18. lyapunov函数
  19. 单连通和多(复)连通
  20. Ruby RestClient教程

热门文章

  1. 模拟电话交换机和IPPBX之间进行连接
  2. 使用C++ opencv将16位图像映射到8位
  3. 有一种爱 不能称之为爱情
  4. 程序员python代码打招呼方式_某编程少年说他是Python大神,神级程序员不用一行代码教他做人!...
  5. Vue学习笔记01-基础部分
  6. win7利用pycharm代码连接夜神模拟器运行appium,被杀进程怎么办
  7. 数据库系统概念 - 数据模型,关系模型,关系,候选码,主码,外码
  8. MOSES翻译系统的训练,调优和使用
  9. M480 EMAC驱动01-EMAC底层接口
  10. 工作三年程序员收入到底多高?透露收入:网友:哇,真的好高呀!