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

   同步请求:当客户端向服务器发送一条请求的时候,此时服务器由于网络,或者处理一些比较大的数据的时候,可能有延迟,客户端 会处于一直等待的状态。只有等待服务器返回处理结果,或者请求超时,客户端才能继续执行

因此可以看出同步请求一些场景上面使用有些弊端:客户与服务器对象的生命周期紧密耦合,客户进程和服务对象进程都都必须正常运行;如果由于服务对象崩溃或者网络故障导致用户的请求不可达,客户会受到异常

在实际项目中有项目 A 它产生了 一系列的数据,需要将该数据存放到数据库,但是如果由A 项目 直接 存放到数据库,可能导致A项目执行变慢,所以想将A 项目产生的数据,交由 B 项目  然后由B 项目提交到数据库,B 提交数据库的时候,不管B 执行的时间或者成功失败,不影响A 的运行

实现这种情况,可以使用消息中间件。

什么是消息中间件:

消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。例如:A项目将数据发送给消息服务器,消息服务器将消息存放到队列之中,在合适的时候,消息服务器将消息发送给B 项目

这种模式下,发送和接收是异步的,发送者无需等待; 二者的生命周期未必相同: 发送消息的时候接收者不一定运行,接收消息的时候发送者也不一定运行;

什么是JMS

既然学习消息中间件,用的又是java,所以有必要知道JMS 是什么:JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。可以理解成:JMS是java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输

JMS可以看成一种技术规范,接口

JMS支持两种消息模型:

点对点消息模型:

消息队列:存放消息(可以看成是一个地址)

生产者:产生消息的一端

消费者:接受消息的一端

生产者将消息发送到队列,消费者从队列中获取消息消费

点对点的特点:

1.生产者生产的消息只能被一个消费者消费,消费成功以后,则将该消息从队列中清除

2.生产者和消费者在时间上面没有什么关联,生产者生产消息的时候,消费者 可以不再,消费者消费消息的时候,不需要关注生产者是否存在

3.接收者在成功接收消息之后需向队列应答成功

发布订阅消息模型:

主题

发布者

订阅者

发布者将消息发布到主题中,订阅者订阅主题(可以有多个订阅者)

发布订阅特点:

1.每个消息可以有多个消费者

2.发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息,而且为了消费消息,订阅者必须保持运行的状态。为了缓和这样严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。

如何理解 点对点 和点对消费时候的时间关联性:

点对点消息模型:生产者 生产消息存放到队列以后,如果消费者者此时 没有开启,运行。则消息不会被消费,会保存到队列之中,消费者 开启运行以后,则会从队列中拉取消息进行消费,正常情况,这条消息是保证会被消费者消费。

发对订阅:发布者发布消息的时候,订阅者 订阅了主题,还必须保证在运行,如果没有开启运行,则不会消费到这条消息,即使开启运行以后,也没法在消费该消息了。

如何选择JMS 哪种消息模型 进行传输消息:

如果你希望发送的每个消息都应该被成功处理的话,那么你需要点对点模式。

如果你希望发送的消息可以不被做任何处理、或者被一个消息者处理、或者可以被多个消费者处理的话,那么可以采用发布/订阅模型

在JMS中,消息的产生和消息是异步的。对于消费来说,JMS的消息者可以通过两种方式来消费消息。 
 同步消费:
订阅者或接收者调用receive方法来接收消息,receive方法在能够接收到消息之前(或超时之前)将一直阻塞 
异步 消费:
订阅者或接收者可以注册为一个消息监听器。当消息到达之后,系统自动调用监听器的onMessage方法。

消息中间件使用场景:

用户注册账号 服务器将数据存入数据库,然后在给用户发送短信或者邮件

设想 可以使用多线程技术:在创建一个线程来负责发送注册邮件,但是 如果发送失败 则没有后续的补偿机制。

此时可以考虑使用 消息中间件

从这样来看,使用消息中间件 可以降低响应的时间。

所以 学习 消息中间件是当前需要掌握的一种技能,消息中间件有很多产品 例如:RabbitMQ,Redis,ActiveMQ,Kafka/Jafka,学习一两种 傍身,讲述ActiveMQ的使用

转载于:https://www.cnblogs.com/920913cheng/p/10594323.html

ActiveMQ(为什么要使用消息中间件,JMS传输模型)相关推荐

  1. Java消息中间件--JMS规范

    Java消息中间件–JMS规范

  2. MODTRAN辐射传输模型使用笔记

    目录 MODTRAN辐射传输模型使用笔记 CARD1主要控制参数设置: CARD2主要控制参数设置: CARD3主要控制参数设置: CARD4主要控制参数设置: MODTRAN辐射传输模型使用笔记 第 ...

  3. Fluent UDF 获取组分传输模型中的摩尔分数或分压力

    很多朋友在开发Fluent模型中需要用UDF获取组分传输模型中的某气体组分的摩尔分数(或体积分数)或者分压力,但是UDF自带的只有获取质量分数的宏C_YI(c,t),需要自己写额外的代码去转换,有一定 ...

  4. 【ActiveMQ】一头扎进 JMS 之 ActiveMQ 视频教程

    <一头扎进 JMS 之 ActiveMQ 视频教程> 第一章 JMS 及 ActiveMQ 简介 第一节:JMS 规范简介 第二节:ActiveMQ 简介 第三节:ActiveMQ 开发包 ...

  5. modtran matlab,大气辐射传输模型(6S,MODTRAN)

    相对辐射校正和绝对辐射校正 基于物理模型的绝对辐射校是利用一系列参数(例如,卫星过境时的地物反射率,大气的能见度,太阳天顶角和卫星传感器的标定参数等)将遥感图像进行校正的方法.仪器引起的误差畸变一般在 ...

  6. 浅谈经典大气辐射传输模型

    5S模型 1986年由法国里尔科技大学大气光学实验室Tanre D.等人研发了5S模型,5S模型不仅可以用来模拟太阳辐射传输过程,还可以计算辐亮度.该模型假设大气吸收和散射作用可以耦合. 6S模型 6 ...

  7. 6S大气传输模型修改源码添加、自定义CASI传感器光谱响应

    6S大气传输模型编译以及修改源码添加.自定义CASI传感器光谱响应 在利用6S模型进行CASI影像数据的大气纠正时,发现6S模型中没有对应的光谱响应函数,又不想自己整个输进去,就查资料对源码进行了修改 ...

  8. 6S大气传输模型修改源码添加、自定义卫星光谱响应(以HJ-1B CCD为例)

    6S大气传输模型修改源码添加.自定义卫星光谱响应(以HJ-1B CCD为例) 最近要做国产卫星的大气校正,打算用6s模型模拟气溶胶的查找表,但是发现6s模型中没有国产卫星的相应光谱响应函数,只能在输入 ...

  9. py6s 光谱响应函数_Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持...

    下面开始添加国产卫星光谱响应的支持: 以下主要参考文章"6S大气传输模型修改源码添加.自定义卫星光谱响应(以HJ-1B CCD为例)"网址:http://blog.csdn.net ...

最新文章

  1. wp 删除独立存储空间文件(多级非空文件夹删除)
  2. intellij 快捷键
  3. netbeans代码提示_Java代码现代化的七个NetBeans提示
  4. 甘肃政法学院计算机科学与技术试题,甘肃政法学院计算机科学与技术专业课程教学大纲.doc...
  5. fetch 不是xhr_春招|前端2019应届春招:不是被大厂选,而是选大厂(字节跳动,美团,网易)...
  6. 谷歌这波操作,预警了什么信号??
  7. spring中文参考手册-核心技术_ioc
  8. Oracle : 使用JDBC连接ORACLE的三种URL格式
  9. pyqt5 python2.7_python2.7 安装pyqt5
  10. zabbix--从入门到精通之zabbix历史数据
  11. LuaForUnity8:uLua简介
  12. 金盾播放器android安卓,金盾跨平台视频加密系统
  13. 寻宝,大冒险!CSP202206-2
  14. java计算同比和环比
  15. 网课答案公众号搭建过程详解
  16. html怎么做彩虹渐变,PS彩虹怎么做?|渐变工具制作彩虹方法教程
  17. 为BIG网站建立历史记录页面
  18. 怎么把html文档转换成wps,怎么把wps文档转换成word文档
  19. 如何在Android上访问iCloud服务
  20. Python|函数——自定义函数

热门文章

  1. vector容器与find算法
  2. php常用的十个代码片段,转载
  3. 分布式对象存储系统在openstack中的应用研究--Ceph(一)
  4. [RHEL5企业级Linux服务攻略]--第2季 Samba服务全攻略答疑贴
  5. 详解布隆过滤器的原理、使用场景和注意事项
  6. Spring IOC和MVC基础知识
  7. 计算机组成和网络考试题,计算机组成原理试题及答案
  8. oracle expdp 多线程,Oracle expdp 过滤和并行
  9. 二叉查找树Java实现代码
  10. (转载)Android手机开发总结