RabbitMQ简介

什么是RabbitMQ

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。

RabbitMQ优点

erlang语言的高并发特性,使得它并发性较好,单机万级吞吐量。
功能完备,健壮,稳定,易用,跨平台。
支持主流语言,文档齐全。
开源的管理界面简单易用。
社区活跃度高,更新速度快。

四大核心概念

生产者

产生数据发送消息的程序

消费者

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

交换机

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

队列

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

交换机种类

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”时,要求消息头的所有值都需相等才可匹配成功。

RabbitMQ工作原理

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

相关名词解释

Broker

接收和分发消息的应用

Virtual Host

出于多租户和安全因素设计的,把AMQP的基本组件划分到一个虚拟的分组中虚。不同用户使用一个RabbitMQ Server时可划分出多个Vhost,每个用户在自己的vhost下进行操作

Connection

生产者或消费者与Broker间的TCP连接

Channel

在Connection内部建立的逻辑连接,Channel间完全隔离,支持多线程程序
Channel极大地减少了操作系统建立的TCP Connection的开销

队列模式

在这里插入图片描述
这里我们只介绍前五种

简单模式Hello World

一个生产者P发送消息到队列Q,一个消费者C接收

工作队列模式Work Queues

一个生产者,多个消费者,每个消费者获取到的消息唯一,多个消费者只有一个队列

发布/订阅模式 Publish/Subscribe

一个生产者发送的消息会被多个消费者获取。一个生产者、一个交换机、多个队列、多个消费者

路由模式Routing

生产者发送消息到交换机并且要指定路由key,消费者将队列绑定到交换机时需要指定路由key

通配符模式Topic

生产者P发送消息到交换机X,type=topic,交换机根据绑定队列的routing key的值进行通配符匹配;
符号#:匹配一个或者多个词 lazy.# 可以匹配 lazy.irs或者lazy.irs.cor
符号*:只能匹配一个词 lazy.* 可以匹配 lazy.irs或者lazy.cor

同系列文章

原理部分

MQ(消息队列)简介
RabbitMQ 四大核心概念及工作原理

操作部分

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值