概述

Rabbitmq一些常见的角色

  • publisher 生产者
  • consumer 消费者
  • exchange 交换机,负责消息路由
  • queue 队列,存储信息
  • virtualHost 虚拟主机

exchange 类型

发布订阅模式与之前案例的区别就是允许将同一消息发送给多个消费者。实现方式是加入了exchange(交换机)。

常见exchange类型包括:
Fanout:广播-将消息交给所有绑定到交换机的队列
Direct:定向-把消息交给符合指定routing key 的队列
Topic:通配符-把消息交给符合routing pattern(路由模式) 的队列

fanout

在Fanout模式中,一条消息,会被所有订阅的队列都消费。

direct

在Direct模型下:
队列与交换机的绑定,不能是任意绑定了,而是要指定一个RoutingKey(路由key)
消息的发送方在 向 Exchange发送消息时,也必须指定消息的 RoutingKey
Exchange不再把消息交给每一个绑定的队列,而是根据消息的Routing Key进行判断,只有队列的Routingkey与消息的 Routing key完全一致,才会接收到消息。

topic 交换机

Topic类型的ExchangeDirect相比,都是可以根据RoutingKey把消息路由到不同的队列。只不过Topic类型Exchange可以让队列在绑定Routing key 的时候使用通配符!

通配符规则:

  • #:匹配一个或多个词 item.spu.insert
  • *:匹配不多不少恰好1个词 item.spu

rabbitmq的架构模型