主流MQ对比和选型

2024-06-20 22:04
文章标签 主流 对比 选型 mq

本文主要是介绍主流MQ对比和选型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 在以下几个我们比较关心的维度进行对比

ActiveMQ

RabbitMQ 

RocketMQkafka
官网https://activemq.apache.org/https://www.rabbitmq.com/https://rocketmq.apache.org/https://kafka.apache.org/
githubhttps://github.com/apache/activemqhttps://github.com/rabbitmqhttps://github.com/apache/rocketmqhttps://github.com/apache/kafka
开发语言(二次开发参考)JavaErlangJavaScala
SDK语言支持(技术选型和二次开发参考)Java、C、C++、C#、Ruby、Perl、Python、PHP等Java、C#、Erlang、.NetJava、C++、C#、GoScala
协议支持OpenWire、Stomp、AMQP、MQTT、JMSAMQP、STOMP、MQTT、

RabbitMQ Streams

TCP、JMS、 OpenMessagingTCP
是否支持事务

支持


在 ActiveMQ 中,事务消息通常与会话(Session)对象一起使用。您可以创建一个事务性会话(Transaction Session),然后在事务中发送或接收消息。

支持


在 RabbitMQ 中,事务消息通常与通道(Channel)对象一起使用。您可以在通道上开启一个事务,然后在事务中发送或接收消息。

支持


发送半消息(Half Message)->本地事务执行->确认事务消息

Kafka在0.11.0.0版本开始支持事务消息


使用initTransactions()、beginTransaction()、sendOffsetToTransaction()和commitTransaction()来完成事务消息发送和消费的

是否支持批量消息不支持不支持支持,具有同步模式,避免消息丢失支持,使用异步生产者
消息可靠性有较低的概率丢失数据经过参数优化配置,消息可以做到0丢失经过参数优化配置,消息可以做到0丢失
单机吞吐量万级万级10万级10万级
高可用性和故障转移支持,取决于存储,如果使用 levelDB,则需要 ZooKeeper 服务器支持,集群方式通过镜像队列,将队列和它的消息存储复制到集群中的多个节点支持主从模式,无需其他套件支持,需要 ZooKeeper 服务器
管理台一般无,有社区版本web
社区活跃度
持久化方式内存、文件、数据库内存、文件,支持数据堆积,但数据堆积会影响生产速率磁盘文件磁盘文件,只要磁盘容量足够,可以做到无限消息堆积
适用场景

非常成熟,功能强大

、性能一般;主要是基于解耦和异步来用的,较少在大规模吞吐的场景中使用

中小型公司,基础架构研发能力较弱,采用RabbitMQ是不错的选择,但是Erlang语言环境二次开发困难性能较好,部署简单;有较大吞吐量需求,同时可能会有大量的topic,基础架构研发实力较强的大公司,完全可以采用RocketMQ性能较好,超高的吞吐量;非常适合在大数据领域中数据收集以及日志采集中;单机topic不宜过多超过64个队列/分区性能下降

这篇关于主流MQ对比和选型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079376

相关文章

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

Java常用注解扩展对比举例详解

《Java常用注解扩展对比举例详解》:本文主要介绍Java常用注解扩展对比的相关资料,提供了丰富的代码示例,并总结了最佳实践建议,帮助开发者更好地理解和应用这些注解,需要的朋友可以参考下... 目录一、@Controller 与 @RestController 对比二、使用 @Data 与 不使用 @Dat

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑

Golang中拼接字符串的6种方式性能对比

《Golang中拼接字符串的6种方式性能对比》golang的string类型是不可修改的,对于拼接字符串来说,本质上还是创建一个新的对象将数据放进去,主要有6种拼接方式,下面小编就来为大家详细讲讲吧... 目录拼接方式介绍性能对比测试代码测试结果源码分析golang的string类型是不可修改的,对于拼接字

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

java如何分布式锁实现和选型

《java如何分布式锁实现和选型》文章介绍了分布式锁的重要性以及在分布式系统中常见的问题和需求,它详细阐述了如何使用分布式锁来确保数据的一致性和系统的高可用性,文章还提供了基于数据库、Redis和Zo... 目录引言:分布式锁的重要性与分布式系统中的常见问题和需求分布式锁的重要性分布式系统中常见的问题和需求

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入