RabbitMQ运行机制
AMQP中消息的路由过程和Java开发者熟悉的JMS存在一些差别,AMQP中增加了Exchange和Binding的角色,生产者把消息发布到Exchange上,Binding决定发布到Exchange上的消息应该发送到那个队列上,消息最终到达队列并被消费者接收。
Exchange(交换器)类型
Exchange分发消息时根据类型的不同分发策略也不相同,目前共有4种类型:direct(默认,点对点,提前预知性的绑定)、fanout(群发性的绑定,类似于多播)、topic(正则,归类性的绑定)、headers(and、or的绑定),headers匹配消息的header而不是routing-key(路由键),除此之外,headers交换器和direct交换器完全一致,但性能差好多,目前几乎已经不用了。
1.Direct Exchange(默认,点对点)
消息中的routing-key(路由键)如果和Binding中的binding-key一致,交换器就将该消息发到对应的队列中。如果一个队列绑定到交换器要求路由键为“dog”,则只转发routing-key标记为dog的消息,它是完全匹配、单播的模式。
2.Fanout Exchange(类似于多播)
每个发到fanout类型交换器的消息都会分到所有绑定的队列上去,fanout交换器不处理路由键,只是简单的将队列绑定到交换器上,每个发送到交换器的消息都会被转发到与该交换器绑定的所有队列上,很像子网广播,每台子网内的主机都获得了一份复制的消息,fanout类型转发消息是最快的。
队列中的数据无论多少个队列,其数据一致。
使用场景:
1)、订单流程,如订单提交后,同时向客户发送短信及邮件等。
2)、C/S软件弹出消息,通过轮询的方式,在C/S中绑定fanout Exchange,这时候服务器有消息的话,可以及时推送。
3)、类似于淘宝的部分流程,如催付,付款后提醒,发货提醒,签收提醒,如给用户关联的推荐使用短信和邮件分别发送等。
。。。。。
3.Topic Exchange(通配符匹配)
binding-key支持通配符,有两个通配符,“#”代表0个或多个单词,“*”代表一个单词,若消息的routing-key与之匹配,则将消息发至该队列。
4.Headers Exchange(Headers匹配)
headers采用muliple attribute来替代routing-key,通过设置headers中的x-match属性为all或any进行匹配,all:所有的header头信息必须匹配。any:只要有一个匹配就可以了。
RabbitMQ运行机制的更多相关文章
- 2.1_springboot2.x消息介绍&RabbitMQ运行机制
1.概述 1.大多应用中,可通过消息服务中间件来提升系统异步通信.扩展解耦能力 2.消息服务中两个重要概念: 消息代理(message broker)即消息服务器 和目的地(destination ...
- (十三)Maven插件解析运行机制
这里给大家详细说一下Maven的运行机制,让大家不仅知其然,更知其所以然. 1.插件保存在哪里? 与我们所依赖的构件一样,插件也是基于坐标保存在我们的Maven仓库当中的.在用到插件的时候会先从本地仓 ...
- 深入理解JavaScript运行机制
深入理解JavaScript运行机制 前言 本文是写作在给团队新人培训之际,所以其实本文的受众是对JavaScript的运行机制不了解或了解起来有困难的小伙伴.也就是说,其实真正的原理和本文阐述的并不 ...
- javascript运行机制
太久没更新博客了,Javascript运行机制 Record it 1.代码块 JavaScript中的代码块是指由<script>标签分割的代码段.例如: <script type ...
- ASP.NET MVC的运行机制--url的全局分析
全局 首先我们来看一副图片 首先,用户通过Web浏览器向服务器发送一条url请求,这里请求的url不再是xxx.aspx格式,而是http://HostName/ControllerNam ...
- Windows程序内部运行机制 转自http://www.cnblogs.com/zhili/p/WinMain.html
一.引言 要想熟练掌握Windows应用程序的开发,首先需要理解Windows平台下程序运行的内部机制,然而在.NET平台下,创建一个Windows桌面程序,只需要简单地选择Windows窗体应用程序 ...
- JavaWeb三大组件——过滤器的运行机制理解
过滤器Filter 文章前言:本文侧重实用和理解. 一.过滤器的概念. lFilter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有 ...
- SSL/TLS协议运行机制的概述
互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 ...
- SSL/TLS协议运行机制
转载自http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html 互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行 ...
随机推荐
- idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器 原
在使用idea开发时,直接docker-maven-plugin插件,把项目编译成docker镜像,然后通过docker:push推送到linux服务器,非常简单,快捷,也避免了手动打包,然后拷贝wa ...
- luogu2279 消防局的设立 (贪心)
按点的深度从大到小排序,每次取出深度最大的那个点,如果它还没被覆盖,就在它爷爷上放一个消防局,这样一定是最优的 为了判定是否被覆盖,可以记录从某点的子树中到这个点的最近消防局的距离dis[](如果没有 ...
- windows安装redis的正确姿势
安装: 1,redis官方下载地址:https://redis.io/download,redis 64位下载地址:https://github.com/ServiceStack/redis-wind ...
- 离线安装.NET 3.5
最近为系统新增一个功能,写完以后进行部署,发现在IIS7上部署没有问题,但是IIS6上部署会出现未知情况,具体表现为取不到数据,估计是IIS6和IIS7直接的差异导致程序异常退出. 为了重现异常,在本 ...
- C# String类&Math类&DateTime类
String类: String a = "abcdefghijklmnopqrstuvwxyz"; int length = a.length; //获取字符串的长度: a = ...
- 洛谷P3474 KUP-Plot purchase
简要题意: 给你一个n * n的非负矩阵,求问是否有子矩阵满足和在[k, 2k]之间.若有输出方案.n<=2000. 解: 首先n4暴力很好想(废话),然后发现可以优化成n3log2n,但是还是 ...
- 【ATcoder】Xor Sum 2
题目大意:给定一个 N 个点的序列,求有多少个区间满足\(\oplus_{i=l}^ra[i]=\sum\limits_{i=l}^ra[i]\). 题解: 小结论:\(a\oplus b=a+b\r ...
- Eclipse Jee Oxygen安装svn插件
转: Eclipse Jee Oxygen安装svn插件 技术标签: eclipse svn Eclipse Jee Oxygen安装svn插件 入主题: 选择Eclipse->菜单-> ...
- ElasticSearch文档操作介绍三
ElasticSearch文档的操作 文档存储位置的计算公式: shard = hash(routing) % number_of_primary_shards 上面公式中,routing 是一个可变 ...
- ElasticSearch入门介绍一
ElasticSearch 关于es的几个概念: 集群:多个运行es节点可以组成一个集群,它们拥有相同的cluster.name. 节点:运行es的实例 索引:相当于数据库database,一个集群可 ...