第二章 初识RabbitMQ

目录

一、介绍

二、RabbitMQ的主要特性及应用场景

[2.1. 主要特性](#2.1. 主要特性)

[2.2. 应用场景](#2.2. 应用场景)

[2.3. RabbitMQ的整体架构及核心概念](#2.3. RabbitMQ的整体架构及核心概念)

[2.4. MQ的比较与选择](#2.4. MQ的比较与选择)


RabbitMQ官网地址:
https://www.rabbitmq.com/docs

一、介绍

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。能够处理大量的并发消息,适用于高吞吐量的应用场景。它支持多种消息协议和安全机制,提供丰富的监控和管理工具,方便运维人员实时监控系统状态和性能指标。RabbitMQ广泛应用于分布式系统、集成系统、子系统之间的对接,以及高并发场景下的流量削峰填谷和数据解耦等任务。‌

RabbitMQ支持下列多种编程语言

Python

Java

Ruby

PHP

C#

JavaScript

Go

Elixir

Objective-C

Swift

二、RabbitMQ的主要特性及应用场景

2.1. 主要特性

可靠性‌:确保消息不会丢失,即使是在网络分区或节点故障的情况下。

灵活的路由‌:支持复杂的消息路由,允许消息根据内容路由到不同的队列。

多种协议支持‌:基于AMQP协议,与其他消息中间件兼容。

高可用性和扩展性‌:支持集群和分布式部署,能够处理高并发和大规模消息处理。

丰富的管理工具‌:提供Web管理界面,方便监控和管理消息队列的状态。

2.2. 应用场景

**包括但不限于:**‌

高并发处理‌:在电商平台的秒杀活动中,通过队列缓冲请求,减少服务器压力。

分布式系统集成‌:在微服务架构中,实现服务之间的解耦和异步通信。

任务调度‌:将任务分发到不同的处理节点,提高系统的整体效率。

RabbitMQ的安装和使用相对简单,支持多种部署方式,包括单机和集群模式,适合从小型应用到大型企业的各种规模的应用场景。

2.3. RabbitMQ的整体架构及核心概念

virtual-host(虚拟主机):起到数据隔离的作用

publisher:消息发送者

consumer:消息的消费者

queue(队列):用来存储消息直到消费者处理。

exchange(交换机):负责路由消息,用来接收生产者发送的消息,并且按照一定的规则将消息路由到消息队列。

绑定(Binding):一个规则,用于告诉交换器消息应该被如何路由到队列。

信道(Channel):建立在连接之上的虚拟连接,RabbitMQ操作都是在信道中进行。

连接(Connection):RabbitMQ客户端和代理服务器之间的TCP连接。

2.4. MQ的比较与选择

在选择消息队列(MQ)时,需要考虑的核心因素包括系统的吞吐量、可靠性、可用性、扩展性以及与现有技术的兼容性。‌ 根据这些因素,以下几种消息队列系统在性能和适用场景上有各自的优势和劣势,ActiveMQ由于它的性能可靠性等各方面都比较差,在实际项目中我们通常是不会使用:

1‌. RabbitMQ‌:

‌特点‌:RabbitMQ是一个轻量级的消息队列系统,部署和使用都非常简单。

‌适用场景‌:适合对性能要求不是特别高,但需要易用性和灵活性的场景。

‌缺点‌:在大量消息堆积时,性能会急剧下降;使用小众语言Erlang开发,扩展和二次开发维护成本较高。

2‌. RocketMQ‌:

‌特点‌:由阿里开发,侧重于消息的顺序投递,具有高吞吐量和可靠性。

‌适用场景‌:适合处理高吞吐量的在线业务场景,如交易系统中的订单处理。

‌缺点‌:与周边生态系统的集成和兼容程度略逊于其他系统。

3‌. Kafka‌:

‌特点‌:Kafka是一个成熟的消息队列产品,支持高可靠性和稳定性。

‌适用场景‌:适合处理大量数据,适用于需要高吞吐量和容错性的场景。

‌缺点‌:单机超过64个队列/分区时,负载会明显增加,响应时间延长;适用于批量处理,同步收发消息的响应时延较高。

‌4. AMQP协议‌:

‌特点‌:AMQP是一种应用层的协议,用于消息队列的开放标准协议。

‌适用场景‌:适用于需要高度标准化的消息传递系统,支持多种消息队列产品。

‌优点‌:提供了生产者、消费者、交换机、队列等标准概念,便于系统间的通信和集成。

选择合适的消息队列系统时,应根据具体需求评估各个系统的特性,选择最适合项目需求的系统。例如,如果项目需要高吞吐量和容错性,Kafka可能是一个好的选择;而如果需要与现有生态系统高度集成,对消息的可靠性要求比较高,RocketMQ或RabbitMQ可能更合适‌。

相关推荐
Yvemil72 分钟前
运用MinIO技术服务器实现文件上传——在Linux系统上安装和启动(一)
linux·运维·服务器
wacpguo12 分钟前
Ubuntu20.04,编译安装BCC
linux
一步步走16 分钟前
Ubuntu下的CUDA环境的安装与配置
linux·c++·ubuntu
starcat200218 分钟前
Ubuntu24.04编译安装LinuxZen6.11.2
linux
战术摸鱼大师21 分钟前
Ubuntu终端配置
linux·运维·ubuntu
好记忆不如烂笔头abc23 分钟前
Ubuntu 18.04安装storcli查看阵列信息
linux·运维·服务器
短鼻子小象24 分钟前
【通过WSL2安装Ubuntu24.04系统及图形化界面】
linux·ubuntu·图形化界面
青山师28 分钟前
ubuntu 开放 8080 端口快捷命令
linux·运维·服务器·ubuntu·虚拟机
无水先生1 小时前
【GT240X】【06】Linux文本编辑软件vim
linux·vim
fasewer1 小时前
软件包与服务搭建
linux·windows