【MQ】RabbitMQ、RocketMQ、kafka特性对比

本篇文章导入了写在本地的一个md文档,仅对rabbitmq、rocketmq、kafka做一些简单的对比,方便记忆。

RabbitMQ RocketMQ kafka
广播类型 fanout、direct、topic、headers、rpc Topic、Tag,以及 Topic
消息类型 普通消息、延时消息(延迟插件) 普通消息、延时消息、批量消息、过滤消息、事务消息 普通消息、批量消息
消息持久化(服务端不丢消息) 支持单条消息持久化、单个队列持久化,或不进行持久化 默认对消息进行持久化 replication.factor:broker端将消息保存几份;min.insync.replicas:控制的是消息至少要被写入到多少个副本才算是"已提交",设置成大于 1 可以提升消息持久性。在实际环境中千万不要使用默认值 1。推荐设置成 replication.factor = min.insync.replicas + 1。确保消息消费完成再提交
持久化原理 镜像队列 由CommitLog和ConsumerQueue配合完成,ConsumerQueue是逻辑队列,类似索引文件,指向物理存储地址,CommitLog是真正存储消息的地方。配合顺序写、零拷贝(MMAP),加速硬盘写入速度;配合IndexFile,加速读取消息速度。 使用分区副本冗余数据,写入时底层使用了零拷贝、顺序写,读取时使用了索引日志
实现语言 Erlang Java scala
单台吞吐量 几千到几万 几万到十几万级(有文章称最新版的rocket吞吐量已和kafka差不多) 数十万到一百多万
响应时间 微秒(us)级 毫秒(ms)级 毫秒(ms)级
mq优缺点 比较古老;但是持续更新;产品稳定;网上学习资料丰富;基于docker使用简单,学习和运维成本低;mq路由策略丰富灵活 mq功能完备,扩展性好,吞吐量也挺高。相应的由于历史较短,学习成本稍高,版本不稳定 只支持主要的mq功能,路由策略不丰富;但是吞吐量大,适用于大数据场景
原生依赖 groupId: com.rabbitmq artifactId: amqp-client groupId: org.apache.rocketmq artifactId: rocetmq-client groupId: org.apache.kafka artifactId: kafka-clients
原生依赖核心类 基于Connection、Channel进行通信 基于DefaulMQProducer生产消息,设置nameserver、启动producer后,发送Message对象;基于DefaultMQPushConsumer消费消息,设置nameserver、订阅topic,注册回调实现类,最后启动consumer,等待消费消息。 使用Properties去设置kafka的ip、端口、序列化、反序列化、消费者组等参数,properties对象作为参数构建KafkaConsumer、KafkaProducer对象。consumer对象订阅topic后通过poll拉取消息,producer对象通过send发送消息。
spring整合依赖 groupId: org.springframework.boot artifactId: spring-boot-starter-amqp groupId: org.apache.rocketmq artifactId: rocketmq-spring-boot-starter groupId: org.springframework.kafka artifactId: spring-kafka
spring整合依赖核心类 注册Queue、Binding、Exchange后,基于RabbitTemplate和@RabbitListener进行消息的发送和监听消费 使用RocketMQTemplate进行消息的发送,使用@RocketMQMessageListener进行消息的监听和消费。 基于KafkaTemplate和@KafkaListener进行消息的监听和监听
相关推荐
nightunderblackcat3 小时前
新手向:实现验证码程序
java·spring boot·spring·java-ee·kafka·maven·intellij-idea
a587693 小时前
消息队列(MQ)高级特性深度剖析:详解RabbitMQ与Kafka
java·分布式·面试·kafka·rabbitmq·linq
hmb↑3 小时前
Kafka 3.9.x 安装、鉴权、配置详解
分布式·kafka·linq
java干货3 小时前
还在重启应用改 Topic?Spring Boot 动态 Kafka 消费的“终极形态”
spring boot·kafka·linq
lifallen4 小时前
KafkaStreams 计算图节点设计:ProcessorNode、SourceNode、SinkNode
java·数据结构·算法·kafka·apache
一个帅气昵称啊7 小时前
C#,RabbitMQ从入门到精通,.NET8.0(路由/分布式/主题/消费重复问题 /延迟队列和死信队列/消息持久化 )/RabbitMQ集群模式
分布式·微服务·架构·rabbitmq·.net
长相易乐7 小时前
RabbitMQ 教程
分布式·rabbitmq
zhysunny7 小时前
消息三剑客华山论剑:Kafka vs RabbitMQ vs RocketMQ
kafka·rabbitmq·rocketmq
小鸡脚来咯12 小时前
rabbitmq如何保证消息不丢失
rabbitmq
在未来等你16 小时前
Kafka面试精讲 Day 13:故障检测与自动恢复
大数据·分布式·面试·kafka·消息队列