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

【消息队列】几个mq组件的对比: redis stream/rabbitmq/rocketmq/kafka

1. 消息队列

几个组件:

  • Redis Stream:适用于对性能要求高、可靠性要求不高的场景
  • Rocket MQ:可靠性高,性能优秀,但官方对 go 不太友好,sdk 缺少很多功能支持
  • Rabbit MQ:性能适中,使用较复杂,路由、绑定等操作增加了学习成本
  • Kafka:适用于高吞吐量场景,配置灵活但复杂

可靠性:RocketMQ > Kafka > RabbitMQ > Redis Stream

性能:Kafka > Redis Stream > RocketMQ > RabbitMQ

水平扩展:Kafka > RocketMQ > RabbitMQ > Redis Stream

使用复杂度:Redis Stream < RabbitMQ < RocketMQ < Kafka

特性对比

生产者:

特性

Redis Stream

Rocket MQ

Rabbit MQ

Kafka

自动创建 topic

支持

不支持,可开启rocketmq配置但官方不建议

不支持,需声明交换机

支持,需开启kafka配置

topic 类型

多种,一般使用 FIFO 顺序消息类型

多种,一般使用 fanout 发布订阅模式

指定分区

不支持

支持

不支持

支持

持久化

支持

支持

支持

支持

消息清理策略

生产消息时可配置 MaxLen 队列可容纳的最大长度(默认永久保留)

通过配置文件配置消息保留最长时间(默认未消费的消息保留3天)

初始化队列时可配置x-message-ttl 消息保留最长时间(默认未消费消息永久保留)

通过配置文件配置消息保留最长时间(默认未消费的消息默认保留7天)

消费者:

特性

Redis Stream

Rocket MQ

Rabbit MQ

Kafka

自动创建消费者组

支持

不支持,可开启rocketmq配置但官方不建议

不支持,需声明队列并绑定交换机

支持,需开启kafka配置

单次拉取消息的大小限制

可配置最大拉取个数

可配置maxMessageNum 最大拉取个数

可通过 Qos 配置最大拉取个数 

可配置拉取的最大消息大小(字节)

单次拉取消息的方式

可配置阻塞拉取/主动拉取

主动拉取

阻塞拉取

阻塞拉取

消费的起始位置(新建立订阅关系时)

可灵活指定起始offset

从最新开始消费

从最新开始消费

从最新开始消费

消费的起始位置(已存在订阅关系时)

可灵活指定起始offset

从上次offset开始消费

从上次offset开始消费

从上次offset开始消费

自动 ACK

不支持

不支持

支持

支持

ACK 机制

支持

支持

支持

支持

NACK 机制

不支持

不支持 

支持,消息会被重新分配

不支持

消费超时(超过时间未ACK/NACK)

消息一直处于Pending状态

超时消息会被重新分配,可配置超时时间 invisibleDuration

消息一直处于Pending状态

消息会等待rebalance后被重新分配

2. 延时队列

几个组件:

Redis

Rocket MQ

Rabbit MQ

Kafka

延时队列支持

不支持,但可基于 ZSET 实现

支持

支持

不支持

安装依赖

需安装延时队列插件

-

topic 类型

DELAY 消息类型

交换机类型 x-delayed-message

-

适用场景

可靠性要求不高、不希望引入复杂中间件

高可靠性和性能要求、数据量大

需要可靠的延时队列、消息量适中

-

可靠性:RocketMQ > RabbitMQ > Redis

性能:Redis > RocketMQ > RabbitMQ

延迟精度:Redis > RabbitMQ > RocketMQ

相关文章:

  • 【Python网络编程基础】
  • 六、小白学JAVA-类和对象
  • 【漏洞修复】Android 10 系统源码中的 glibc、curl、openssl、cups、zlib 更新到最新版本
  • ubuntu 22.04 一键安装 lxd
  • 【git拉取冲突解决】Please move or remove them before you merge. Aborting
  • RTMP推流+EasyDSS云服务+边缘AI分析的无人机监控系统设计
  • 【C++游戏引擎开发】《线性代数》(1):环境配置与基础矩阵类设计
  • PHP安装HTML转图片的扩展GD库的使用
  • 江西核威环保科技:打造世界前沿的固液分离设备高新企业
  • 【C++】httplib:轻量级的 HTTP 服务器和客户端
  • 神奇的FlexBox弹性布局
  • R语言——循环
  • vue 自定义 tabs 控件,可自动左右滑动使得选中项居中显示
  • VulnHub-FALL通关攻略
  • CSS3学习教程,从入门到精通,CSS3 弹性盒子(Flexbox)布局全面指南(20)
  • linux ACL权限控制之用户权限控制程序设计
  • HO与OH差异之Navigation三
  • 【leetcode刷题日记】lc.53-最大子数组和
  • 【华三】华三模拟器HCL防火墙、AC和交换机的Web登入
  • 蓝桥杯真题_小蓝和小桥的讨论
  • 电子商务网站规划原则/线上平台推广方式
  • 没有做robots对网站有影响/游戏代理加盟
  • 网站图片分辨率尺寸/软文是什么
  • 河北网站优化/搜外seo
  • 新能源网站建设哪家好/网站友情链接
  • dedecms导购网站模板/微信营销案例