RabbitMQ 四大核心概念及工作原理

四大核心概念

生产者

产生数据发送消息的程序

消费者

消费与接收含义相似,消费者类似于等待接收消息的程序

交换机

一方面它接收来自生产者的消息,另一方面它将收到的消息推送到队列中,RabbitMQ的交换机有四种不同的类型

队列

本质上是一个大的消息缓冲区,消息只能存储在队列中,多个生产者可以将消息发送到一个队列中,多个消费者也可以尝试从一个队列中取出消息。

RabbitMQ工作原理

在这里插入图片描述
生产者(Producer)通过信道(Channel)把消息发送给交换机(Exchange),当创建交换机时需要指定类型(四种类型:直接Direct,扇出Fanout ,主题Topic ,消息头Headers ); 交换机(Exchange)接收消息并且负责对消息进行路由,交换机根据消息的属性来把消息分发到不同的队列(Queue)上; 消息(Message)会一直留在队列里直到被消费者(Consumer)消费

交换机种类

Direct Exchange(直连交换机)

消息会传送给绑定键与消息的路由键完全匹配的那个队列。 我们用直连交换机取代了只会无脑广播的扇形交换机,并且具备了选择性接收消息的能力。

Fanout Exchange(扇形交换机)

类似于广播,只要队列与该类型的交换机绑定,所有发送到该交换机的信息都会被转发到所有与之绑定的队列,与routingKey无关。## Topic Exchange(主题交换机)

Topic Exchange(主题交换机)

应用范围最广的交换机类型,消息队列通过消息主题与交换机绑定。一个队列可以通过多个主题与交换机绑定,多个消息队列也可以通过相同消息主题和交换机绑定。并且可以通过通配符(*或者#)进行多个消息主题的适配。

消息主题的一般格式为xxx.xxx.xxx(x为英文字母,每个单词用英文句号隔开)。*通配符可以适配一个单词,#可以适配零个或者多个单词。

通配符适配如下:*.xxx.#。此主题可以适配xxx前面只有一个单词后面有零个或者多个单词的所有消息主题。

Headers Exchange(头交换机)

头交换机类似与主题交换机,但是却和主题交换机有着很大的不同。主题交换机使用路由键来进行消息的路由,而头交换机使用消息属性来进行消息的分发,通过判断消息头的值能否与指定的绑定相匹配来确立路由规则。
在头交换机里有一个特别的参数”x-match”,当”x-match”的值为“any”时,只需要消息头的任意一个值匹配成功即可,当”x-match”值为“all”时,要求消息头的所有值都需相等才可匹配成功。

同系列文章

原理部分

MQ(消息队列)简介
RabbitMQ简介

操作部分

Windows版Docker安装RabbitMq
Maven整合RabbitMQ实现生产消费消息
SpringBoot整合RabbitMQ实现生产消费消息
RabbitMQ延迟队列及实战
RabbitMQ发布确认-交换机确认
RabbitMQ-消息回报(队列确认)
RabbitMQ-备份交换机
RabbitMQ-优先级队列

猜你喜欢

转载自blog.csdn.net/m0_68681879/article/details/129558853