Exchange Modes

Direct

  • direct 按着指定的路由发送至对应的 queue,若 routingKey 不指定,则使用默认的 ""

exchange-direct

  • 可以使用相同的 routingKey 绑定不同的 Queues,这种形式像 fanout 模式一样

direct-exchange-multiple

Fanout

  • 路由模式,设置 routingKey 是没有用的,会发送消息至所有与 fanoutExchange 绑定的 queues 里面去
  • 若 FanoutExchange 改变了绑定的 Queue,RabbitMQ 不会内部刷新,需要手工删除
  • faout 发送的消息,topic 也是可以接收到的

exchange-fanout

Topic

  • 发送时定义什么样的 routingKey,则接收的时候按照 routingKey 的规则去接收
  • topic 模式下的 routingKey 可以是表达式,用于多个 Queue 进行接收
  • 若 TopicExchange 改变了绑定的 RoutingKey,RabbitMQ 不会内部刷新,需要手工删除

* & #

/**
 * Q1    hello*
 * Q2    hello#
 * 2.hello.2        Q1
 * hello.2          Q1 Q2
 * hello.to.hello   Q2
 * null             无
 * ""               无
 * 2hello           无
 * hello2           无
 */
  • * 只匹配一个字符
  • # 匹配多个字符
  • 若存在多个匹配字符,则 * 就不会命中,只有 #会命中
  • hello2 与 2hello 不会命中说明不是 like,而是单词的 full 匹配;

Demo

springboot-rabbit