标签:
默认交换机是broker事先声明的一个无名字(空字符串)的直接交换机(direct Exchange),它有一个让它很有用或对一般简单应用很起作用的特点:每创建一个队列,都会以队列名称作为路由键(Route Key)被绑定到该交换机上。
举个例子:创建队列“search-indexing-online”,AMQP broker会把“search-indexing-online”作为路由键,绑定到默认交换机上。因此,发送以“search-indexing-online”作为路由键的消息,会被路由到默认交换机(废话)。换句话说呢,默认交换机和队列直接进行消息传递。(直接用队列名进行路由指定,对于简单应用,用它就足够了)
直接交换机:通过消息的路由键,向队列传递消息。理论上,被用在单播路由消息上(后边就理解是啥玩意了),看一下它怎么工作吧:
直接交换机还有个常用的用途:通过轮询的方式广播分发给多个应用实例,这种时候要明白,这么做平衡了消费者的压力,而不是队列的压力。( in AMQP 0-9-1啥意思)
扇形交换机:无视一切路由键,将消息发送给绑在它下面的所有队列。如果它下面绑了N个队列,来一条消息了,扇形交换机就会复制一份给所有下面的队列。所以,它常用来做广播功能。
因为扇形交换机采用复制广播,所以以下场景格外合适:
主题交换机:根据路由键和队列交换机绑定模式的匹配度,来路由消息。主题交换机经常用在随机性强的发布、订阅类型的场景。一般用来做广播。
使用示例:
头部交换机: 用来路由那些拥有相对于使用路由键,更适合放在头部的多个属性的消息。它无视路由键,而是获取路由的头部。如果消息头部的值和路由匹配,就会通过。
很多情况下,一个队列会绑定多个header到头部交换机,这时候,broker需要开发者提供多个头信息以及或与非关系。或与非,通过配置“x-match”来实现,“Any”就是或,“All”就是与。明白吗?
头部交换机可以看作是增强型直接交换机。因为它们更加精确的匹配到头部,当路由键不是字符串,而是整形、哈希等的时候,头部交换机可以当做直接交换机来用。
标签:
原文地址:http://www.cnblogs.com/liuchuanxu/p/5776185.html