消息队列
# 第9章 Spring Boot 与异步消息
在实际工作中,消息队列作为高并发系统的核心组件之一,能够帮助业务系统解耦、提升开发效率和增强系统稳定性。主要具有以下优势:
- 削峰填谷(主要解决瞬时写压力大于应用服务吞吐能力导致的消息丢失、系统奔溃等问题);
- 系统解耦(解决不同重要程度、不同服务级别系统之间的依赖,避免出现系统“一死全死”的局面);
- 提升性能(当存在一对多调用时,可以发一条消息给消息系统,让消息系统通知相关系统);
- 蓄流压测(线上有些链路不好做压力测试,可以通过堆积一定量消息后再放开来进行压力测试)。
目前主流的 MQ 有 ActiveMQ、RabbitMQ、RocketMQ 和 Kafka。
特性 | ActiveMQ | RabbitMQ | RocketMQ | kafka |
---|---|---|---|---|
开发语言 | java | erlang | java | scala |
单机吞吐量 | 万级 | 万级 | 10万级 | 10万级 |
时效性 | ms级 | us级 | ms级 | ms级以内 |
可用性 | 高(主从架构) | 高(主从架构) | 非常高(分布式架构) | 非常高(分布式架构) |
功能特性 | 成熟的产品,在很多公司得到应用,有较多的文档,各种协议支持较好 | 基于 erlang 开发,所以并发能力很强,性能极好,延时很低,管理界面较丰富 | 由阿里巴巴设计,历经多次天猫双十一海量消息考验。现在是 Apache 顶级项目。MQ 功能比较完备,扩展性佳 | 只支持主要的 MQ 功能,像一些消息查询,消息回溯等功能没有提供,毕竟是为大数据准备的,在大数据领域应用广泛 |
本章我们先介绍异步消息的相关概念,然后再依次介绍如何在 Spring Boot 中集成使用 ActiveMQ、RocketMQ、RabbitMQ 和 Kafka 这四种主流的消息中间件。
编辑 (opens new window)
上次更新: 2024/11/17, 16:29:23