1.  消息中间件将信息以消息的形式,从一个应用程序传送到另一个或多个应用程序。

  主要特点:

      (1) 消息异步接收: 消息发送者不需要等待消息接收者的响应

      (2) 消息可靠接收: 确保消息在中间件可靠保存,只有接收方收到后才能删除消息,多个消息可以组成原子事务。有时,也要求消息不能重复传输。

2.  为什么会出现消息中间件?

各个系统同步发送接收数据,相互等待,造成系统瓶颈。

JMS使用场景:
  第一想到的就是异步处理。其实,还可以用JMS来解决很多复杂的问题, 例如分布、并发、系统解耦、负载均衡、热部署、触发器等, 这些复杂的问题因为引入了JMS而变的更加简单.

  (1) 同步通信:  客户发出调用后,必须等待服务对象完成处理并返回结果后才能够继续执行。

      如果数据交互过程, 允许异步操作时, 可以考虑使用JMS

      比如: 用JMS来异步发送邮件. 数据的生产者交付数据后,即可立即返回而无需等待数据的执行结果,对于数据消费者可以在合适的时机接收数据并执行. 这一点可能是我们使用JMS的主要原因.

  (2) JMS解决分布问题的场景, 解决分布有两种类型:

      第一种: 消息是集中的, 但消息的处理是分布的. 

          例如: 系统可能会被分为前台与后台,这两个系统是部署在不同的网段里的。那么怎么把前台发生的业务通知后台系统呢? 前台系统在处理完业务请求后的同时发送一个消息到queue中,后台系统的消息接收者接收到消息后立即处理。这里消息的处理也可能有一定的延期,但这主要取决于消息服务器的硬件能力,网络带宽,消息接收者的处理速度等。

       第二种: 消息是分布的, 消息中间件提供了消息路由的功能。 

           即: 消息发送到一个消息服务器后, 这个消息服务器根据定义的规则再把这条消息路由转发到其它的消息服务器。例如, 可能在北京的一个数据中心部署了数据采集系统, 采集到数据后以消息的方式发送到消息服务器, 然后消息服务器再把这条消息路由到上海的数据中心, 再由上海数据中心部署的数据处理系统来处理这条消息.
  

  (3) 如果数据交互的双端执行效率不对等时,可以考虑使用JMS

      主要场景为: 数据生产的速度非常高(比如队列),但是数据消费的速度相对较低,如果没有良好的架构设计,必将对数据生产者造成阻塞或者数据积压,从而对整体的性能带来挑战或者数据安全带来风险; JMS就是一个很好的"数据缓冲"中心,它将密集的数据提交操作以"均匀"的速度交付给数据消费者, 从而实现系统整体的稳定性.  

这种策略, 在日志统计/小数据分析系统中,经常使用. 主要作用为"缓解系统瓶颈,提高生产效率".

  归纳为: "异步调用、分布、应用解耦"

JMS基础(1)的更多相关文章

  1. JMS基础(2)

    1.  JMS基本概念 JMS(Java Message Service) ,即Java消息服务.JMS是SUN提出的旨在统一各种消息中间件(MOM)系统接口的规范.它提供标准的产生.发送.接收消息的 ...

  2. JMS 基础

    1. JMS基本概念 JMS(Java Message Service) 即Java消息服务.它提供标准的产生.发送.接收消息的接口简化企业应用的开发. 它支持两种消息通信模型:点到点(point-t ...

  3. JMS基础篇(二)

    简介 异构集成是消息发挥作用的一个领域,大型公司内部可能会遇到很多的平台,Java,.net或者公司自己的平台等. 传送消息还应该支持异步机制,以提高系统整体的性能.异步传输一条消息意味着,发送者不必 ...

  4. JMS基础篇

    首先我们需要下载 ActiveMQ:http://activemq.apache.org/. 启动 ActiveMQ 服务:解包下载的 ActiveMQ >进去其bin 目录>双击 act ...

  5. 02.JMS基础

    1.面向消息的中间件(MOM) 1.什么是MOM     面向消息的中间件,Message Oriented Middleware,简称MOM,中文简称消息中间件,利用高效可靠的消息传递机制进行平台无 ...

  6. JMS基础知识

    JMS规范: jms的基本构件:  连接工厂(connectionFactory):客户用来创建连接的对象.比如:activeMQ提供的ActiveMQConnectionFactory. 连接(co ...

  7. Java JMS 程序基础 与 ActiveMQ 安装(一)

    一 ActiveMQ安装 从Apache官网上下载 ActivieMQ的安装包 apache-activemq-5.9.1-bin.tar.gz, 并拷贝到linux的安装目录解压 # tar -zx ...

  8. ActiveMQ学习笔记(一) JMS概要

    (一)什么是JMS jms即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...

  9. JMS and ActiveMQ first lesson(转)

    JMS and ActiveMQ first lesson -- jms基础概念和应用场景 2011-6-18 PM 9:30 主讲:kimmking <kimmking@163.com> ...

随机推荐

  1. select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET (转)

    select函数用于在非阻塞中,当一个套接字或一组套接字有信号时通知你,系统提供select函数来实现多路复用输入/输出模型,原型: #include <sys/time.h>       ...

  2. 链接中 href='#' 和 href='###' 的区别以及优缺点

    首先,<a> 标签 + onclick='{jscode}' 是很常用的一种 js 运用方式,而不使用 href='javascript:{jscode}' 是为了兼容多种浏览器对 < ...

  3. MYSQL 多表更新 UPDATE SET like concat('%',abc,'%');

    SQL语句为:select * from table1 where `text` like CONCAT('%',(select name from table2 where id =3),'%'); ...

  4. Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕

    Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕 今天会逐行解析一下SparkStreaming运行的日志,运行的是WordCountO ...

  5. 【转】 GDB 常用调试方法

    一.多线程调试 多线程调试可能是问得最多的.其实,重要就是下面几个命令: info thread 查看当前进程的线程. thread <ID> 切换调试的线程为指定ID的线程. break ...

  6. Unity3d 如何找到游戏对象并改变其颜色

    //游戏对象 private var obj:GameObject; //渲染器 private var render:Renderer; //贴图 private var texture:Textu ...

  7. EXTJS 资料 Ext.Ajax.request 获取返回数据

    下面是一个登陆页面调用的EXTJS login function,通过 url: '/UI/HttpHandlerData/Login/Login.ashx',获取返回登陆账户和密码! Ext.onR ...

  8. 用火狐打开PDF文件

    可以直接使用官方的Adobe Reader插件来实现在火狐中浏览PDF文件的功能.在你浏览一个PDF文件的时候,火狐将会尝试下载安装这个插件. 如果这个插件出现问题,那么就无计可施啦. 检查火狐的设置 ...

  9. 让<未将对象引用到实例>见鬼去吧!

    未将对象引用到实例,即NullReferenceException异常,我相信这是c#编程中最常见的错误之一,至少我在做项目的过程中,有很多时候都会抛出这个异常.每当这个异常出现的时候,我都会头皮一紧 ...

  10. 异常:HRESULT: 0x80070057 (E_INVALIDARG) 的处理

    碰到这个异常的原因很偶然: 现象:Solution在ReBuild过程中断电了,来电恢复了,重析编译整个Solution不报错,但在浏览页面时始终无法正常浏览,而在design的视图中,每个aspx的 ...