ActiveMq和RabbitMq区别及其解析

常见消息队列:ActiveMQRabbitMQ、RocketMQ、Kafka的区别总结 常见消息队列:ActiveMQRabbitMQ、RocketMQ、Kafka的区别 阅读详情

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中。

ActiveMQRabbitMQ的比较 在点对点模型中,消息发送者将消息发送到一个特定的目标队列,然后消息接收者从该队列中接收消息。在发布-订阅模型中,消息发送者将消息发送到一个主题(Topic),然后所有订阅该主题的消息接收者都会收到该消息的副本。ActiveMQ是基于Java Message Service (JMS) 的消息代理,使用JMS API进行消息的发送接收。ActiveMQRabbitMQ都支持消息的持久化存储。ActiveMQ使用基于文件的存储方式,而RabbitMQ使用Erlang的Mnesia数据库来存储消息。 阅读详情

相关推荐

大厂面试真题1-ActiveMQ问题

1、什么是ActiveMQActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的安全的企业级消息通信。 2、activeMQ的作用以及原理? 实现系统间的通信,实现系统间解耦、异步、削峰等作用。 原理就是生产者生产消息, 把消息发送给activemqActivemq接收到消息, 然后查看有多少个消费者, 然后把消息转发给消费者, 此过程中生产者无需参与。 消费者接收到消息后做相应的处理生产者没有任何关系。 3、a...

金蝶ERP解说 3208

ActiveMQRabbitMQ区别

ActiveMQRabbitMQ都是流行的消息队列中间件,它们之间有以下几点区别: 编写语言:ActiveMQ是用Java编写的,而RabbitMQ则是用Erlang编写的。 协议支持:ActiveMQ支持OpenWire、Stomp、AMQP、MQTT等多种协议,而RabbitMQ主要支持AMQP协议。 性能:RabbitMQ在处理大量消息时的性能表现比ActiveMQ更好。 持久化:...

weixin_42577243的博客 1967

霍尔编码器 vs 磁编码器:如何为你的电机控制项目选择最佳传感器(附实战对比)

本文深入对比了霍尔编码器磁编码器在电机控制项目中的应用,从技术原理、性能参数、成本效益到实际场景选择提供了全面分析。通过实验室测试项目案例,帮助工程师根据精度、环境抗性预算选择最佳传感器方案,特别适合机器人、伺服驱动等领域的开发者参考。

weixin_28312391的博客 325

rabbitMQactiveMQ区别

rabbitMQactiveMQ区别 之前的项目中都用到了这两个消息队列,因此总结一下它们的不同之处,做一个笔记,下次需要的时候再行参考。 概念 ActiveMq,传统的消息队列,使用Java语言编写。基于JMS(Java Message Service),采用多线程并发,资源消耗比较大。支持P2P发布订阅两种模式,如果使用java语言开发项目,可以考虑使用activeMQRabbitMQ,基于AMQP协议实现,支持多种场景,社区活跃量大。高性能,高可用,支持海量数据。 为什么使用消息队列 六个字:

m0_67391121的博客 1940

深度解析:Kafka、ActiveMQRabbitMQ、RocketMQ的区别与比较

适用于大规模数据流处理,日志收集等场景。适用于JMS标准,中小规模系统,要求易用性灵活性的场景。适用于灵活的路由机制,对消息传递有较高要求的场景。适用于对事务性有序性要求较高的场景,如电商支付等。Kafka、ActiveMQRabbitMQ、RocketMQ都有各自的特点优势,选择合适的消息中间件取决于具体业务需求、性能要求团队技术栈。在做选择时,需要综合考虑架构设计、使用场景、性能表现等方面的因素,以确保消息队列系统能够满足业务的需求。

喔的嘛呀的博客 4524

关于 RabbitMQ,应该没有比这更详细的教程了

1. 常见消息中间件大 PK 说到消息中间件,估计大伙多多少少都能讲出来一些,ActiveMQRabbitMQ、RocketMQ、Kafka 等等各种以及 JMSAMQP 等各种协议,然而这些消息中间件各自都有什么特点,我们在开发中又该选择哪种呢?今天松哥就来小伙伴们梳理一下。 1.1 几种协议 先来说说消息中间件中常见的几个协议。 1.1.1 JMS 1.1.1.1 JMS 介绍 先来说说 JMSJMS 全称 Java Message Service,类似于 JDBC,不同于 JD

mxy2404830的博客 1112

Kafka、ActiveMQRabbitMQ、RocketMQ 有什么优缺点?

面试题 1.为什么使用消息队列? 2.消息队列有什么优点缺点? 3.Kafka、ActiveMQRabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景? 面试官心理分析 其实面试官主要是想看看: 第一,你知不知道你们系统里为什么要用消息队列这个东西? 不少候选人,说自己项目里用了 Redis、MQ,但是其实他并不知道自己为什么要用这个东西。其实说白了,就是为了用而用,或...

tanghao0550的专栏 229

RabbitMQ简单介绍+Windows环境安装

文章目录 文章目录文章目录1、RabbitMQ简介2、RabbitMQ与其他MQ有什么不同3、RabbitMQ环境安装3.1 安装erlang3.2 安装rabbitmq-server4. RabbitMQ管理平台介绍 1、RabbitMQ简介 RabbitMQ 是一个由 erlang 开发的 AMQP(Advanced Message Queue )的开源实现。AMQP 的出现其实也是应了广大人...

niceyoo的博客 411

RabbitMQ入门

文章目录一、rabbitMQ简介二、rabbitMQ安装及使用(两种)三、rabbitMQ快速入门四、交换机 一、rabbitMQ简介 各大主流中间件对比: ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线,并且它一个完全支持 J M S 规范的消息中间件。 其丰富的 API 、多种集群构建模式使得他成为业界老牌消息中间件,在中小型企业中应用广泛! MQ 衡量指标:服务性...

.... 312

大白话RabbitMQ

加油加油,发现网上有很多人话的rabbitMQ原理图都不太准确,这东西还是要多看官网文档。 所以看书才是硬道理吧。 这里就是介绍RabbitMQ 1、用自己的话说说rabbitMQ是一个什么东西,activeMQ有什么区别 额,mq就是一个消息队列,内部含有一个交换机的概念,这使得他把activeMQ更加灵活。 rabbitMQ工作过程: 首先我们客户端新建队列然后设置bi...

JZWen 428

手撕面试官系列(八):分布式通讯ActiveMQ+RabbitMQ+Kafka面试专题

ActiveMQ专题 (面试题+答案领取方式见主页) 什么是 ActiveMQ? ActiveMQ 服务器宕机怎么办? 丢消息怎么办? 持久化消息非常慢。 消息的不均匀消费。 死信队列。 ActiveMQ 中的消息重发时间间隔重发次数吗? RabbitMQ专题 RabbitMQ 中的 broker 是指什么?cluster 又是指什么? 什么是元数据?元数据分为哪些类型?包括哪些内容?...

程序人生| 310

ActiveMQ笔记

MQ MQ:消息中间件,常见的消息中间件有Kafka,RabbitMQ、Rocket MQ、ActiveMQ ActiveMQ api发送与接收 MQ的高可用性 MQ的集群容错配置 MQ的持久化 延时发送/定时投递 签收机制 Spring 整合 为什么引入MQ 1、解耦 2、削峰 3、异步 在设计系统时可以明确要达到的目标 1、要做到系统解耦,当新的模块接进来时,可以做到代码改动最小;【能够解耦】 2、设计流量缓冲池,可以让后端系统按照自身吞吐能力进行消费,不被冲垮【能够削

qq_42219004的博客 976

上mq的进程详解_大名鼎鼎的RPCMQ到底有啥区别联系

RPC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制。RPC框架 知名度较高的有Thrift(FB的)、dubbo(阿里的)。RPC的一般需要经历4个步骤:1、建立通信首先要解决通讯的问题:即A机器想要调用B机器,首先得建立起通信连接,主要是通过在客户端服务器之间建立TCP连接。2、服务寻址要解决寻址的问题,A服务器上如何连接到...

weixin_39908263的博客 198

ActiveMQ

概述 什么是MQ? MQ:Message Queue,消息队列。 MQ常见产品有ActiveMQRabbitMQ、RocketMQ、Kafka。 为什么会出现MQ?(MQ作用) 削峰填谷(主要):没有MQ时,大量请求到来时,系统只能拒绝请求保护自己,MQ可以在中间起到“水库”的作用,洪峰到来时,可以储存一部分水(请求),在河道(下游系统)水位降低后再排水。 解耦:MQ在消息发送方接收方之间起“媒婆”的作用,避免了发送方接收方的直接交流,防止尴尬。接收方不在线时,MQ可存储消息,等待接收方的上线。

Coufran的博客 246

阿里Java面试题剖析:为什么使用消息队列?消息队列有什么优点缺点?

面试题 为什么使用消息队列?消息队列有什么优点缺点?Kafka、ActiveMQRabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景? 面试官心理分析其实面试官主要是想看看: 第一,你知不知道你们系统里为什么要用消息队列这个东西?不少候选人,说自己项目里用了 Redis、MQ,但是其实他并不知道自己为什么要用这个东西。其实说白了,就是为了用而用,或者是别人设计的架构,他从头到尾都...

weixin_33767813的博客 211

activemq笔记1

简介 1、JMS: Java message service,服务于MOM系统(是利用高效可靠的消息传递机 制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成),常见的mom系统有:ActiveMQ、RocketMQ、RabbitMQ 2、主要功能: 1)实现同步转异步,提高处理效率 2)实现分流 3、名词解释 Destination Producer Consumer Message...

cccp_2009的博客 275

必备新版RabbitMQ教程-高性能消息队列RabbitMQ课程介绍-小滴课堂-2

第二章 大话MQ消息中间件+JMS+AMQP核心知识 第1集 什么是MQ消息中间件应用场景 简介:介绍什么是MQ消息中间件应用场景 什么是MQ消息中间件 全称MessageQueue,主要是用于程序程序直接通信,异步+解耦 使用场景: 解耦:订单系统-》物流系统 异步:用户注册-》发送邮件,初始化信息 削峰:秒杀、日志处理 核心应用 跨平台 、多语言 分布式事务、最终一致性 RPC调用上下游对接,数据源变动->通知下属 第2集 JMS消息服务常见核心概念介绍 ..

XDCLASS21的博客 228
上一篇: java中级程序员面试可能遇到的问题
下一篇: spring boot @ResponseBody转换JSON 时 Date 时间相差8小时出现的问题及其解决方法
CLG_csdn
博客等级 码龄10年 8粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值