在RabbitMQ中使用哪种交换类型(直接,扇出,主题,标题)的场景?

时间:2015-04-16 05:26:04

标签: rabbitmq amqp spring-rabbit rabbitmq-exchange

我无法弄清楚使用RabbitMQ中提供的不同交换类型的实际场景。

2 个答案:

答案 0 :(得分:6)

Exchange是AMQP协议中定义的实体。 见AMQP concepts at RabbitMQ tutorial

  •   

    直接交换基于消息路由密钥将消息传递到队列。直接交换是消息单播路由的理想选择。

  •   

    扇出交换将消息路由到绑定到它的所有队列,并忽略路由密钥。扇出交换是消息广播路由的理想选择。   大型多人在线(MMO)游戏可以将其用于排行榜更新或其他全球活动;   体育新闻网站可以使用扇出交换来近乎实时地向移动客户端分发分数更新;   分布式系统可以广播各种状态和配置更新;   群聊可以使用扇出交换在参与者之间分发消息(尽管AMQP没有内置的存在概念,因此XMPP可能是更好的选择)。

  •   

    主题根据消息路由密钥与用于将队列绑定到交换的模式之间的匹配,将消息路由到一个或多个队列。   示例用途:   分发与特定地理位置相关的数据,例如销售点;   由多个工作人员完成的后台任务处理,每个工作人员能够处理特定的任务集;   股票价格更新(以及其他类型财务数据的更新);   涉及分类或标记的新闻更新(例如,仅针对特定运动或团队);   在云中协调不同类型的服务;   分布式体系结构/特定于操作系统的软件构建或打包,其中每个构建器只能处理一个体系结构或操作系统。

  •   

    标头交换设计用于在多个属性上进行路由,这些属性更容易表示为邮件头而不是路由密钥。   标题交换可视为"直接交换类固醇"。因为它们基于标头值进行路由,所以它们可以用作直接交换,其中路由密钥不必是字符串;例如,它可以是整数或散列(字典)。

答案 1 :(得分:1)

有关示例,请参阅the rabbitmq tutorials