目录
一、介绍
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。能够处理大量的并发消息,适用于高吞吐量的应用场景。它支持多种消息协议和安全机制,提供丰富的监控和管理工具,方便运维人员实时监控系统状态和性能指标。RabbitMQ广泛应用于分布式系统、集成系统、子系统之间的对接,以及高并发场景下的流量削峰填谷和数据解耦等任务。
RabbitMQ支持下列多种编程语言:
二、RabbitMQ的主要特性及应用场景
2.1. 主要特性
2.2. 应用场景
RabbitMQ的安装和使用相对简单,支持多种部署方式,包括单机和集群模式,适合从小型应用到大型企业的各种规模的应用场景。
2.3. RabbitMQ的整体架构及核心概念
virtual-host(虚拟主机):起到数据隔离的作用
publisher:消息发送者
consumer:消息的消费者
queue(队列):用来存储消息直到消费者处理。
exchange(交换机):负责路由消息,用来接收生产者发送的消息,并且按照一定的规则将消息路由到消息队列。
绑定(Binding):一个规则,用于告诉交换器消息应该被如何路由到队列。
信道(Channel):建立在连接之上的虚拟连接,RabbitMQ操作都是在信道中进行。
连接(Connection):RabbitMQ客户端和代理服务器之间的TCP连接。
2.4. MQ的比较与选择
在选择消息队列(MQ)时,需要考虑的核心因素包括系统的吞吐量、可靠性、可用性、扩展性以及与现有技术的兼容性。 根据这些因素,以下几种消息队列系统在性能和适用场景上有各自的优势和劣势,ActiveMQ由于它的性能可靠性等各方面都比较差,在实际项目中我们通常是不会使用:
选择合适的消息队列系统时,应根据具体需求评估各个系统的特性,选择最适合项目需求的系统。例如,如果项目需要高吞吐量和容错性,Kafka可能是一个好的选择;而如果需要与现有生态系统高度集成,对消息的可靠性要求比较高,RocketMQ或RabbitMQ可能更合适。