文章目录

  • 叙述
  • 交换器分类
  • 交换机属性
  • 交换机的几种模式
  • Direct Exchange(直连交换机)
  • Topic Exchange(通配符交换机)
  • Fanout Exchange(广播模式)
  • 小结


叙述

重点学习一下RabbitMQ里面的exchange(交换器)的知识。

交换器分类

RabbitMQ的Exchange(交换器)分为四类:

  • direct(默认)(直连交换机)
  • headers
  • fanout(广播模式)
  • topic(通配符交换机)

交换机属性

  1. Name:交换机名称
  2. Type:交换机类型direct、topic、fanout、headers
  3. Durability:是否需要持久化,true为持久化
  4. Auto Delete:当最后一个绑定到Exchange上的队列删除后,自动删除该Exchange
  5. Internal:当前Exchange是否用于RabbitMQ内部使用,默认为False
  6. 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必须完全匹配才会被队列接收,否则该消息会被抛弃.

springboot rabbitmq 消费 交换机 rabbitmq交换器_持久化

Topic Exchange(通配符交换机)

1. 所有发送到Topic Exchange的消息被转发到所有关心RouteKey中指定Topic的Queue上

2.Exchange 将RouteKey 和某Topic 进行模糊匹配,此时队列需要绑定一个Topic

springboot rabbitmq 消费 交换机 rabbitmq交换器_消息传递_02


springboot rabbitmq 消费 交换机 rabbitmq交换器_消息发送_03

Fanout Exchange(广播模式)

1.不处理路由键,只需要简单的将队列绑定到交换机上
2.发送到交换机的消息都会被转发到与该交换机绑定的所有队列上
3.Fanout交换机转发消息是最快的

springboot rabbitmq 消费 交换机 rabbitmq交换器_rabbitmq的交换器_04