RocketMQ概述

RocketMQ概述

一、什么是消息队列?

消息队列(Message Queue),从广义上讲是一种消息队列服务中间件,提供一套完整的信息生产、传递、消费的软件系统。从字面意思看,由2部分组成,我们先讲Queue,再讲Message。

队列(Queue):是一种先进先出(First in First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头,如下:

 

消息(Message):就是上面a1,a2,a3……an 的消息块。

把数据放到消息队列叫做生产者
从消息队列里边取数据叫做消费者

二、消息队列到底解决了什么问题?

  • 程序解耦

传统模式:每次有新系统接入,都需要调整代码。

消息队列模式:将消息写入消息队列服务,需要消息的系统自己从消息队列中订阅,从而系统A不需要做任何修改。

  • 异步处理

传统模式:一些非必要的业务逻辑以同步的方式运行,太耗费时间。

消息队列模式: 将消息写入消息队列,异步方式运行。

  • 削峰填谷

传统模式模式:并发量大的时候,所有的请求直接怼到数据库,造成数据库连接异常。

消息队列模式:系统A慢慢的按照数据库能处理的并发量,从消息队列中慢慢拉取消息。在生产中,这个短暂的高峰期积压是允许的。

  • 数据的最终一致性(非事务消息,跨行转账)

三、常见消息队列

时下流行的消息队列组件
消息队列名字 Apache ActiveMQ Apache Kafka Apache RocketMQ Apache Pulsar
 产生时间 2007 2012 2017   2018
 贡献公司 Apache  LinkedIn  Kafka,ActiveMQ  RocketMQ,Kafka
 特性

(1) 支持协议众多:AMQP,STOMP,MQTT,JMS

(2) 消息是持久化的JDBC

(1) 超高写入速率

(2) end-to-end 耗时毫秒级

(1) 万亿级消息支持

(2) 万级Topic数量支持

(3) end-to-end 耗时毫秒级

(1) 存储计算分离

(2) 支持SQL数据查询 

 管理后台 自带 独立部署  独立部署  无
 多语言客户端  支持   支持

Java

C++

Python

Go

C#

Java

C++

Python

Go

 数据流支持 不支持   支持  支持  支持
 消息丢失  理论上不会丢失  理论上不会丢失  理论上不会丢失  理论上不会丢失
 文档完备性  好  极好  极好  社区不断完善中
 商业公司实践  国内部分企业  LinkedIn  阿里巴巴  雅虎、腾讯、智联招聘
容错 无重试机制 无重试机制 支持重试,死信消息 支持重试,死信消息
顺序消息 支持 支持 支持 支持
定时消息 不支持 不支持 支持 支持
事务消息 不支持 支持 支持 支持
消息轨迹 不支持 不支持 支持 自己实现简单
消息查询 数据库中查询 不支持 支持 支持SQL
重放消息 不清楚 暂停重放 实时重放 支持
宕机 自动切换 自动选主 手动重启 自动切换

 

 
posted @   左扬  阅读(442)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
levels of contents
点击右上角即可分享
微信分享提示