一、Exchange交换机
1.Exchange:接受消息,并根据路由键转发消息到所绑定的队列
2.属性
Name:交换机名称
Type:交换机类型 direct、topic、fanout、headers
Durability:是否需要持久化
Auto Delete:当最后一个绑定到Exchange上的队列删除后,自动删除该Exchange
Internal:当前Exchange是否术语RabbitMQ内部使用,默认false
Arguments:扩展参数,用于扩展AMPQP协议制订化使用
二、Default Exchange
Default Exchange 是由代理预先声明的无名称(空字符串)的直接交换。它有一个特殊的属性,使得它对于简单的应用程序非常有用:每一个创建的队列都自动绑定到路由键(Routing Key)为队列名称(Queue Name)的交换机。
三、Direct Exchange
1.所有发送到Direct Exchange的消息被转发到RouteKey中指定的Queue。
注意:Direct模式可以使用RabbitMQ自带的Exchange:default Exchange,所以不需要将Exchange进行任何绑定操作,消息传递时,RouteKey必须完全匹配才会被队列接收,否则该消息会被抛弃。
四、Topic Exchange
Topic Exchange基于消息路由键(Routing Key)和用于将队列绑定到交换机的模式之间的匹配,将消息路由到一个或多个队列。Topic Exchange通常用于实现各种发布/订阅模式变化。Topic Exchange通常用于消息的多播路由。
每当问题涉及多个消费者/应用程序,它们有选择地选择它们想要接收哪种类型的消息时,应该考虑使用Topic Exchange。
五、Fanout Exchange
Fanout Exchange将消息路由到绑定到它的所有队列,并且忽略路由键(Routing Key) 。如果N个队列绑定到Fanout Exchange,则当向该交换机发布新消息时,将向所有N个队列传递消息的副本。Fanout Exchange是广播消息路由的理想选择。
Fanout Exchange向每个绑定到它的队列传递消息副本,适用场景如下:
1.大型多人在线(MMO)游戏可用于排行榜更新或其他全球性事件。
2.体育新闻网站可以使用Fanout Exchange来实时更新移动客户端的评分更新。
3.分布式系统可以广播各种状态和配置更新