文章目录

  • MQ概述
  • RabbitMQ介绍
  • RabbitMQ的安装

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等等操作:

一、Rabbit的介绍与安装相关推荐

  1. 1、Rabbit MQ 介绍与安装

    本页目录 什么是MQ? MQ的优势 劣势 使用MQ的场景 常见的MQ产品 RabbitMQ的简介: RabbitMQ 基础架构图 RabbitMQ 基本概念 RabbitMQ 的7种工作模式 Rabb ...

  2. OpenStack——编排(Heat)服务介绍与安装

    文章目录 OpenStack--编排(Heat)服务介绍与安装 安装和配置(controller) 准备 (1)创建数据库 (2)加载admin user 的环境变量 (3)创建服务凭证 (4)创建H ...

  3. Scrapy-Splash的介绍、安装以及实例

    scrapy-splash的介绍   在前面的博客中,我们已经见识到了Scrapy的强大之处.但是,Scrapy也有其不足之处,即Scrapy没有JS engine, 因此它无法爬取JavaScrip ...

  4. Springlake-01 介绍功能安装

    Springlake-01 介绍&功能&安装 1. 简介与功能 1)Springlake 是一个企业内容平台SECP 2)是一个可配置的系统,80%内容可以配置 3)允许建立和配置垂直 ...

  5. Kafka系列一之架构介绍和安装

    Kafka架构介绍和安装 写在前面 还是那句话,当你学习一个新的东西之前,你总得知道这个东西是什么?这个东西可以用来做什么?然后你才会去学习它,使用它.简单来说,kafka既是一个消息队列,如今,它也 ...

  6. SharpWebMail介绍和安装(转)

    SharpWebMail介绍和安装 什么是:SharpWebMail SharpWebMail是一款C#开发的基于WEB应用程序的多语言的WEB邮件服务.它允许我们使用SMTP或IMAP服务来完成发送 ...

  7. Linux系统Vi/Vim编辑器的简单介绍、安装/卸载、常用命令

    Linux系统Vi/Vim编辑器的简单介绍.安装/卸载.常用命令 1.介绍 vi(Visual Interface)编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界 ...

  8. Storm介绍及安装部署

    本节内容: Apache Storm是什么 Apache Storm核心概念 Storm原理架构 Storm集群安装部署 启动storm ui.Nimbus和Supervisor 一.Apache S ...

  9. LNMP基础架构介绍与安装

    1.LNMP架构介绍 LNMP==Linux+Nginx+Mysql+PHP  nginx:省资源,省cpu,所以在高并发时能够处理更多的请求,高端能达到3万到5万的并发量.  nginx和LAMP不 ...

最新文章

  1. promise实现多个请求并行串行执行
  2. Element-ui学习笔记3--Form表单(二)
  3. python3.5升级_python升级 (2.6升级到3.5)
  4. Linux 用户进程内存空间详解
  5. 100c之31:哥德巴赫猜想
  6. User profile synchronization service starting issues 用户配置文件同步服务启动问题
  7. 报错:[Warning] lambda expressions only available with -std=c++11 or -std=gnu++11
  8. ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)...
  9. 【Python】Pandas高效加载JSON文件
  10. MySQL Bit Functions and Operators(二进制方法)
  11. Grafana展示DNS解析延时
  12. JAVA中的位运算符
  13. JavaScript 凭什么力压 Java、Python 横扫编程语言榜单?
  14. [Manifest]关于version
  15. 基于H5的移动端APP开发框架
  16. 计算机网络管理员四级查询入口,计算机网络管理员:国家职业资格四级
  17. Mac批量恢复废纸篓文件
  18. R语言如何做配对t检验?
  19. 计算机专业必须用英语口语要求,哪些专业需要英语口语考试
  20. Dumpling 导出表内并发优化丨TiDB 工具分享

热门文章

  1. 王者荣耀(王者农药)小程序版加符文模拟器我来了
  2. easyui-serchbox组件的使用
  3. AR行业报告:甩掉VR,5年内AR将迎来大爆发 | 报告
  4. linux解决make依赖关系,makefile 自动处理头文件的依赖关系
  5. H2.64和H2.65编码区别
  6. 查看服务器进程,判断是谁在使用用服务器或者路径
  7. office2007版本信息
  8. Kafka扩分区和分区副本重分配之后消费组会自动均衡吗?
  9. 企业应用大数据开源框架的意义何在?
  10. apache服务构建虚拟web主机