http://blog.csai.cn/user1/25929/archives/2008/32570.html

当前,CORBA、DCOM、RMI等RPC中间件技术已广泛应用于各个领域。但是面对规模和复杂度都越来越高的分布式系统,这些技术也显示出其局限性:(1)同步通信:客户发出调用后,必须等待服务对象完成处理并返回结果后才能继续执行;(2)客户和服务对象的生命周期紧密耦合:客户进程和服务对象进程都必须正常运行;如果由于服务对象崩溃或者网络故障导致客户的请求不可达,客户会接收到异常;(3)点对点通信:客户的一次调用只发送给某个单独的目标对象。

面向消息的中间件(Message Oriented Middleware,MOM)较好的解决了以上问题。发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消息转发给接收者。这种模式下,发送和接收是异步的,发送者无需等待;二者的生命周期未必相同:发送消息的时候接收者不一定运行,接收消息的时候发送者也不一定运行;一对多通信:对于一个消息可以有多个接收者。

已有的MOM系统包括IBM的MQSeries、Microsoft的MSMQ和BEA的MessageQ等。由于没有一个通用的标准,这些系统很难实现互操作和无缝连接。Java Message Service(JMS)是SUN提出的旨在统一各种MOM系统接口的规范,它包含点对点(Point to Point,PTP)和发布/订阅(Publish/Subscribe,pub/sub)两种消息模型,提供可靠消息传输、事务和消息过滤等机制。
       1.JMS
JAVA 消息服务(JMS)定义了Java 中访问消息中间件的接口。JMS 只是接口,并没有给予实现,实现JMS 接口的消息中间件称为JMS Provider,iLink实现了JMS接口,用户可以通过使用JMS接口,在iLink中进行JMS编程。 iLink支持JMS1.0.2版本。
       2.JMS接口描述
JMS 支持两种消息类型PTP 和Pub/Sub,分别称作:PTP Domain 和Pub/Sub Domain,这两种接口都继承统一的JMS父接口。
       3.JMS消息模型
JMS 消息由以下几部分组成:消息头,属性,消息体。
消息头中定义好的标准属性外,JMS 提供一种机制增加新属性到消息头中,这种新属性包含以下几种:

1. 应用需要用到的属性;

2. 消息头中原有的一些可选属性;

3. JMS Provider 需要用到的属性。
       4. 消息的同步异步接收消息的同步接收是指客户端主动去接收消息,JMS 客户端可以采用MessageConsumer 的receive方法去接收下一个消息。消息的异步接收是指当消息到达时,主动通知客户端。JMS 客户端可以通过注册一个实现MessageListener 接口的对象到MessageConsumer,这样,每当消息到达时,JMS Provider 会调用MessageListener中的onMessage 方法。
       5. PTP模型
PTP(Point-to-Point)模型是基于队列的,发送方发消息到队列,接收方从队列接收消息,队列的存在使得消息的异步传输成为可能。和邮件系统中的邮箱一样,队列可以包含各种消息,JMS Provider 提供工具管理队列的创建、删除。JMS PTP 模型定义了客户端如何向队列发送消息,从队列接收消息,浏览队列中的消息。发布和订阅消息,这些节点被称作主题(topic)。主题可以被认为是消息的传输中介,发布者(publisher)发布消息到主题,订阅者(subscribe) 从主题订阅消息。主题使得消息订阅者和消息发布者保持互相独立,不需要接触即可保证消息的传送。

面向消息的中间件(MOM)的代表JMS相关推荐

  1. 理解面向消息的中间件和JMS

    第二章:理解面向消息的中间件和jms 2.1企业级消息简介 企业级消息是在分布式系统之间进行传递的数据.当前有很多方法可以完成这一目的: 1.远程过程调用,例如COM.CORBA.DCE和EJB 2. ...

  2. 面向消息的中间件 (Message-Oriented Middleware, MOM)

    http://docs.oracle.com/cd/E19148-01/820-0533/aeraq/index.html 由于业务.机构和技术是不断变化的,因此为其服务的软件系统必须适应这样的变化. ...

  3. python消息队列中间件_python-RabbtiMQ消息队列

    1.RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之 ...

  4. 基于硬件的消息队列中间件 Solace 简介之二

    小短篇介绍关于Solace https://blog.csdn.net/aqudgv83/article/details/79495489 . 前面简单介绍了Solace来自于哪家公司, 主要能做哪些 ...

  5. 浅谈消息队列及常见的分布式消息队列中间件

    背景 分布式消息队列中间件是是大型分布式系统不可缺少的中间件,通过消息队列,应用程序可以在不知道彼此位置的情况下独立处理消息,或者在处理消息前不需要等待接收此消息.所以消息队列主要解决应用耦合.异步消 ...

  6. rabbitmq实战:高效部署分布式消息队列_一文看懂消息队列中间件--AMQ及部署介绍...

    概述 最近有个小项目用到了AMQ来做消息队列,之前介绍的主要是rabbitmq,所以今天主要提一下AMQ,也简单介绍下两者的区别~ 消息队列中间件 消息队列中间件(简称消息中间件)是指利用高效可靠的消 ...

  7. MQ消息队列中间件:

    MQ消息队列中间件: 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应. 异步通讯:就像发信息,不需要马上回复. 同步调用的优点: 时效性较强,可以立即得到结果 同步调用的问题: ...

  8. 微服务 —— 消息服务中间件 JMS

    一.消息服务中间件 对于大多数应用来说,可采用消息服务中间件来提升系统异步通信,消息解耦问题. 消息的作用:异步处理.应用解耦.流量削峰. 异步消息中的两个概念:消息代理.目的地 当消息发送者发送消息 ...

  9. 消息队列入门(三)JMS标准及实现

    消息中间件 消息中间件即Message-oriented middleware(MOM),消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成. 通过提供消 ...

最新文章

  1. Selenium自动化测试驱动下载
  2. mysql超级_Mysql 超级快速入门
  3. LINUX下的RAID使用
  4. 深入浅出SQL(三)——表的规范化
  5. 常用公有云接入——华为
  6. 同一进程中的线程究竟共享哪些资源
  7. [剑指offer]面试题第[47]题[JAVA][礼物的最大价值][动态规划]
  8. Google Web Brower
  9. 机器学习基础(五十六)—— tanh、sign 与 softsign
  10. 汉诺塔问题(三柱及四柱)详解
  11. 好用的论文翻译工具集锦
  12. SQLyog官网下载,SQLyog-12.4.2下载,SQLyog最新版下载,SQLyog Download
  13. 软件工程-----个人总结
  14. 如何为您的ADC选择最合适的基准电压源和放大器
  15. python里apply用法_python中apply函数是什么?
  16. 【C++】关于set的一些奇怪问题:错误C2676 二进制“<”:“const _Ty”不定义该运算符或到预定义运算符可接收的类型的转换
  17. Python PrettyTable 模块
  18. sangerbox使用教程_TCGA RNA测序ID转换一文就够
  19. 吱口令代付|淘宝天猫教程|找人代付|淘宝代付源码
  20. 个性化习题推荐-Exercise recommendation based on knowledge concept prediction

热门文章

  1. iOS之给WebView导航栏添加“返回”与“关闭”按钮
  2. LeetCode Algorithm 606. 根据二叉树创建字符串
  3. 2019年第十届蓝桥杯 - 省赛 - Java研究生组 - A. 立方和
  4. python虚拟环境virualenv的安装与使用
  5. Nginx 下载限速
  6. 【机器视觉】 dev_unmap_prog算子
  7. 【Tools】CSDN-markdown编辑器使用说明
  8. python 类属性排序_Python实现多属性排序的方法
  9. matlab 滤掉高斯噪声吗,我想问一下:怎么用matlab编写函数对图像进行高斯滤波以去除噪声...
  10. blob html 预览_本地图片预览+blob使用