当前位置: 首页 > article >正文

RabbitMQ介绍及安装(基于docker)

RabbitMQ介绍及安装

1. MQ介绍

MQ全称为Message Queue,即消息队列。从字面意思上看,它本质是个队列,FIFO(先入先出),只不过队列中存放的内容是message而已。它也是一种应用程序对应用程序的消息通信方式,允许分布式系统中的不同组件通过消息传递进行通信。具体来说,一端往队列不断发布信息,另一端从队列中读取消息,发布者不需要关心是谁读取了消息,读取消息者也不需要关心是谁发布了消息,双方各干各的,互不干扰。

在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,消息发送上游只需要依赖MQ,不用依赖其他服务。消息发送者和接收者不需要同时处于活跃状态,消息可以持久化存储在磁盘中,确保在系统崩溃或网络故障时消息不会丢失。同时,MQ也可以保证消息在某些场景下按顺序处理,确保系统处理流程的正确性。

1.1 同步调用

微服务A在一个业务中,依次调用微服务B C D,全部完成后才是一次完整的业务链。

同步调用的方式存在下列问题:

  • 拓展性差
  • 性能下降
  • 级联失败

在这里插入图片描述

1.2 异步调用

异步调用方式其实就是基于消息通知的方式,一般包含三个角色:

  • 消息发送者:投递消息的人,就是原来的调用方
  • 消息Broker:管理、暂存、转发消息,你可以把它理解成微信服务器
  • 消息接收者:接收和处理消息的人,就是原来的服务提供方

在这里插入图片描述

在异步调用中,发送者不再直接同步调用接收者的业务接口,而是发送一条消息投递给消息Broker。然后接收者根据自己的需求从消息Broker那里订阅消息。每当发送方发送消息后,接受者都能获取消息并处理。

这样,发送消息的人和接收消息的人就完全解耦了。

异步调用的优势包括:

  • 耦合度更低
  • 性能更好
  • 业务拓展性强
  • 故障隔离,避免级联失败

异步通信缺点:

  • 完全依赖于Broker的可靠性、安全性和性能
  • 架构复杂,后期维护和调试麻烦

1.3 技术选型

消息Broker,目前常见的实现方案就是消息队列(MessageQueue),简称为MQ.

目比较常见的MQ实现:

  • ActiveMQ
  • RabbitMQ
  • RocketMQ
  • Kafka

几种常见MQ的对比:

RabbitMQActiveMQRocketMQKafka
公司/社区RabbitApache阿里Apache
开发语言ErlangJavaJavaScala&Java
协议支持AMQP,XMPP,SMTP,STOMPOpenWire,STOMP,REST,XMPP,AMQP自定义协议自定义协议
可用性一般
单机吞吐量一般非常高
消息延迟微秒级毫秒级毫秒级毫秒以内
消息可靠性一般一般

追求可用性:Kafka、 RocketMQ 、RabbitMQ

追求可靠性:RabbitMQ、RocketMQ

追求吞吐能力:RocketMQ、Kafka

追求消息低延迟:RabbitMQ、Kafka

2. RabbitMQ

RabbitMQ是基于Erlang语言开发的开源消息通信中间件,官网地址:

https://www.rabbitmq.com/

2.1 RabbitMQ架构

在这里插入图片描述

其中包含几个概念:

  • publisher:生产者,也就是发送消息的一方
  • consumer:消费者,也就是消费消息的一方
  • queue:队列,存储消息。生产者投递的消息会暂存在消息队列中,等待消费者处理
  • exchange:交换机,负责消息路由。生产者发送的消息由交换机决定投递到哪个队列。
  • virtual host:虚拟主机,起到数据隔离的作用。每个虚拟主机相互独立,有各自的exchange、queue

2.2 安装

基于docker安装:

docker run \
 -e RABBITMQ_DEFAULT_USER=admin \
 -e RABBITMQ_DEFAULT_PASS=admin \
 -v mq-plugins:/plugins \
 --name mq \
 --hostname mq \
 -p 15672:15672 \
 -p 5672:5672 \
 --network ff-net\
 -d \
 rabbitmq:3.8-management
  • 15672:RabbitMQ提供的管理控制台的端口
  • 5672:RabbitMQ的消息发送处理接口

2.3 访问登录

安装完成,访问虚拟机地址加端口15672,即可访问RabbitMQ控制台,账号密码已在docker安装部署命令中设定。

Q提供的管理控制台的端口

  • 5672:RabbitMQ的消息发送处理接口

2.3 访问登录

安装完成,访问虚拟机地址加端口15672,即可访问RabbitMQ控制台,账号密码已在docker安装部署命令中设定。

在这里插入图片描述


http://www.kler.cn/a/500141.html

相关文章:

  • Linux 内核中的 netif_start_queue 函数:启动网络接口发送队列的关键
  • 现代 CPU 的高性能架构与并发安全问题
  • 高级软件工程-复习
  • 计算机网络之---子网划分与IP地址
  • 服务器多节点 Grafana、Prometheus 和 Node-Exporter Docker版本部署指南
  • Bash语言的正则表达式
  • 9.java中String,StringBuilder,StringBuffer 什么区别
  • MySQL教程之:与服务器的连接和断开连接
  • 图像处理 | 图像二值化
  • 财务自动化用Python还是RPA?各有什么优缺点
  • el-tab-pane 的label怎么显示很多数据
  • 【Leetcode-找到所有数组中消失的数字】利用标记出现数组中出现过的数字解决数组中消失的数字问题
  • 【开源免费】基于SpringBoot+Vue.JS共享汽车管理系统(JAVA毕业设计)
  • Cannot find -lgL
  • 【IEEE出版,连续4年EI收录,检索稳定 |南京航空航天大学主办,航空航天交叉研究院承办】第五届传感器与信息技术国际学术会议(ICSI 2025)
  • 如何从 Keycloak 的 keycloak-themes.jar 中提取原生主题并自定义设置
  • Chapter 4.6:Coding the GPT model
  • 【python进阶——用类实现数据组织】
  • LeetCode 热题 100 | 双指针
  • Git:Cherry-Pick 的使用场景及使用流程
  • 基于Java+SpringMvc+Vue技术的宠物分享平台
  • 省森林防火应急指挥系统
  • 2024 年 8 月公链行业研报:Layer 1、比特币 Layer 2 和以太坊 Layer 2 趋势分析
  • 构建高效的进程池:深入解析C++实现