一、Rabbitmq 的基本概念
rabbitmq 架构
1、Broker :就是 RabbitMQ 服务,用于接收和分发消息,接受客户端的连接,实现 AMQP 实体服务。
2、Virtual host:虚拟节点,用于进行逻辑隔离、当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出多个 vhost,每个用户在自己的 vhost 创建 exchange 或 queue 等。
3、Connection: 连接,生产者/消费者与 Broker 之间的 TCP 网络连接。
4、Channel: Channel 是在 connection 内部建立的逻辑连接,如果应用程序支持多线程,通常每个 thread 创建单独的 channel 进行通讯。Channel 作为轻量级的Connection 极大减少了操作系统建立 TCP connection 的开销。
5、Message:消息,由Properties和body组成,Properties可是对消息进行修饰,比如消息的优先级,延迟等高级特性,Body则就是消息体的内容。
6、Exchange
:交换机,用于根据分发规则、匹配查询表中的 routing key 分发消息,不具备消息存储的功能。类型有:direct、topic、fanout、headers 。
7、Queue
:消息队列,保存消息并将它们转发给消费者进行消费。
8、Bindings
:exchange 和 queue 之间的虚拟连接,binding 中可以包含 routing key,Binding 信息被保存到 exchange 中的查询表中,用于 message 的分发依据。
9、Routing key:是一个路由规则,虚拟机可以用它来确定如何路由一个特定消息
二、RabbitMQ消息模式
1、简单模式
一个生产者,一个消费者,一个队列,采用默认交换机。可以理解为生产者P发送消息到队列Q,一个消费者C接收。
2、工作模式
一个生产者,多个消费者,一个队列,采用默认交换机。可以理解为生产者P发送消息到队列Q,可以由多个消费者C1、C2进行接收。
3、发布/订阅模式(fanout)
一个生产者、一个 fanout 类型的交换机、多个队列、多个消费者。一个生产者发送的消息会被多个消费者获取。其中 fanout 类型就是发布订阅模式,只有订阅该生产者的消费者会收到消息。
4、路由模式(direct)
一个生产者,一个 direct 类型的交换机,多个队列,交换机与队列之间通过 routing-key 进行关联绑定,多个消费者。生产者发送消息到交换机并且要指定routing-key,然后消息根据这交换机与队列之间的 routing-key 绑定规则进行路由被指定消费者消费。
5、主题模式(topic)
与路由模式基本相同,不同是 交换机的类型是topic 、routing-key 可以模糊指定,不用非要指定确定的值
添加如下routing-key 规则
#
:匹配一个或者多个词,例如lazy.#
可以匹配 lazy.xxx 或者 lazy.xxx.xxx*
:只能匹配一个词,例如lazy.*
只能匹配 lazy.xxx
6、参数模式
交换机类型为 headers 可以携带参数,根据参数进行过滤(设置条件判断,只能设置= 判断)
参考:
RabbitMQ超详细学习笔记(章节清晰+通俗易懂)_robitmq笔记-CSDN博客