一、Rabbit的介绍与安装

MQ概述

MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。

传统的分布式系统有两种通信方式:

  1. 以HTTP为代表的REST,操作简单但是缺点很明显,就是没有长连接。
  2. 使用RPC通信,缺点是操作一般是同步的,而且各个模块之间的耦合度比较高。

消息队列也可以作为一种第三方工具介入分布式系统之间的通信。

MQ的优势和劣势

MQ的优势主要有三种:

  1. 应用解耦:使用 MQ 使得应用间解耦,提升容错性和可维护性。
  2. 异步提速:可以提升用户体验和系统吞吐量(单位时间内处理请求的数目)。
  3. 削峰填谷:提高系统稳定性。比如系统的请求量突然暴增,我们可以使用MQ来接收暴增的消息,然后一部分一部分的发送给系统,降低系统的压力。

MQ的劣势主要也有三种:
4. 系统可用性降低:系统引入的外部依赖越多,系统稳定性越差。一旦 MQ 宕机,就会对业务造成影响。
5. 系统复杂度提高:MQ 的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过 MQ 进行异步调用。如何保证消息没有被重复消费?怎么处理消息丢失情况?那么保证消息传递的顺序性?
6. 一致性问题:A 系统处理完业务,通过 MQ 给B、C、D三个系统发消息数据,如果 B 系统、C 系统处理成功,D 系统处理失败。如何保证消息数据处理的一致性?

RabbitMQ介绍

RabbitMQ是消息队列的一种,采用Erlang语言开发,下面是Rabbit的基础架构图:

在这里插入图片描述

RabbitMQ相关概念介绍

Broker:接收和分发消息的应用,RabbitMQ Server就是 Message Broker。

Connection:连接,应用服务与Server的连接。

Channel:信道,客户端可建立多个Channel,每个Channel代表一个会话任务。

Message:消息,由MessagePropertiesbody构成,MessageProperties可对消息的优先级、过期时间等参数进行设置,其中参数correlation_id一般作为消息主键。

Exchange:交换机,用于转发消息,消息将根据routeKey被交换机转发给对应的绑定队列。

Queue:队列,消息最终被送到这里等待消费者取走,参数中的Auto-delete意为当前队列的最后一个消息被取出后是否自动删除。

Binding:绑定exchange和queue之间的虚拟连接,二者通过routingkey进行绑定。

Routingkey:路由规则,交换机可以用它来确定消息被路由到哪里。

Virtual host:类似于网络中的 namespace 概念,用于进行逻辑隔离,一个虚拟主机中可以有多个Exchange和Queue,同一个虚拟主机中不能有名称一样的Exchange和Queue。

RabbitMQ的安装

RabbitMQ最简单的一种安装方式就是将它安装在Docker中:

首先创建一个目录用于与容器中的rabbitmq配置文件形成映射:

mkdir /opt/module/rabbitmq/data -p

接着在docker中运行rabbitmq镜像:

# 5672是rabbitmq 默认TCP监听端口,到时候程序连接的也是这个端口
# 15672是rabbitmq提供的ui管理界面的端口
# 25672是rabbitmq集群之间通信的端口
# 如果docker跑在云服务器上,记得在安全组中开放5672和15672端口
docker run -d --hostname rabbit-svr --name rabbit -p 5672:5672 -p 15672:15672 -p 25672:25672 -v /opt/module/rabbitmq/data:/var/lib/rabbitmq rabbitmq:management

然后就可以在浏览器中访问rabbitmq的ui控制界面了,默认账号和密码都是guest

在这里插入图片描述
我们可以在控制台中创建相应的exchange、queue等等操作:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_49723651/article/details/127705345
今日推荐