文档章节

8、RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较

o
 osc_x4h57ch8
发布于 2018/04/24 09:26
字数 605
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较

  • RabbitMQ中,除了Simple Queue和Work Queue之外的所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储。
  • RabbitMQ提供了四种Exchange:fanout,direct,topic,header
  • header模式在实际使用中较少
  • **性能排序:fanout>direct>>topic。比例大约为11:10:6

Direct Exchange

  • 任何发送到Direct Exchange的消息都会被转发到RouteKey中指定的queue

    1. 一般情况下可以使用rabbitMQ自带的Exchange:“”(该Exchange的名字为空字符串,下文称其为defaultExchange)。
    2. 这种模式下不需要将Exchange进行任何绑定(binding)操作。
    3. 消息传递时需要一个“RouteKey(其实是QueueName)”,可以简单的理解为要发送的队列名字。相当于上面提到的Simple Queue和Work Queue.
    4. 如果vhost中不存在RouteKey中指定的队列名,则该消息被抛弃。

Fanout Exchange

  • 任何发送到Fanout Exchange的消息都会被转发到与该Exchange绑定(Binding)的Queue上

    1. 可以理解为路由表的模式
    2. 这种模式不需要RouteKey
    3. 这种模式需要提前将Exchange与Queue进行绑定,一个Exchange可以绑定多个Queue,一个Queue可以同多个Exchange进行绑定
    4. 如果接受消息的Exchange没有和任何Queue绑定,则消息被抛弃

Topic Exchange

  • 任何发送到Topic Exchange的消息都会被转发到所有关心RouteKey中指定话题的Queue上

    1. 这种模式较为复杂,简单来说,就是每个队列都有其关心的主题(通过BindingKey来说明),所有的消息都带有一个“标题”(Route Key),Exchange会将消息转发到所有关注主题能够和RouteKey模糊匹配的队列。匹配规则使用通配符“#”和“*”。
    2. 这种模式需要RouteKey,也要提前绑定Exchange与Queue。绑定之后Exchange才能够判断队列关心的主题是否与RouteKey匹配。
    3. 在进行绑定时,需要提供一个该队列关系的主题,如“#.log.#”表示该队列关系所有涉及log的消息(一个RouteKey为“MQ.log.error”的消息就会被转发给该队列)
    4. 同样,如果Exchange没有任何发现能够与RouteKey匹配的Queue,则会抛弃该消息。
  • 引用自RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

告别传统机房:3D 机房数据可视化实现智能化与VR技术的新碰撞

前言 随着各行业对计算机依赖性的日益提高,计算机信息系统的发展使得作为其网络设备、主机服务器、数据存储设备、网络安全设备等核心设备存放地的计算机机房日益显现出它的重要地位,而机房...

xhload3d
昨天
13
0
如何使用.css()应用!important? - How to apply !important using .css()?

问题: I am having trouble applying a style that is !important . 我在应用!important样式时遇到麻烦。 I've tried: 我试过了: $("#elem").css("width", "100px !important"); This doe......

富含淀粉
昨天
5
0
spring源码解析-xml配置文件读取

整个 XML配置文件读取的大致流程如下: 通过继承自AbstractBeanDefinitionReader中的方法,来使用ResourLoader将资源文件路径转换为对应的Resource文件(读取资源文件并将其转为Resource) ...

wc_飞豆
昨天
16
0
salesforce community cloud 1

NO.1 Universal Containers has a Community for their partners. They would like to add a new partner company and grant their users access to the Community. What is the first step ......

jinzongyu
昨天
11
0
如何使用PHP计算两个日期之间的差异? - How to calculate the difference between two dates using PHP?

问题: I have two dates of the form: 我有两个日期格式: Start Date: 2007-03-24 End Date: 2009-06-26 Now I need to find the difference between these two in the following form:......

技术盛宴
昨天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部