我无法弄清楚使用 RabbitMQ 中提供的不同交换类型的实际场景。
2 回答
Exchange 是 AMQP 协议中定义的实体。请参阅RabbitMQ 教程中的 AMQP 概念:
直接交换根据消息路由键将消息传递到队列。直接交换是消息单播路由的理想选择。
扇出交换将消息路由到绑定到它的所有队列,并且忽略路由键。扇出交换是消息广播路由的理想选择。大型多人在线 (MMO) 游戏可以将其用于排行榜更新或其他全球活动;体育新闻网站可以使用扇出交换向移动客户端近乎实时地分发比分更新;分布式系统可以广播各种状态和配置更新;群聊可以使用扇出交换在参与者之间分发消息(尽管 AMQP 没有内置的存在概念,因此 XMPP 可能是更好的选择)。
主题交换基于消息路由键与用于将队列绑定到交换的模式之间的匹配将消息路由到一个或多个队列。使用示例:分发与特定地理位置相关的数据,例如销售点;由多个工作人员完成的后台任务处理,每个工作人员都能够处理特定的任务集;股票价格更新(以及其他类型财务数据的更新);涉及分类或标记的新闻更新(例如,仅针对特定运动或团队);云中各种服务的编排;分布式架构/特定于操作系统的软件构建或打包,其中每个构建器只能处理一个架构或操作系统。
标头交换设计用于在多个属性上进行路由,这些属性比路由键更容易表示为消息标头。标头交换可以被视为“类固醇的直接交换”。因为它们基于标头值进行路由,所以它们可以用作路由键不必是字符串的直接交换;例如,它可以是整数或哈希(字典)。
有关示例,请参阅rabbitmq 教程。