ActiveMQ-为什么需要消息中间件及优缺点

与远程调用机制以及REST接口类似,异步消息也是用于应用程序之间通信的。

RMI、Hessian、Burlap、HTTP invoker和Web服务在应用程序之间的通信机制是同步的,即客户端应用程序直接与远程服务相交互,并且一直等到远程过程完成后才继续执行。而消息是异步发送的,客户端不需要等待服务处理消息,甚至不需要等待消息投递完成。客户端发送消息,然后继续执行,这是因为客户端假定服务最终可以收到并处理这条消息。

优势:

  • 低耦合,不管是程序还是模块之间,使用消息中间件进行间接通信。
  • 消息的顺序性,消息队列可以保证消息的先进先出。
  • 消息可靠传输,持久化的存储使得消息只有在被消费之后才会删除。
  • 异步通信能力,相对于RPC来说,异步通信使得生产者和消费者得以充分执行自己的逻辑而无需等待。
  • 缓冲能力,消息中间件像是一个巨大的蓄水池,将高峰期大量的请求存储下来慢慢交给后台进行处理,对于秒杀业务来说尤为重要。

优点

异步通信。客户端无需等待服务端的响应,节省时间,提升客户端的效率。

面向消息与解耦。客户端不需要与特定的方法签名绑定,任何可以处理数据的队列或主题订阅者都可以处理由客户端发送的消息,而客户端不必了解远程服务的任何规范。

位置独立。由于客户端并不直接与服务端通信,而是把消息交由消息代理。因此,只要服务能够从队列或主题中获取消息即可,消息客户端根本不需要关注服务来自哪里。而且可以使用服务器集群监听同一个消息代理提升服务器负载。

缺点:

增加复杂度。毫无疑问,消息代理这个东西是多出来的,需要维护成本。

暂时的不一致性。异步消息方式可以确保最终的一致性,但是可能存在客户端把消息给了消息队列,而服务端暂时还没处理这个队列导致的暂时不一致性问题。

ActiveMQ-为什么需要消息中间件及优缺点相关推荐

  1. 速读“消息中间件”架构体系-ActiveMQ:入门+原理分析+优缺点!

    ActiveMQ 01 介绍 ActiveMQ 是完全基于 JMS 规范实现的一个消息中间件产品. 是 Apache 开源基金会研发的消息中间件.ActiveMQ主要应用在分布式系统架构中,帮助构建高 ...

  2. ActiveMQ RabbitMQ RokcetMQ消息中间件技术,三大消息中间件详细教程

    课程链接 课程目录 需要的小伙伴自行领取

  3. 给女朋友讲ActiveMQ是啥?

    1 ActiveMQ是啥 ActiveMQ 就是一个消息中间件,市面上现在有很多的消息中间件开源产品,比如,RocketMQ.RabbitMQ.Kafka等. 拿一个简单的比喻来说,消息中间件就是一个 ...

  4. JAVA消息中间件面试题

    前言 文章开始前,我们先了解一下什么是消息中间件? 什么是中间件? 非底层操作系统软件,非业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件统称为中间件. 什么是消息中间件? 是关注 ...

  5. 安排,ActiveMQ RabbitMQ RokcetMQ 消息队列中间件视频教程

    来源: 来自网络,如侵权请告知博主删除????. 仅学习使用,请勿用于其他- 最近有小伙伴管我要 mq相关的视频,那我就直接3个Q都给大家发了,既然要了,记得看哦〜 大家需要什么资源可以给我提,每周都 ...

  6. SpringBoot 整合实现ActiveMQ

    目录 一.ActiveMQ介绍 二.ActiveMQ安装.服务端开启 2.1 安装 2.2 服务端启动 三.SpringBoot 整合实现ActiveMQ 3.1添加依赖 3.2添加配置文件(yml文 ...

  7. sheng的学习笔记-activeMQ框架原理

    目录 搭建环境 如果需要修改访问端口的话 如果需要修改用户名和密码的话 重启 ActiveMQ 配置文件 activemq.xml 基础理论: 什么是 JMS JMS基本开发步骤: 点对点模型(Poi ...

  8. 消息队列的实现原理和ActiveMQ详解

    一.链式调用 在我们日常的项目开发过程中,一般各模块或者函数方法之间,都是采用链式调用的方式,为了完成一个整体功能,我们会将其拆分成多个函数(或者子模块),比如模块A调用模块B,模块B调用模块C,模块 ...

  9. 各大公司java面试整理对应问题博客整理

    各大公司java面试整理对应问题博客整理! 阿里 分库分表 数据库中间件 MyCAT是一个强大的数据库中间件,不仅仅可以用作读写分离,以及分表分库.容灾管理,而且可以用于多租户应用开发.云平台基础设施 ...

最新文章

  1. ASP.Net中自定义Http处理及应用之HttpHandler篇
  2. 实验二 网络嗅探与欺骗
  3. 新生代农民工的十八般武艺,你都了解吗
  4. linux 下的vi命令汇总
  5. SparkSQL报错:UnresolvedException: Invalid call to dataType on unresolved object, tree: 'bb
  6. jq使用教程04_高校版教程
  7. stretchblt 模糊_微软开源持续开发模糊测试工具OneFuzz
  8. 噪声的频谱分析的重要意义_噪声测试及频谱分析
  9. OFDM载波间隔_OFDM之频域
  10. 竞争情报(CI,competitive intelligence)都需要哪些因素
  11. flash player所有版本下载地址
  12. 超过2t硬盘分区_超过2T和3T及以上硬盘的MBR与GPT分区形式
  13. 为什么要读“无用”的古文
  14. mysql崩 数据同步_MySQL5.7 大大降低了半同步复制-数据丢失的风险
  15. [跨境工具通]2020年Shopify卖家可以免费使用的10款Dropshipping工具推荐
  16. 模拟抽奖过程的C语言程序设计,C++抽奖程序实现方法
  17. python web 常用库
  18. day06_tomacat
  19. 解三元一次方程组的计算机,解三元一次方程组
  20. 基于C#结合SQL设计学生成绩系统系统

热门文章

  1. 学历史能学计算机吗,历史专业学计算机好吗
  2. 隐藏a标签seo_SEO网站优化,新手SEO常犯的五个错误!
  3. linux NAND驱动之三:6410平台上的NAND驱动加载
  4. php中json字符串转json对象数组对象,php – 将JSON字符串解析为数组,而不是对象
  5. c语言程序设计19,C语言程序设计19.pdf
  6. Android 窗口Dialog 代码以及使用
  7. share——Alpha版(内部测试版)发布
  8. mysql InnoDb存储引擎索引
  9. document.write()
  10. 【C++】为什么INT_MIN不是直接写成-2147483648(转载)