精华内容
下载资源
问答
  • activemq和rabbitmq的区别
    2019-11-17 15:50:26

    1.ActiveMq,传统的消息队列,使用Java语言编写。基于JMS(Java Message Service),采用多线程并发,资源消耗比较大。支持P2P和发布订阅两种模式。
    2.RabbitMQ,基于AMQP协议实现,支持多种场景,社区活跃量大。高性能,高可用,支持海量数据。

    两者区别在于JMS和AMQP(此图取自别处),

     JMS提供了两种消息模型,peer-2-peer(点对点)以及publish-subscribe(发布订阅)模型。当采用点对点模型时,消息将发送到一个队列,该队列的消息只能被一个消费者消费。而采用发布订阅模型时,消息可以被多个消费者消费。在发布订阅模型中,生产者和消费者完全独立,不需要感知对方的存在。

    在AMQP中,消息路由(messagerouting)和JMS存在一些差别,在AMQP中增加了Exchange和binding的角色。producer将消息发送给Exchange,binding决定Exchange的消息应该发送到那个queue,而consumer直接从queue中消费消息。queue和exchange的bind有consumer来决定。(https://blog.csdn.net/hpttlook/article/details/23391967)
     

    总结:1activemq基于jms,rabbitmq基于amqp

    2前者组成producer-queue-consumer,后者组成producer-exchange-binding-queue-consumenr

    3支持的模式不一样  前者支持点对点和发布订阅模式,后者简单模式,工作模式,发布订阅模式,路由模式,主题模式

    更多相关内容
  • ActiveMq和RabbitMq区别及其解析

    千次阅读 2019-05-09 11:00:43
    1.ActiveMq,传统的消息队列,使用Java语言编写。基于JMS(Java Message Service),采用多线程并发,资源消耗比较大。...两者区别在于JMSAMQP(此图取自别处), JMS提供了两种消息模型,peer-2-peer(点对点)以及...

    1.ActiveMq,传统的消息队列,使用Java语言编写。基于JMS(Java Message Service),采用多线程并发,资源消耗比较大。支持P2P和发布订阅两种模式。
    2.RabbitMQ,基于AMQP协议实现,支持多种场景,社区活跃量大。高性能,高可用,支持海量数据。

    两者区别在于JMS和AMQP(此图取自别处),

     JMS提供了两种消息模型,peer-2-peer(点对点)以及publish-subscribe(发布订阅)模型。当采用点对点模型时,消息将发送到一个队列,该队列的消息只能被一个消费者消费。而采用发布订阅模型时,消息可以被多个消费者消费。在发布订阅模型中,生产者和消费者完全独立,不需要感知对方的存在。

    在AMQP中,消息路由(messagerouting)和JMS存在一些差别,在AMQP中增加了Exchange和binding的角色。producer将消息发送给Exchange,binding决定Exchange的消息应该发送到那个queue,而consumer直接从queue中消费消息。queue和exchange的bind有consumer来决定。(https://blog.csdn.net/hpttlook/article/details/23391967)

    下图为Amq的消费情况 ,Amq本地搭建及其简单,Rmq还没有试过。

    P2P消费

    发送和消费代码相似,就是把createconsumer改为createProducer.

    发布模式

       publisher = (ActiveMQTopicPublisher) session.createPublisher(topic);
                publisher.setDeliveryMode(DeliveryMode.PERSISTENT)
     
    订阅模式
    subscriber = (ActiveMQTopicSubscriber) session.createDurableSubscriber(topic, "*****");
                subscriber.setMessageListener(this);

    下图为RMQ的消费情况

         RMQ和AMQ最大区别在于有 vhost 和exchange,routingkey这些区别。只有exchange 和routingkey相匹配,才会进行收发消息,不仅仅是队列名的匹配,

    在rabbitmq中,exchange有4个类型:direct,topic,fanout,header。

    Direct:将消息中的Routing key与该Exchange关联的所有Binding中的Routing key进行比较,如果相等,则发送到该Binding对应的Queue中。

    Topic:将消息中的Routing key与该Exchange关联的所有Binding中的Routing key进行对比,如果匹配上了,则发送到该Binding对应的Queue中,*(星号):可以(只能)匹配一个单词#(井号):可以匹配多个单词(或者零个)

    Fanout :直接将消息转发到所有binding的对应queue中,这种exchange在路由转发的时候,忽略Routing key

    Headers :将消息中的headers与该Exchange相关联的所有Binging中的参数进行匹配,如果匹配上了,则发送到该Binding对应的Queue中。

    展开全文
  • ActiveMQ和RabbitMQ区别

    万次阅读 热门讨论 2018-06-05 10:42:51
    ActiveMQ和RabbitMQ区别? 关于文章没多少内容,请进链接:https://blog.csdn.net/qq_30764991/article/details/80573352, https://blog.csdn.net/qq_30764991/article/details/80516961好多学习内容,请自行...

    ActiveMQ和RabbitMQ的区别?

     

    关于文章没多少内容,请进链接:https://blog.csdn.net/qq_30764991/article/details/80573352,

    https://blog.csdn.net/qq_30764991/article/details/80516961好多学习内容,请自行学习。关于赞赏码倒是挺大的,哈哈,这个你得感谢中国伟大的企业家教育家马云先生(JACK MA),这个是自愿的,你自己从支付宝那里赚取,你看或者不看它就在那里,且行且珍惜短暂的人生路。加油!every body!everyone!everystudent!

    1. ActiveMQ/ApolloMQ
      优点:老牌的消息队列,使用Java语言编写。对JMS支持最好,采用多线程并发,资源消耗比较大。如果你的主语言是Java,可以重点考虑。
      缺点:由于历史悠久,历史包袱较多,版本更新很缓慢。集群模式需要依赖Zookeeper实现。最新架构的产品被命名为Apollo,号称下一代ActiveMQ,目前案例较少。
    
    2. RocketMQ/Kafka
    
      优点:专为海量消息传递打造,主张使用拉模式,天然的集群、HA、负载均衡支持。话说还是那句话,适合不适合看你有没有那么大的量。
      缺点:所谓鱼和熊掌不可兼得,放弃了一些消息中间件的灵活性,使用的场景较窄,需关注你的业务模式是否契合,否则山寨变相使用很别扭。除此之外,RocketMQ没有.NET下的客户端可用。RocketMQ身出名门,但使用者不多,生态较小,毕竟消息量能达到这种体量的公司不多,你也可以直接去购买阿里云的消息服务。Kafka生态完善,其代码是用Scala语言写成,可靠性比RocketMQ低一些。
    
      3. RabbitMQ
      优点:生态丰富,使用者众,有很多人在前面踩坑。AMQP协议的领导实现,支持多种场景。淘宝的MySQL集群内部有使用它进行通讯,OpenStack开源云平台的通信组件,最先在金融行业得到运用。
      缺点:Erlang代码你Hold得住不? 虽然Erlang是天然集群化的,但RabbitMQ在高可用方面做起来还不是特别得心应手,别相信广告。
      优点:老牌的消息队列,使用Java语言编写。对JMS支持最好,采用多线程并发,资源消耗比较大。如果你的主语言是Java,可以重点考虑。
      缺点:由于历史悠久,历史包袱较多,版本更新很缓慢。集群模式需要依赖Zookeeper实现。最新架构的产品被命名为Apollo,号称下一代ActiveMQ,目前案例较少。
    *ActiveMQ.
    
    Java世界的中坚力量。它有很长的历史,而且被广泛的使用。它还是跨平台的,给那些非微软平台的产品提供了一个天然的集成接入点。然而,它只有跑过了MSMQ才有可能被考虑。
    
    简介:
    
    ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
    
    拓展:
    
    JMS:(http://baike.baidu.com/subview/157103/12665866.htm)
    
    JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
    
    特性列表:
    
    ⒈ 多种语言和协议编写客户端。语言: Java,C,C++,C#,Ruby,Perl,Python,PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
    
    ⒉ 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)
    
    ⒊ 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性
    
    ⒋ 通过了常见J2EE服务器(如 Geronimo,JBoss 4,GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上
    
    ⒌ 支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
    
    ⒍ 支持通过JDBC和journal提供高速的消息持久化
    
    ⒎ 从设计上保证了高性能的集群,客户端-服务器,点对点
    
    ⒏ 支持Ajax
    
    ⒐ 支持与Axis的整合
    
    ⒑ 可以很容易得调用内嵌JMS provider,进行测试
    
    2. RocketMQ/Kafka
    
      优点:专为海量消息传递打造,主张使用拉模式,天然的集群、HA、负载均衡支持。话说还是那句话,适合不适合看你有没有那么大的量。
      缺点:所谓鱼和熊掌不可兼得,放弃了一些消息中间件的灵活性,使用的场景较窄,需关注你的业务模式是否契合,否则山寨变相使用很别扭。除此之外,RocketMQ没有.NET下的客户端可用。RocketMQ身出名门,但使用者不多,生态较小,毕竟消息量能达到这种体量的公司不多,你也可以直接去购买阿里云的消息服务。Kafka生态完善,其代码是用Scala语言写成,可靠性比RocketMQ低一些。
    
      3. RabbitMQ
      优点:生态丰富,使用者众,有很多人在前面踩坑。AMQP协议的领导实现,支持多种场景。淘宝的MySQL集群内部有使用它进行通讯,OpenStack开源云平台的通信组件,最先在金融行业得到运用。
      缺点:Erlang代码你Hold得住不? 虽然Erlang是天然集群化的,但RabbitMQ在高可用方面做起来还不是特别得心应手,别相信广告。
    
    展开全文
  • activeMQrabbitMQ学习对比心得

    千次阅读 2021-11-11 10:43:22
    一、activemq activemq支持主从复制、集群。但是集群功能看起来很弱,只有failover功能,即我连一个失败了,可以切换到其他的broker上。这一点貌似不太科学。假设有三个broker,其中一个上面没有consumer,但另外两...

    一、activemq

    activemq工作模型比较简单。只有两种模式 queue、topics 。

    queue就多对一,producer往queue里发送消息,消费者从queue里取,消费一条,就从queue里移除一条。如果一个消费者消费速度不够快怎么办呢?在activemq里,提供messageGroup的概念,一个queue可以有多个消费者,但是他们得标记自己是一个messageGroup里的。这样,消息会轮训发送给每个消费者,也就是说消费者不会重复消费同一条消息。但是每条消息只被消费一次。

    topics就是广播。producer往broker发消息,每个消息包含topic。消费者订阅感兴趣的topic,所有订阅了topic的消费者都会收到消息。当然订阅分持久不持久。持久订阅,当消费者断开一会,再连上来,仍然会把没收到的消费发过来。不持久的订阅,断开这段时间的消息就收不到了。
    activemq可以直接注入JmsMessagingTemplate模版,使用convertAndSend 方法进行传送数据,其中第一个参数是消息发送的目的地,即队列名,第二个参数是具体的消息内容。

    二、rabbitmq

    rabbitmq用erlang写的。在windows上使用也非常方便,在这点上完爆了activemq,不过使用起来比较麻烦,需要创建通道、声明队列、声明交换机等。rabbitmq给我感觉更像oracle,功能非常强大。安装完,也有实例的概念,可以像建数据库一样,建实例,建用户划权限。同时监控系统也很好用。这些都是好处,同时也是累赘,整体上来说rabbitmq比activemq复杂太多了。
    简单队列:
    在这里插入图片描述
    work模式:
    在这里插入图片描述
    订阅模式:
    x是交换器,Q是队列
    路由模式:
    x是交换器,Q是队列
    主题模式(通配符模式):
    x是交换器,Q是队列
    rabbitmq同样也支持主从复制和集群。但是rabbitmq的集群非常多样化,而且需要至少一台机器做为磁盘节点,可以持久化queue和exchange的信息,其他的可以为内存节点。普通集群中,只有exchange,queue这些定义是分布在所有机器上的,而queue中的数据不是冗余的,比如有三台rabbitmq组成了集群,他们共享同样的exchange,queue,但是一条消息数据落到了第一台机器上,另外两台实际上没有这条数据的。 对于整个集群的使用,这样其实没有任何问题。 但出于高可用的角度来想,还是需要完完全全的分布式集群的,万一中间有数据这台机器挂了? rabbitmq对此也有支持,把队列数据也冗余存到三台机器上,称之为镜像队列,但性能要比普通集群低,毕竟一条消息被复制到其他机器上是耗时的事情。
    rabbitmq以plugin的形式支持mqtt,和spring整合也非常简单。

    展开全文
  • ActiveMQ ActiveMQ的优点是遵循JMS规范。缺点是可能丢失了信息,不维护了。ActiveMQ支持“AMQP、OPENWIRE、stomp、xmpp协议”。 适用于中小型企业,不适合千个队列以上的应用。 RabbitMQ RabbitMQ的优点是继承erlang...
  • RabbitMQRabbitMQ 是使用 Erlang 编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP, 也正因如此,它非常重量级,更适合于企业级的开发。同时实现了 Broker 构架,这意味着消息在发送给...
  • 两个重要的规范JMSAMQP2.什么是消息中间件3.优点2 JMS之ActiveMQ1.准备工作1.ActiveMQ下载2.启动3.访问网址2.springboot中使用ActiveMQ1.创建springboot项目2.在application.yml中配置相关参数3.在springboot的...
  • 最常用的就是Activemq和Rabbitmq这两种消息队列 ,下面我们分别简单的来学习一下这两种消息中间件 Activemq:是用java语言开发的消息中间件,安装比较简单,只需要下载一个rar文件解压运行activemq.bat即可,然后在...
  • Apache ActiveMQ是Apache软件基金...RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。
  • activemqrabbitmq、kafka原理比较

    万次阅读 2019-08-01 13:30:59
    一、activemq 虽然是java写的消息队列,但是提供Java, C, C++, C#, Ruby, Perl, Python, PHP各种客户端,所以语言上是没什么问题的。配置使用,基本上是java xml这一套。同时对jms、spring之类的支持很友好。 ...
  • Activemq和Rabbitmq端口冲突

    千次阅读 2021-06-12 20:06:54
    今天调试一个项目用到了activeMq,于是下载安装后启动失败 C:\WINDOWS\system32>cd D:\apache-activemq-5.16.2\bin C:\WINDOWS\system32>d: D:\apache-activemq-5.16.2\bin>activemq start Java ...
  • 一个mq生产者消费者源码,支持activemq和rabbitmq,支持rabbitmq 的MQTT协议AMQP协议; 编译环境 vs2008
  • kafka,activemqrabbitmq,rocketmq都有什么区别
  • 消息中间件的区别以及如何抉择消息中间件
  • Kafka、ActiveMQRabbitMQ、RocketMQ对比

    千次阅读 2021-11-08 17:14:54
    1、ActiveMQ:JMS规范,支持事务,支持XA协议,没有生产大规模支持场景,官方维护越来越少 2、RobbitMQ:erlang语言开发,性能好,高并发,支持多语言,社群,文档方面有优势,erlang语言不利于java程序员二次开发,...
  • 一:kafka、activemqrabbitmq、rocketmq优点缺点 1.单机吞吐量 2.Topic数量对吞吐量的影响 3.时效性 4.可用性 5.消息可靠性 6.功能支持 二:优劣势总结 ActiveMQRabbitMQ: RocketMQ: Kafka: 一...
  • ActiveMQ/ApolloMQ  优点:老牌的消息队列,使用Java语言编写。对JMS支持最好,采用多线程并发,资源消耗比较大。如果你的主语言是Java,可以重点考虑。  缺点:由于历史悠久,历史包袱较多,版本更新很缓慢。集群...
  • ActiveMQ和RabbitMQ区别?

    千次阅读 2018-12-04 16:57:48
    activemq 需要借助zookeeper搭建集群,rabbitmq 已经内部实现集群,不需要手动搭建集群。 rabbitmq相对于activemq在高并发的情况下性能更好。
  • 很多年前, 新浪微博的研发负责人...ActiveMQ和RabbitMQ算是老一辈的消息队列。在2012年左右还是广泛的在各个公司里使用。 但在高堆积异构这两个场景表现不尽如人意。 ▍ 高堆积场景 当时我还服务于一家互联网彩票公司
  • 对于异步消息组件在实际的应用之中会有两类: · JMS:代表作就是 ...2.实际开发之中 90%环境下常用的三个消息组件:ActiveMQRabbitMQ、Kafka 的全部定义都在此处,以后你们所从事的开发 里面一定会有消息...
  • ActiveMQ和 RabbitMq 以及Kafka在之前的项目中都有陆续使用过,当然对于三者没有进行过具体的对比,以下摘抄了一些网上关于这三者的对比情况,我自己看过之后感觉还 是可以的,比较清晰的反馈了这三个的具体情况已经...
  • rabbitMQactiveMQ区别

    2022-04-22 08:49:01
    rabbitMQactiveMQ区别 之前的项目中都用到了这两个消息队列,因此总结一下它们的不同之处,做一个笔记,下次需要的时候再行参考。 概念 ActiveMq,传统的消息队列,使用Java语言编写。基于JMS(Java Message ...
  • ActiveMQRabbitMQ、RocketMQ、Kafka四种消息中间件的使用,无非就是从原理,高可用,重复消息,顺序读写,数据丢失几个方面开展
  • 本打算用一套代码,实现可同时对接activeMQ和rabbitMQ,最后只找到一个jar可支持,但只能发到队列,不满足业务需求,在此做个记录。 import com.rabbitmq.client.Channel; import ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,592
精华内容 10,636
热门标签
关键字:

activemq和rabbitmq的区别