文章目录
- 叙述
- 交换器分类
- 交换机属性
- 交换机的几种模式
- Direct Exchange(直连交换机)
- Topic Exchange(通配符交换机)
- Fanout Exchange(广播模式)
- 小结
叙述
重点学习一下RabbitMQ里面的exchange(交换器)的知识。
交换器分类
RabbitMQ的Exchange(交换器)分为四类:
- direct(默认)(直连交换机)
- headers
- fanout(广播模式)
- topic(通配符交换机)
交换机属性
- Name:交换机名称
- Type:交换机类型direct、topic、fanout、headers
- Durability:是否需要持久化,true为持久化
- Auto Delete:当最后一个绑定到Exchange上的队列删除后,自动删除该Exchange
- Internal:当前Exchange是否用于RabbitMQ内部使用,默认为False
- Arguments:扩展参数,用于扩展AMQP协议自制定化使用
交换机的几种模式
AMQP协议中的核心思想就是生产者和消费者隔离,生产者从不直接将消息发送给队列。生产者通常不知道是否一个消息会被发送到队列中,只是将消息发送到一个交换机。先由Exchange来接收,然后Exchange按照特定的策略转发到Queue进行存储。同理,消费者也是如此。Exchange 就类似于一个交换机,转发各个消息分发到相应的队列中。
RabbitMQ提供了四种Exchange模式:fanout,direct,topic,header 。 header模式在实际使用中较少,本文只对前三种模式进行比较。
Direct Exchange(直连交换机)
所有发送到Direct Exchange的消息被转发到RouteKey中指定的Queue
注意:Direct模式可以使用RabbitMQ自带的Exchange:default Exchange,所以不需要将Exchange进行任何绑定(binding)操作,消息传递时,RouteKey必须完全匹配才会被队列接收,否则该消息会被抛弃.
Topic Exchange(通配符交换机)
1. 所有发送到Topic Exchange的消息被转发到所有关心RouteKey中指定Topic的Queue上
2.Exchange 将RouteKey 和某Topic 进行模糊匹配,此时队列需要绑定一个Topic
Fanout Exchange(广播模式)
1.不处理路由键,只需要简单的将队列绑定到交换机上
2.发送到交换机的消息都会被转发到与该交换机绑定的所有队列上
3.Fanout交换机转发消息是最快的