`
jilong-liang
  • 浏览: 480443 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

MQ产品比较-ActiveMQ-RocketMQ(转)

    博客分类:
  • Net
阅读更多

  几种MQ产品说明:

     ZeroMQ :  扩展性好,开发比较灵活,采用C语言实现,实际上他只是一个socket库的重新封装,如果我们做为消息队列使用,需要开发大量的代码

    RabbitMQ :结合erlang语言本身的并发优势,性能较好,但是不利于做二次开发和维护

    ActiveMQ: 历史悠久的开源项目,已经在很多产品中得到应用,实现了JMS1.1规范,可以和spring-jms轻松融合,实现了多种协议,不够轻巧(源代码比RocketMQ多).,支持持久化到数据库,对队列数较多的情况支持不好,不过我们的项目中并不会建很多的队列.

    Redis 做为一个基于内存的K-V数据库,其提供了消息订阅的服务,可以当作MQ来使用,目前应用案例较少,且不方便扩展

    RocketMQ: 阿里巴巴的MQ中间件,在其多个产品下使用,并能够撑住双十一的大流量,他并没有实现JMS规范,使用起来很简单。部署由一个 命名服务(nameserver)和一个代理(broker)组成,nameserver和broker以及producer都支持集群,队列的容量受机器硬盘的限制,队列满后可以支持持久化到硬盘(也可以自己适配代码,将其持久化到NOSQL数据库中),队列满后会影响吞吐量,可以采用主备来保证稳定性,支持回溯消费,可以在broker端进行消息过滤.

针对消息中间件的选择可以从以下方面进行考虑:(主要对比ActiveMQ和RocketMQ)
     优先级:我们的项目对此需求不是特别明显,RocketMQ需要新建一个特殊队列来接收优先级高的队列,无法实现从0-65535这种细粒度的控制,ActiveMQ可以精细控制
        顺序:我们的消息总线中的消息应该都是无状态的,所以对消息的处理顺序没有严格的要求,如果有特殊要求的话可以在业务层进行控制,activeMQ无法保证严格的顺序,RocketMQ可以保证严格的消费顺序
    持久化:都支持
   稳定性:RoketMQ在稳定性上可能更值得信赖,支持多种集群方案,毕竟已经撑过几个双十一
  消息过滤:ActiveMQ仅支持在客户端消费的时候进行判断是否是自己需要的消息,RocketMQ可以在broker端进行过滤,对于我们的消息总线,这里可以节省大量的网络传输是否会有消息重发造成的重复消费:RocketMQ可以保证,ActiveMQ无法保证
  回溯消费:即重新将某一个时刻之前的消息重新消费一遍,我们对于这种需求应该很少,RocketMQ支持,ActiveMQ不支持(RocketMQ的队列是持久化到硬盘的,定期进行清除
          事务:都支持
  定时消费:RocketMQ支持
   消息堆积:就是当缓存消息的内存满了之后的解决方案,一种是丢弃策略,这种不会影响吞吐量,还有一种就是将消息持久化到磁盘,这种会影响吞吐量,在评估影响程度上,RocketMQ的成绩稍微好一点
  客户端不在线:RocketMQ可以在客户端上线后继续将未消费的消息推送到客户端
      目前比较活跃的几种MQ中间件产品的对比如下:(仅统计开源的项目)

 
  ActiveMQ RabbitMQ RocketMq ZeroMQ
关注度  
成熟度   成熟 成熟 比较成熟 不成熟
所属社区/公司 Apache  Mozilla
Public
License
Alibaba      
社区活跃度  
文档  
特点   功能齐全,被大量开源项目使用 由于Erlang 语言的并发能力,性能很好    各个环节分布式扩展设计,主从 HA;支持上万个队列;多种消费模式;性能很好 低延时,高性能,最高 43万条消息每秒  
授权方式   开源 开源 开源 开源
开发语言   Java Erlang   Java   C
支持的协议   OpenWire、
STOMP、
REST、XMPP、
AMQP
AMQP   自己定义的一
套(社区提供
JMS--不成熟)
TCP、UDP
客户端支持语言   Java、C、
C++、
Python、
PHP、
Perl、.net 等  
Java、C、
C++、
Python、 PHP、Perl 等
Java  
C++(不成熟)  
 
python、 java、 php、.net 等
持久化   内存、文件、数据库 内存、文件 磁盘文件 在消息发送端保存
事务   支持 不支持 支持 不支持
集群   支持 支持 支持 不支持
负载均衡 支持 支持 支持 不支持
管理界面   一般 无社区有 web
console   实现
部署方式   独立、嵌入 独立 独立 独立
评价   优点:
   成熟的产品,已经在很多公司得到应用(非大规模场景)。有较多的文档。各种协议支持较好,有多重语言的成熟的客户端;
缺点:
根据其他用户反馈,会出莫名其妙的问题,切会丢失消息。 其重心放到activemq6.0 产品—apollo 上去了,目前社区不活跃,且对 5.x 维护较少;
Activemq 不适合用于上千个队列的应用场景
优点:   由于erlang语言的特性,mq 性能较好;管理界面较丰富,在互联网公司也有较大规模的应用;支持amqp系诶,有多中语言且支持 amqp 的客户端可用
 
缺点:
  erlang语言难度较
大。集群不支持动态扩展。
优点:
   模型简单,接口易用(JMS   的接口很多场合并不太实用)。在阿里大规模应用。目前支付宝中的余额宝等新兴产
品均使用rocketmq。集群规模大概在50 台左右,单日处理消息上百亿;性能非常好,可以大量堆
积消息在broker   中;支持多种消费,包括集群消费、广播消费等。开发度较活跃,版本更新很快。
 缺点:
  没有在 mq 核心中去实现JMS 等接口,
 
 

 

分享到:
评论

相关推荐

    研究各种Java技术(Springboot+Redis+Dubbo+Rocketmq)

    rocketmq-console rocketmq管理后台 whatsmars-rpc 常用rpc whatsmars-spring-boot springboot果然很方便 whatsmars-redis Cache Service & Redis Cluster whatsmars-motan weibo分布式RPC框架 demo server ...

    MQ各版本与jdk测试总结

    MQ各个版本与java JDK各个版本和IBM jar包各个版本的混合测试结果。以及对不同通道SSL加密套件的支持。

    消息中间件的一点经验 rabbitmq、activemq、rocketmq、kafka-mq-research.zip

    本篇文章将深入探讨四种常用的消息中间件:RabbitMQ、ActiveMQ、RocketMQ和Kafka,以及它们在实际应用中的特点和使用经验。 首先,RabbitMQ是一款基于AMQP(Advanced Message Queuing Protocol)协议的开源消息...

    研究各种Java技术(Springboot+Redis+Dubbo+Rocketmq) 京东技术 www.toutiao.im

    rocketmq-console rocketmq管理后台 whatsmars-rpc 常用rpc whatsmars-spring-boot springboot果然很方便 whatsmars-redis Cache Service & Redis Cluster whatsmars-motan weibo分布式RPC框架 demo server ...

    消息中间件kafka与activemq、rabbitmq、zeromq、rocketmq的比较

    #### Kafka与Activemq、Rabbitmq、ZeroMq、Rocketmq的比较 在现代分布式系统中,消息中间件(Message Queue, MQ)扮演着至关重要的角色,它们用于在分布式组件之间传输消息,帮助解决网络延迟、组件故障等问题,...

    MQ之ActiveMQ.mmap

    activemq思维导图2019 当前使用较多的消息中间件有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ等,本次以Apache的ActiveMQ作为切入点,分为基础/实战/面试上中下三大部分,将带着同学们从零基础入门到熟练...

    尚硅谷完整的关于rocketmq的学习视频整理笔记

    3. **常见的 MQ 产品** 除了 RocketMQ,还有其他知名的消息中间件,如 Apache Kafka、RabbitMQ、ActiveMQ 等,它们各自有独特的特性和适用场景。 4. **MQ 常用的协议** RocketMQ 使用的是基于 TCP 的自定义协议,...

    mq产品对比

    - 其他MQ产品如**ActiveMQ**和**RocketMQ**的管理界面较为一般,这可能会影响到用户体验。 **13. 部署方式** - 大部分MQ产品支持独立部署和嵌入式部署,这为用户提供了一定程度的灵活性。 #### 三、产品特性总结 ...

    SpringBoot+ActiveMq+MQTT实现消息的发送和接收

    在本文中,我们将深入探讨如何使用SpringBoot、ActiveMQ和MQTT来实现消息的发送与接收。这是一个典型的分布式系统中的消息通信场景,其中SpringBoot作为应用程序框架,ActiveMQ作为消息中间件,而MQTT(Message ...

    RocketMq快速入门文档

    ### 1.5 MQ产品比较 - **ActiveMQ**:基于Java,具有较高的成熟度,适合处理万级数据吞吐。 - **RabbitMQ**:采用Erlang实现,处理速度快,适用于万级数据吞吐。 - **RocketMQ**:Java编写,具备强大的分布式能力和...

    基于消息中间件的学习记录以及源码示例【JMS、AMQP、ActiveMQ、RocketMQ】.zip

    本文将深入探讨基于消息中间件的学习记录,包括Java消息服务(JMS)、先进消息队列协议(AMQP)以及两个流行的开源实现:ActiveMQ和RocketMQ。 首先,Java消息服务(JMS)是一种标准API,用于在Java应用程序之间...

    rabbitmq详细描述,帮你解决问题

    > 市面上比较火爆的几款MQ: > > ActiveMQ,RocketMQ,Kafka,RabbitMQ。 > > - 语言的支持:ActiveMQ,RocketMQ只支持Java语言,Kafka可以支持多门语言,RabbitMQ支持多种语言。 > - 效率方面:ActiveMQ,RocketMQ...

    十种MQ的技术选型详细对比.docx

    在本文档中,我们将对以下十种消息队列(Message Queue,简称MQ)系统进行详细的技术选型对比:ActiveMQ、RabbitMQ、RocketMQ、Joram、HornetQ、OpenMQ、MuleMQ、SonicMQ、ZeroMQ以及Kafka。这些系统在企业级应用中...

    消息队列activemq学习笔记

    1. **MQ产品类别**: - Kafka:高性能、高吞吐量的消息队列系统。 - RabbitMQ:基于AMQP协议的企业级消息队列服务。 - RocketMQ:阿里巴巴开源的一款分布式消息中间件。 - ActiveMQ:Apache的一个非常成熟的开源...

    RocketMQ精选面试题50道(含答案解析)

    以下是对RocketMQ面试题的详细解答,涵盖了多个MQ的选型、MQ的作用、RocketMQ的角色及特点、Topic与JMS Queue的区别以及消息删除策略。 1. 多个MQ如何选型? - RabbitMQ:基于Erlang开发,对消息堆积支持不足,...

    spring 实践学习案例

    #### 项目介绍 spring 实践学习案例,与其它组件结合如 mybatis、jpa、dubbo... - Spring 集成 消息队列,包括 kafka、rabbitmq、activemq、rocketmq、redismq - spring-auth - Spring 权限认证,包括 Apache Shiro

    13期RocketMQ讲义(1).pdf

    - 不同MQ产品在性能、稳定性、易用性等方面有各自特点,如RabbitMQ、Kafka、ActiveMQ等。 5. **快速入门** - **准备工作**:确保环境配置,理解基本概念。 - **安装RocketMQ**:包括下载、解压、配置环境变量等...

    rocketMQ介绍ppt

    RocketMQ与其他MQ的对比 - **ActiveMQ**:基于Java开发,具有较低的消息丢失概率,但社区活跃度相对较低,可能有丢消息的风险。 - **RabbitMQ**:使用Erlang语言,提供丰富的MQ功能和管理界面,但吞吐量较低,且...

    mq-demo 初始代码

    9. **常见MQ产品**:RabbitMQ、Kafka、ActiveMQ、RocketMQ等都是广泛使用的MQ产品,它们各有特点和适用场景。 10. **编程接口**:MQ通常提供API或者SDK,方便开发者在各种编程语言中集成和使用。 在mq-demo项目中...

Global site tag (gtag.js) - Google Analytics