为什么需要使用消息中间件

在介绍消息中间件之前,我们先来看一个故事:

老王的睡前故事:

在很久很久以前,小明隔壁有个姓王的邻居,姑且就叫隔壁老王吧。隔壁老王有个大女儿,名叫王兰花秀丽,秀丽从小就爱听老王讲睡前故事,每晚在入睡前都要老王讲了睡前故事才能睡的得着。但某一天秀丽到了外地去上大学,老王为了能给秀丽讲故事,只能通过打电话的方式进行,如下:

但是有时候可能由于秀丽的手机信号不好或者没电等情况,导致老王只能不停的联系,直到电话打通为止。老王内心:我能怎么办,我也很绝望啊。虽然秀丽可能会比较晚才能听到故事,但是这个过程问题也不大。直到某一天,老王的二女儿王兰花独秀也到了外地去上学,独秀也爱听老王讲睡前故事。老王没办法,只能也给独秀打电话。但是这样就会导致独秀等电话的时间需要等很久,因为老王得先给秀丽讲完再给独秀讲。有时候遇到信号不好的情况就更麻烦了,这样的话天天都需要耗到很晚,老王也感觉到身体好像被掏空:

经历了几个晚上后,老王想着天天这样子不行啊,搞得身体一天不如一天。于是作为老程序员的老王冥思苦想,想到了一个类似于消息中间件的办法,那就是注册一个微信公众号。老王只需要把每天的睡前故事放到这个公众号里,让两个女儿来订阅这个公众号就行了。那么两个女儿不仅能够不用等待谁先听完故事,老王也不用天天熬夜了,而且大家都觉得这个公众号讲的故事很好,于是来听老王讲故事的人越来越多,从此老王走上人生巅峰,真是可带劲了:

借助了微信公总号来讲故事后,老王不需要再去关心有多少人要听故事,老王只需要把故事放到公众号里。想听故事的人只需要有网络有微信来订阅这个公众号即可,这样不仅读者能随时随地听故事,而老王也不需要被讲故事的事情而耗费太多的时间。这个故事就是诠释了消息中间件为我们解决的一些问题。


我们再来举个栗子,例如我们现在有一个登录系统。我们实现的是通过短信验证码进行登录,所以在用户登录时登录系统需要去调用短信服务发送短信验证码给用户。除了短信服务外,还有一个积分服务,用于加载用户的积分信息。用户登录时还需要记录日志,这里就需要调用一个日志服务。随着系统的发展,登录时需要调用的服务可能越来越多。那么就意味着,用户进行一个简简单单的登录操作,就需要等待各种服务调用完成后才能登录上去,让登录的时间变得越来越长,万一有哪一个服务卡住了那么用户的登录也会卡住,所以登录系统和相关服务的耦合就很高,导致用户仅是进行登录时就得花费很多与登录功能本身不相关的时间。这就是通过服务调用让其他系统感知事件发生:

消息中间件就是用于解除这种耦合的,当用户发送登录请求并通过验证后,消息中间件就可以马上通知用户登录成功,而给其他服务投递消息的工作就由消息中间件去完成,也就是会进行一个异步处理,而用户是无感知的,不会拖慢用户的登录时间。通过消息中间件解耦服务调用:

消息中间件带来的好处:

  • 解耦系统
  • 异步通知
  • 横向扩展
  • 安全可靠
  • 顺序保证
  • ...

最后最主要的是

  • 点赞(感谢)
  • ...
  • 转发(感谢)
  • ...
  • 关注(感谢)
  • ...

老的消息中间件投递失败的类型值_图文结合了解一下Java消息中间件的概述相关推荐

  1. 老的消息中间件投递失败的类型值_RabbitMQ消息中间件技术精讲11 高级篇四 confirm 确认消息...

    RabbitMQ消息中间件技术精讲11 高级篇四 confirm 确认消息 理解Confirm消息确认机制: 消息的确认,是指生产者投递消息后,如果broker收到消息,则会给生产者一个应答: 生产者 ...

  2. java 工具类命名_排名前16的Java工具类

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  3. java可用于开发两类程序_此内容适合初学者java基础知识 第一章

    (一)Java 可用来生成两类程序:应用程序(Application). 小应用程序( Applet ) . (二)Java 既是一种解释执行的语言,也是一种编译执行的语言 (三)Java技术体系 1 ...

  4. Java中由继承得到的类成为_【填空题】Java中由继承而得到的类成为________,被继承的类称为父类。...

    参考答案如下 填空题[论述题]撰写校园建筑参观的情况总结,主要内容是针对建筑的结构形式建筑的构造和材料,建筑物理环境等情况.也就是主要从技术角度去看去分析校园内建筑的情况.要求图文并茂,可以是照片手绘 ...

  5. Vue.JS项目输入框中使用v-model导致number类型值自动转换成string问题的解决方案

    老文章了,目前用el-input v-model.number就能解决 很简单的操作,不知道当初在做什么,下文请直接忽略- Vue.JS项目中v-model导致输入框中number类型值自动转换成st ...

  6. SAP S4HANA如何取到采购订单ITEM里的'条件'选项卡里的条件类型值?

    SAP S4HANA如何取到采购订单ITEM里的'条件'选项卡里的条件类型值? 最近在准备一个采购订单行项目的增强的function spec.其中有一段逻辑是取到采购订单行项目条件里某个指定的条件类 ...

  7. 关于oracle date类型值0000-0-0的分析

    目录 1简介... 1 2 准备... 1 2.1 环境说明... 1 3 安装... 2 4 配置... 2 5 使用... 2 5.1 验证实验... 2 5.2 问题分析... 3 6 延展.. ...

  8. 没有值的json字符串_Java中具有原始数据类型值的字符串连接

    没有值的json字符串 Given a string and some of the primitive data type values, we have to concatenate them w ...

  9. 验证guid()类型值的函数

    验证guid()类型值的函数 Function IsGUID(expression) '******************************************** '函数名:IsGUID ...

最新文章

  1. 无缝融合 ZStack与阿里云联手布局混合云市场
  2. 远程桌面mstsc情况下通过\\tsclient\盘符实现内容的拷贝
  3. 指纹识别市场前景广阔,2020年我国或破18亿美元
  4. Codeforces 919D - Substring
  5. Linux系统下GitLab服务的的搭建
  6. xtrabackup安装使用
  7. 基于 Kubernetes 实践弹性的 CI/CD 系统 1
  8. centos安装配置tftp服务器
  9. ubuntu下vlc-android编译
  10. Python_Tips[6] - is 和 == 的区别
  11. Python学习笔记之 函数基础,pass
  12. 【JAVA程序设计】(C00003)基于springboot+mybatis的在线购物商城系统
  13. Bartender 连接MySql数据库并对模板赋值打印标签二维码
  14. 微信小程序点击激活类
  15. java多文件代码在线运行网站
  16. 【报告分享】2021快手内容生态半年报-快手(附下载)
  17. 【win11】win10 资源管理器
  18. 奥特曼系列艾斯愿望服务器序号,泽塔奥特曼:泽塔的寓意是最后的勇士,蕴含了艾斯哥哥最大的愿望...
  19. Excel公式向导,不会函数也可以单条件求平均值
  20. python小乌龟编程_新手学python ——《小乌龟吃小鱼》小游戏 第二版

热门文章

  1. oracle 动态注册和静态注册
  2. Unicode、UTF-8、Big Endian、Little Endian、GBK、UCS-2
  3. Spring MVC 中的基于注解的 Controller
  4. PKU A Simple Problem with Integers 3468
  5. Colored Sticks--POJ 2513
  6. xpath in biztalk
  7. 新课推荐 | 用 Django 快速搭建 API 测试工具
  8. php warning: file_get_contents,Ecshop报警告:Warning: file_get_contents
  9. dr.com linux源码安装,Linux在不采用坑爹的Dr.com客户端下的连网方式(亲测可行 ,简单易行)...
  10. mysql size_mysql fetch size 相关问题