RabbitMQ Exchange分类学习 渣渣翻译

  • Default Exchange

   默认交换机是broker事先声明的一个无名字(空字符串)的直接交换机(direct Exchange),它有一个让它很有用或对一般简单应用很起作用的特点:每创建一个队列,都会以队列名称作为路由键(Route Key)被绑定到该交换机上。
   举个例子:创建队列“search-indexing-online”,AMQP broker会把“search-indexing-online”作为路由键,绑定到默认交换机上。因此,发送以“search-indexing-online”作为路由键的消息,会被路由到默认交换机(废话)。换句话说呢,默认交换机和队列直接进行消息传递。(直接用队列名进行路由指定,对于简单应用,用它就足够了)

  • Direct Exchange

    直接交换机:通过消息的路由键,向队列传递消息。理论上,被用在单播路由消息上(后边就理解是啥玩意了),看一下它怎么工作吧:

  1. 一个队列以K作为路由键 绑定到直接交换机
  2. 一个新消息以路由键R到达直接交换机,如果K=R,就会被路由到步骤1的队列上去。

    直接交换机还有个常用的用途:通过轮询的方式广播分发给多个应用实例,这种时候要明白,这么做平衡了消费者的压力,而不是队列的压力。( in AMQP 0-9-1啥意思)

  • Fanout Exchange

    扇形交换机:无视一切路由键,将消息发送给绑在它下面的所有队列。如果它下面绑了N个队列,来一条消息了,扇形交换机就会复制一份给所有下面的队列。所以,它常用来做广播功能。
    因为扇形交换机采用复制广播,所以以下场景格外合适:

  1. MMO网游的公告栏 通知栏
  2. 体育新闻网站为移动设备及时的更新推送分数
  3. 群聊中成员收发消息。因为AMQP没有内置在场(在线)的概念,所以XMPP更合适(XMPP是一种基于标准通用标记语言的子集XML的协议)
  • Topic Exchange

    主题交换机:根据路由键和队列交换机绑定模式的匹配度,来路由消息。主题交换机经常用在随机性强的发布、订阅类型的场景。一般用来做广播。
    使用示例:

  1. 分发诸如销售网点一类特殊地点相关的数据
  2. 处理多任务后台进程
  3. 股票价格或者其他金融数据更新
  4. 话题性新闻
  5. 处理不同的云服务
  6. 分发针对每个系统的软件发布
  • Headers Exchange

    头部交换机: 用来路由那些拥有相对于使用路由键,更适合放在头部的多个属性的消息。它无视路由键,而是获取路由的头部。如果消息头部的值和路由匹配,就会通过。
    很多情况下,一个队列会绑定多个header到头部交换机,这时候,broker需要开发者提供多个头信息以及或与非关系。或与非,通过配置“x-match”来实现,“Any”就是或,“All”就是与。明白吗?
    头部交换机可以看作是增强型直接交换机。因为它们更加精确的匹配到头部,当路由键不是字符串,而是整形、哈希等的时候,头部交换机可以当做直接交换机来用。

posted @ 2016-08-16 14:02  锋利的C#  阅读(370)  评论(0编辑  收藏  举报