(计算机应用技术专业论文)基于jms的消息中间件的研究与设计.pdf_第1页
(计算机应用技术专业论文)基于jms的消息中间件的研究与设计.pdf_第2页
(计算机应用技术专业论文)基于jms的消息中间件的研究与设计.pdf_第3页
(计算机应用技术专业论文)基于jms的消息中间件的研究与设计.pdf_第4页
(计算机应用技术专业论文)基于jms的消息中间件的研究与设计.pdf_第5页
已阅读5页,还剩55页未读 继续免费阅读

(计算机应用技术专业论文)基于jms的消息中间件的研究与设计.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 消息中间仵为分布式系统中戗建、发送、接收消息提供了一套可靠、遴用的方法, 它屏蔽了不同操作系统和网络协议的舆体细节,减少了开发跨平台和网络协议软件韵 复杂性。由于没有统一的规范和标准,基于各种消惠中闰件的应耀不可移植,不同的 消息中间件也不能互操作,这大大阻碍了消息中间件的发展。j a v a 消息服务( j a v a m e s s a g e s e r v i c e ,j m s ) 是s u n 及其伙伴公司提出的旨在统一备释消息中瓣j 牛系统接 口的规范,它促进了分布式环境中各个组件之间可靠的异步通信,可以用来创建松散 藕合的消息系统,从丽大大籁化了企攮应罔静开发。 论文在分析和总结j m s 规范的基础上,对蒸于j m s 的消息中间件的设计及j m s 中 的消息过滤机制进行了重点研究。 分析了传统模式下j m s 消息中间件的结构及特点,针对这种模式下所有的事务都 集中在j m s 服务器上,服务器易成为影响系统性能的瓶颈,提出了一个改进的设计方 案,并详细介绍了j m s 服务器、j m s 客户端a p i 以及消息模型的蜜现。 由于j m s 规范中没有对消息过滤机制进行具体说明,而传统的基于j m s 的消息过 滤方法效率较低。论文分析了几种发布订阅模式下常用的事件骐配算法,在这个基 础j = ,提出了一种改进的基于j m s 的消息过滤算法,并对算法的性能进行了实验测试。 关键词:消息中间件;j a v a i # i 息服务:发布订阅;消息过滤 a b s t r a c t m e s s a g e o r i e n t e dm i d d l e w a r ep r o v i d e sac o m m o nw a yt oc r e a t e ,s e n da n dr e c e i v e m e s s a g ei nd i s t r i b u t e ds y s t e m s ,i tr e d u c e st h ec o m p l e x i t yi nd e v e l o p i n gt h ec r o s sp l a t f o r m a n dn e t w o r k p r o t o c o ls o f t w a r e t h ea p p l i c a t i o nb a s e do nm e s s a g e - o r i e n t e dm i d d l e w a r e d a n n o t t r a n s p l a n tf o rt h e r ei s n t as t a n d a r do rs p e c i f i c a t i o n ,d i f f e r e n tm e s s a g e o r i e n t e d m i d d l e w a r ea l s oc a nn o tm u t u a l l yo p e r a t e ,i th i n d e r st h ed e v e l o p m e n to fm e s s a g e - o r i e n t e d m i d d l e w a r e j a v am e s s a g es e r v i c eq m s ) i sas p e c i f i c a t i o nw h i c hw a sp r o p o s e db ys u n a n di t s p a r t n e rc o m p a n yf o rt h ep u r p o s eo fu n i f y i n ge a c h k i n do fm e s s a g e o r i e n t e d m i d d l e w a r es y s t e mi n t e r f a c e i tp r o m o t e st h er e l i a b i f i t yo fa s y n c h r o n o u sc o m m u n i c a t i o n b e t w e e n c o m p o n e n t s i nd i s t r i b u t e de n v i r o n m e n t ,a n dc a nb eu s e df o re s t a b l i s h i n g l o o s e l y c o u p l e dm e s s a g es y s t e m ,t h e r e f o r e ,i ts i m p l i f i e st h ed e v e l o p m e n to fe n t e r p r i s e a p p l i c a t i o n s b a s e do nt h eb r i e fa n a l y s i sa n ds u m m a r yo fj m ss p e c i f i c a t i o n ,t h i st h e s i sf o c u s e s s t u d yo nt h ed e s i g no fj m sb a s e dm e s s a g e - o r i e n t e dm i d d l e w a r ea n dm e s s a g ef i l t e r m e c h a n i s mi nj m s t h et h e s i s a n a l y z e s t h es t r u c t u r ea n dc h a r a c t e r i s t i co fj m sm e s s a g e - o r i e n t e d m i d d l e w a r eu n d e rt h et r a d i t i o n a lm o d e l ,f o ra l lt r a n s a c t i o n sa r ec e n t r a l i z e do nj m ss e r v e r , t h es e r v e ri sh e a v y - w e i g h ta n de a s i l yb e c o m e sb o t t l e n e c ko ft h es y s t e m ,a ni m p r o v e d d e s i g ns o l u t i o no fj m sb a s e dm e s s a g e o r i e n t e dm i d d l e w a r ei sp r o p o s e d ,a n di nd e t a i l i n t r o d u c e st h ei m p l e m e n t a t i o no fj m s 。s e r v e gj m sc l i e n ta p ia sw e l la sj m sm e s s a g e m o d e l b e c a u s et h em e s s a g ef i l t e rm e c h a n i s mi sn o tm e n t i o n e di nj m ss p e c i f i c a t i o n ,a n dt h e t r a d i t i o n a lm e s s a g ef i l t e ra l g o r i t h m sb a s e do nj m si si n e f f i c i e n t t h i st h e s i si n t r o d u c e s s e v e r a lk i n d so fe v e n tm a t c ha l g o r i t h mi n p u b l i s h s u b s c r i b em o d e l ,b a s e do nt h e s e a l g o r i t h m s ,a l li m p r o v e dm e s s a g ef i l t e ra l g o r i t h mi nj m s i ss u g g e s t e d ,a n da ne x p e r i m e n t i sc o n d u c t e dt oe v a l u a t et h ep e r f o r m a n c eo ft h i sa l g o r i t h m k e yw o r d s :m e s s a g e - o r i e n t e dm i d d l e w a r e ;j a v am e s s a g es e r v i c e ;p u b l i s h s u b s c r i b e ; m e s s a g ef i l t e r 1 1 长沙理工大学 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立述行研究所 取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任 悸其他个人或集体已经发表或撰焉豹成果作品。对本文豹研究做出重要贡 献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的 法律后巢由本人承担。 作者签名:姗墩1丑期:积年f 月t ) 曰 ,学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意 学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文 被查阅和借阕。本人授权长沙理工大学可以将本学位论文的全部或部分内 容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存 秽汇绽本学位论文。 本学位论文属于 1 、保密日,在年解誉后适雳本授权书。 2 、不保密团。 ( 请在以上樵应方框内打“”) 作者躲排融 隰州年r 月帅 导辩签名:移朋 圈麓:韶年厂月弓日 1 1 前言 第一章绪论 在分布式环境中,各种各样的应用软件需要在各种平台之间进行移植,或者一 个平台需要支持多种应用软件和管理多种应用系统,软、硬件平台和应用系统之间 需要可靠和高效的数据传递或转换,使系统的协同性得以保证。这就迫切需要一种 基于标准的、独立于计算机硬件以及操作系统的开发和运行环境,中间件正是在这 个环境下应运而生的。消息中间件是中间件的一个重要分支,它为不同系统之间提 供了可靠的异步通讯和消息传递。由于没有一个通用的标准,基于各种消息中间件 的系统很难实现互操作和无缝连接,j a v a 消息服务( j a v am e s s a g es e r v i c e ,j m s ) 是s u n 提出的旨在统一各种消息中间件接口的规范,它提供了一组与具体实现无关的接口, 各种分布式应用程序通过这组接口访问支持j m s 的消息中间件,而与消息中间件的 提供厂商无关。现在,j m s 技术得到了广泛的工业支持,有着广阔的前景,而基于 j m s 的消息中间件的设计并没有统一的解决方案,本文正是针对j m s 规范,对j m s 消息中间件的设计及基于j m s 的消息过滤机制进行了研究。这项工作具有十分重要 的现实意义。 1 2中间件技术 中间件是介于操作系统和各种分布式应用程序之间的一个独立的软件层,它定 义和建立了分布式软件模块之间相互作用的一系列机制,为运行在分布式环境下的 多个进程通过网络进行互操作提供服务【1 】。它在分布式系统中的位置如图1 1 所示。 应用层 中间层 o s 层 图1 1中间件在分布式系统中的位置 它的主要功能包括1 2 1 : 1 负责客户机和服务器间的连接和通信,提供客户机与应用层的高效率通信机 制,提供应用层不同服务之间的互操作机制,提供应用层与数据库之间的连接和控 制机制; 2 提供三层结构应用开发和运行的平台,提供应用开发框架,支持模块化的应 用开发; 3 屏蔽硬件、操作系统、网络和数据库; 4 提供事务管理机制,保证事务的一致性: 5 提供应用的负载均衡和高可用性: 6 提供应用的安全机制。 中间件所应用的领域越来越广泛,根据它们的实现机制和采用技术的不同,可 以将中间件分为以下几类: 1 2 1 数据库中间件 在分布式系统中,重要的数据都集中存放在数据服务器中,它们可以是关系型、 复合文档型、具有各种存放格式的多媒体型,或者是经过加密或压缩存放的。数据 访问中间件就是在这种系统中建立数据应用资源互操作的模式,实现异构环境下的 数据库联接或文件系统联接的中间件。它位于数据库管理系统和应用程序之间,实 现了应用程序和异构数据库之间的统一接口,有效地解决了应用系统在不同后台数 据库之间的移植问题。典型的如o d b c 就是一种基于数据库的中间件标准。 1 2 2 远程过程调用中间件 远程过程调用( i u p c ) 中间件是由数据库中问件技术发展而来的,系统基本上是采 用客户一服务器中间件模式,是早期开发分布式应用时经常采用的一种同步式的请 求应答协议。程序员编写客户方的应用,需要时可以调用位于远端服务器上的过程, 程序员就像调用本地过程一样在程序中调用远程过程,启动远程过程的运行,然后 将运行结果返回给本地程序。不但如此,远程过程调用还可以将程序的控制传递到 远端的服务器当中去。r p c 的灵活特性使得它有比数据库中间件更广泛的应用,它 可以应用在更复杂的客户一服务器计算环境中。 1 2 3 面向对象的中间件 随着面向对象技术迅速的得到普及,面向对象的中间件技术也逐渐形成。面向 对象的中间件充分利用了面向对象技术中对象的封闭性和继承性的特性,其基本思 想是在对象与对象之间提供一种统一的接口,使对象之间的调用和数据共享不再关 心对象的位置、实现语言及所驻留的操作系统。这个接口就是面向对象的中间件, 它是面向对象技术和分布式计算发展的产物,它提供一种通讯机制,透明地在异构 的分布式计算环境中传递对象请求,而这些对象可以位于本地或远程机器。 尽管面向对象的中间件是一种很强大的规范,比较成熟的产品如c o r b a l 3 、 d c o m 、j i n i p l 被广泛应用,但是面对大规模的复杂分布式系统,这些技术也显示出 了局限性: 1 同步通信:客户发出调用后,必须等待服务对象完成处理并返回结果后才能 继续执行; 2 客户和服务对象的生命周期紧密耦合:客户进程和服务对象进程都必须正常 运行,如果由于服务对象崩溃或网络放障导致客户的请求不可达,客户会接收到异 常; 为了解决这些问题,出现了面向消息的中间件,它较好地解决了以上的问题。 1 2 4 面向消息的中间件 消息中间件是一种由消息传送机制或消息队列模式组成的中间件技术。它利用高 效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式: 系统的集成阁。 消息中间件适用于需要可靠的数据传送的分布式环境。采用消息中间件机制的 系统中,不同的对象之间通过传递消息来激活对方的事件,完成相应的操作。发送? 者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候 再将消息转发给接收者。消息中间件能在不同平台之间通信,它常被用来屏蔽掉各 种平台及协议之间的特性,实现应用程序之间的协同,其优点在于能够在客户和服 务器之间提供同步和异步的连接,并且在任何时刻都可以将消息进行传送或者存储 转发,这也是它比远程过程调用更进一步的原因。 1 2 5w e bs e r v i c e s 中间件技术当前所面临的重大的挑战就是要在互联网这个复杂的分布式系统中 构建应用程序。目前,w e bs e r v i c e s l e 技术已经引起了广泛的关注,它是解决这一问 题的最有前景的方案,作为新兴的技术,w e bs e r v i c e s 仍然处于发展与完善的过程中。 w e bs e r v i c e s 的基本功能是让计算机系统之间和应用系统之间互相连接,共享服务。 w e bs e r v i c e s 技术的巨大威力在于,它要同化各种异构系统,不仅包括各种应用程序、 操作系统、硬件平台,还包括各种不同的中间件,因此,也有人将w e bs e r v i c e s 称 作“m i d d l e w a r ef o rm i d d l e w a r c ”。 其他的中间件还包括反射中间件( r e f l e c t i v em i d d l e w a r e ) i n 、网格中间件等。反射 中问件是指系统能够根据外部环境的变化以及自身的行为作出相应的反应或调整。 网格是构筑在互联网上的一种新兴技术,它将高速互联网、高性能计算机、大型数 据库、传感器、远程设备等融为一体,为人们提供更多的资源、功能和交互性。 1 3 消息中间件与j m s 消息中间件作为一个中问层软件,它为分布式系统中创建、发送、接收消息提 供了一套可靠通用的方法,实现了分布式系统中可靠的、高效的、实时的跨平台数 据传输。消息中间件减少了开发跨平台和网络协议软件的复杂性,它屏蔽了不同操 作系统和网络协议的具体细节,面对规模和复杂度都越来越高的分布式系统,消息 中间件技术显示出了它的优越性: 1 采用异步通信模式。发送消息者可以在发送消息后进行其它的工作,不用等 待接收者的回应,而接收者也不必在接到消息后立即对发送者的请求进行处理; 2 客户和服务对象生命周期的松耦合关系。客户进程和服务对象进程不要求都 正常运行,如果由于服务对象崩溃或者网络故障导致客户的请求不可达,客户不会 接收到异常,消息中间件能保证消息不会丢失。 从上个世纪9 0 年代初,随着不同厂商消息中间件大量上市,消息中间件技术得 到了长足的发展。目前,m m 和b e a 的中间件产品在银行、证券、电信等高端行业, 以及r r 等行业中得到广泛应用。i b m 凭借其在1 9 9 9 年推出的应用服务器w e b s p h e r e , 扎根金融、证券等行业,在超大型以及系统整合型应用方面优势突出;b e a 则是专 门从事中间件开发的公司,它的应用服务器w e b l o g i c 在美国市场占有率超过6 0 , 在国内电信及证券行业占据主要地位;s u n 、o r a c l e 、s y b a s e 和b o r l a n d 等厂商也都 有自己的应用服务器:近年来,以金蝶、东方通等公司为代表的国产中间件产品也 发展迅速。 由于没有统一的规范和标准,基于消息中间件的应用不可移植,不同的消息中 间件也不能互操作,这大大阻碍了消息中间件的发展。j a v am e s s a g es e r v i c e ( j m s , j a v a 消息服务) i s l 是s u n 及其伙伴公司提出的旨在统一各种消息中间件系统接口的规范。 j m s 规范首次发布于1 9 9 8 年,最新的版本是2 0 0 2 发布的j m s1 1 规范。它定义了 一套通用的接口和相关语义,提供了诸如持久、验证和事务的消息服务,它最主要 的目的是允许j a v a 应用程序访问现有的消息中间件。j m s 规范没有指定在消息节点 间所使用的通讯底层协议,来保证应用开发人员不用与其细节打交道,一个特定的 j m s 实现可能提供基于t c p i p 、m 1 甲、u d p 或者其它的协议1 9 1 。 j m s 规范定义了点对点( p m ) 和发布订阅( p u b s u b ) 两种消息处理模型1 1 0 j : 1 点对点消息处理模型:在这种消息处理模型中,产品或应用程序围绕着消息 队列、发送者和接收者的概念而创建。每一个消息都包含具体队列的地址,接受客 户从为放置发送给他们的消息而建立的队列中提取消息,队列将发送给他们的消息 一直保留,直到消息被消费或消息到期。 2 发布订阅消息处理模型:在这种消息处理模型中,客户把消息提交给一个主 题。发布者和订阅者一般是匿名的,可以动态地发布或订阅内容,系统负责把多个 发布者发送给一个主题的消息分发给该主题的多个订阅者,主题把消息分发给当前 的调用者之后就不再保留这些消息。 现在j m s 已成为j 2 e e 平台的一个重要组成部分,应用程序开发人员可以将消 息传递用于使用j 2 e ea p i 的组件i n l 。在j 2 e e 平台上的j m sa p i 具有以下的功能: 1 应用程序客户、e n t e r p r i s ej a v a b e a n s ( e j 聊组件和w e b 组件能够发送和同步接 收j m s 消息,应用程序客户另外还能异步接收消息。 2 一种新的消息驱动b e a n 能够启动消息的异步消费,j m s 提供者可以通过消 息驱动b e a n 选择实现消息的并发处理。 3 消息的发送和接收可以参与分布式事务处理。 许多厂商采用并实现了j m sa p i ,现在,j m s 产品能够为企业提供一套完整的 消息传递功能,下面是一些比较流行的j m s 商业软件和开源产品。 1 i b mm q s e r i e s i b mm o t , 2 1 系列产品提供的服务使得应用程序可以使用消息队列进行相互交流, 通过一系列基于j a v a 的a p i ,提供了m q s e r i e s 在j a v a 中应用开发的方法。它支持 点到点和发布订阅两种消息模式,在基本消息服务的基础上增加了结构化消息类, 通过工作单元提供数据整合等内容。 2 w e b l o g i c w e b l o g i o - 3 1 是b e a 公司实现的基于工业标准的j 2 e e 应用服务器,支持大多数企 业级j a v a a p i ,它完全兼容j m s 规范,支持点到点和发布订阅消息模式,它具有以 下一些特点: ( 1 ) 通过使用管理控制台设置j m s 配置信息: ( 2 ) 支持消息的多点广播: ( 3 ) 支持持久消息存储的文件和数据库; ( 4 ) 支持x m l 消息,动态创建持久队列和主题。 3 s o n i c m q s o n i c m q l i 是p r o g r e s s 公司实现的j m s 产品。除了提供基本的消息驱动服务之 外,s o n i c m q 也提供了很多额外的企业级应用开发工具包,它具有以下一些基本特 征: ( 1 ) 提供j m s 规范的完全实现,支持点到点消息模式和发布订阅消息模式; ( 2 ) 支持层次安全管理: ( 3 ) 确保消息在i n t e m e t 上的持久发送: ( 4 ) 动态路由构架( d r a ) 使企业能够通过单个消息服务器动态的交换消息; ( 5 ) 支持消息服务器的集群。 4 a c t i v e m o a c t i v em q i 哪是一个基于a p c a c h e2 0l i c e n c e d 发布,开放源码的j m s 产品。 ( 1 ) 提供点到点消息模式和发布订阅消息模式; ( 2 ) 支持j b o s s 、g e r o n i m o 等开源应用服务器,支持s p r i n g 框架的消息驱动:、 ( 3 ) 新增了一个p 2 p 传输层,可以用于创建可靠的p 2 p j m s 网络连接: ( 4 ) 拥有消息持久化、事务、集群支持等j m s 基础设施服务。 5 o p e n j m s o p e n j m s t - q 是一个开源的j m s 规范的实现,它包含以下几个特征: ( 1 ) 它支持点到点模型和发布,订阅模型; ( 2 ) 支持同步与异步消息发送; ( 3 ) 可视化管理界面,支持a p p l e t ; ( 4 ) 能够与j a k a r t a t o m c a t 这样的s e r v l e t 容器结合; ( 5 ) 支持r m i 、t c p 、h t r p 与s s l 协议。 以往面向消息的中间件产品都依赖于各自所运行的操作平台,因而限制了其运 行的范围,使企业应用程序仅限于单一的硬件和软件平台。j m s 技术成功地解决这一 问题,为企业应用程序间进行消息服务提供了一个可运行于不同平台的、可靠安全的 和高效的解决方案。现在,基于j m s 的中间件技术已被广泛应用于企业应用集成0 7 - 1 9 1 、 应用程序间消息服务1 2 0 l 、数据库管理 2 1 , 2 2 1 、数据同步及电子商务等。j m s 技术的应 用,很好地解决了企业应用程序开发中的移动性、规模化、资源利用、组件重用以及 分布式事务等关键问题,为把孤立的应用变成相互关联的、健壮的平台提供了一个合 理的基础。基于j m s 的技术必将得到继续的发展和更为广泛有力的工业支持。 1 4 论文的工作内容 基于j m s 的技术有着广阔的前景,而关于j m s 消息中间件的设计并没有统一的解 决方案,论文主要的工作是基于j m s 规范,对j m s 消息中间件的设计及基于j m s 的消 息过滤机制进行了研究,并提出了一些改进方法,主要的内容包括: 1 分析了传统模式下j m s 消息中间件的结构及特点。传统模式下所有的事务都 集中在j m s 服务器上,可扩展性较差,且随着规模的扩大,容易造成服务器的拥塞, 不适合大规模的分布式系统。针对这些问题,提出了一个改进的设计方案,并详细 介绍了j m s 服务器、j m s 客户端a p i 以及消息模型的具体实现。 6 2 由于j m s 把过滤消息的任务分配给j m s 提供者,而不是给应用程序,j m s 提 供者需要对每个订阅者的消息选择器进行匹配处理。传统的实现方案中,j m s 提供者 会逐个地匹配每个消息选择器的属性表达式。在实际的消息系统中,针对一个主题 会有大量的消息发布和订阅,传统的消息过滤算法就显得效率不高,影响了整个消 息系统的性能。本文分析了发布订阅模式下的几种事件匹配算法,在这个基础上, 提出了一种改进的j m s 消息过滤算法,并对算法的性能进行了实验测试,与传统的算 法进行了分析与对比。 论文的组织如下: 第一章:绪论部分,介绍了论文的研究背景,包括中间件技术的发展,各种中 间件技术的特点,以及消息中间件与j m s 的发展现状等。 第二章:介绍了j m s 规范的体系结构,详细阐述了j m s 应用的组成、管理对象、 j m s 消息模型、消息传递模式以及标准j m s 接口等基本概念。 第三章:分析了传统模式下j m s 消息中间件的结构及特点,在这个基础上,提出 了一个改进的实现方案,对消息的路由,流量控制等关键技术进行了介绍,并对j m s 服务器、j m s 客户端a p i 以及消息模型的具体实现进行了详细的说明。 第四章:针对传统的j m s 消息过滤算法效率不高的问题,分析了发布订阅模式 下几种常用的事件匹配算法,在这个基础上,提出了一个改进的消息过滤算法,并 对算法的性能进行了实验测试。 最后,对论文的工作进行了总结,讨论了进一步的研究工作。 第二章j m s 体系结构 j m s 于1 9 9 8 年引入,它最主要的目的是允g 自= j a v a 应用程序访问现有的面向消息传 递的中间件系统,实现了j m s 规范的产品能够为企业提供一套完整的消息传递功能。 j m s 定义了一些通用的企业消息概念和工具集,试图最小化一个j a v a 程序员在使用这 些企业消息产品前所必须学习的一系列概念,并试图最大化消息应用程序的灵活性。 2 1j m s 体系结构 2 1 1j m s 应用的组成 j m s 应用程序由下面各个部分组成: 一个j m s 提供者:它是实现j m s 接口并提供管理和控制功能的一个消息传递系 统; j m s 客户:是用j a v a 编写的生产和消费消息的程序或组件; 消息:是在j m s 客户之间传递的对象; 被管理对象:是管理员创建的预配置j m s 对象。两种被管理的对象是目的地和连 接工厂; 。 本机客户:是使用消息传递产品的本机客户a p i ,而不使用j m s a p i 的应用程序。 图2 1 说明了上面所述各个部分交互的方式。 绑定 逻辑连接 图2 1j m sa p i 体系结构 管理工具允许将目的地和连接工厂绑定到一个j a v a 命名和目录接口( j n d i ) a p i 命名空间中,j m s 客户在该命名空间中查找被管理对象,并通过j m s 提供者建立与这 些对象的逻辑连接。 2 1 2 管理对象 j m s 管理对象是一种由j m s 管理员使用客户端创建的包含j m s 配置信息的对 象,并被用于实际应用中管理j m s 应用。管理对象中包含j m s 客户所需要的相关信 息,包括连接到j m s 提供者以及本地地址等参数,j m s 提供者同时也提供了创建、 配置以及保存管理对象的方法。j m s 客户通过可移值接口访问管理对象,所以客户 应用程序可以不用改变,或者做很少的改变,就在j m s 的多个实现中运行。 虽然j m s 管理对象接口不是明确的依靠j n d i ,但是当客户端在命名空间中查找 该接口的时候需要使用j n d i 。一般来讲,管理员在j n d i 中配置管理对象,然后j m s 客户端使用j n d i 查找这些对象。 j m s 规范中定义了两种管理对象: 1 连接工厂( c o n n e c t i o n f a c t o r y ) :客户用来创建与提供者的连接的对象,它封 装一套已经被管理员定义的连接配置参数,包括所有系统所需的配置信息,定义了 j m s 提供者运行的主机地址、监听端口、连接的客户等。 2 目的地( d e s t i n a t i o n ) :一种客户端用来指定消息发送的目的地或者得到所接 收消息的发送源头的对象。消息发送者发送消息到目的地对象上,而消息接收者从 该目的地对象上接收消息。在点对点消息传递域中,目的地被称为队列;在发布订 阅消息传递域中,目的地被称为主题。 2 1 3 消息传递模式 j m s 规范提供了两种最普遍的消息传递模式:发布订阅( p u b l i s h s u b s c r i b e , p u b s u b ) 和点对点( p o i n t - t o p o i n t ,p t p ) 。在j m s 诞生之前,大多数消息传递产品 支持的都是点对点的或发布订阅的消息传递方式。j m s 规范为每个方式都提供了一 个单独的域并为每个域定义了一致性,独立的j m s 提供者也许实现其中一个域,或两 个域都实现。 j m s 规范允许客户端应用使用两种模式的混合,发布订阅模式和点对点模式使 用相同的j m s 消息格式。 1 点对点消息传递模式。点对点消息传递建立在消息队列的基础上,每个客户 端对应一个消息队列,客户端发送消息到对方的消息队列中,从自己的消息队列读 取消息。消息队列由j m s 提供者提供,消息发送端发送消息到消息队列上,接收端从 消息队列中接收消息。所以消息发送者和接收者实际并不直接连接,它们之间的消 息通信是通过位于j m s 提供者上的消息队列来完成的,队列的存在使得消息的异步传 输成为可能。和邮件系统中的邮箱一样,队列可以包含各种消息,j m s 提供者提供工 具管理队列的创建、删除。 j m s 点到点传递模式还定义了客户端如何向队列发送消息,从队列接收消息,浏 览队列中的消息。在点对点消息传递模式中,每一条消息队列中的消息只能被一个 客户所接收,一旦消息队列中的消息被消息客户接收后,该消息就被队列删除,其 它消息客户就不能再访问该条消息。同时,每一条消息都包含明确的目的地地址, 能够被发送到确定的消息队列上,保存在该队列中,直到被其它消息客户接收为止。 消息队列是一个管理对象,预先配置并保存在名字空间中,所有j m s 客户都可以 通过j n d i 查找它们的实例。一个队列由管理员创建,并长时间存在,无论消费它消 息的客户端是否激活,它都可以有效的保存消息并发送它,所以客户端不用做特别 的预防来保证不丢失消息。 图2 2 点对点消息传递 当发送的每个消息必须被一个消息费者成功处理时,可以使用点对点消息传递, 其主要特点如下: ( 1 ) 每个消息只有一个消费者; ( 2 ) 消息的发送者和接收者没有时间上的相关性,无论接收者在发送者发送消 息时是否处于运行状态,它都可以提取消息: ( 3 ) 接收者确认消息的成功处理。 2 发布订阅消息传递模式。发布订阅是一种一对多的发布模式,此模式中, 客户端应用向主题发布消息,主题反过来被对此主题感兴趣的客户所预定。所有预 定客户将收到每一份消息( 遵从一定的服务质量、连接和选择) 。 发布订阅模式通常是匿名的,可以动态地发布或订阅消息,且必须保证某个节 点的所有发布者发布的消息准确无误地发送到这个节点的所有订阅者。发布订阅消 息传递模式可以使一条消息被多个客户所接收,发布者将消息发布到某个主题上, 多个客户可以同时订阅该主题,一个主题也可以接收多个发布者发送过来的消息。 主题使得消息订阅者和消息发布者保持互相独立,不需要接触即可保证消息的传送, 主题同样也是一个管理对象,预先配置并保存在名字空间中,所有j m s 客户可以通 过j n d i 查找到它们的实例。 1 0 虽然在所有发布订阅系统中都存在延迟,但是消息的延迟可能会动态依赖于 j m s 提供者向已存在的订阅者发送消息的速度,还包括消息在传输过程中由j m s 提 供者保留的时间。 医习 1 - j 图2 3 发布订阅消息传递 发布订阅消息传递模式的主要特点如下: ( 1 ) 每个消息可以有多个消费者。 ( 2 ) 发布者和订阅者有时间相关性。订阅一个主题的客户只能消费自它订阅之 后发布的消息,订阅者必须一直处于激活状态,才能消费发布的消息。 2 1 4j m s 接口 j m s 在基于通用消息概念的基础上,为两种消息模式都自定义了接口,下面是对 这些j m s 接口的一个基本定义。在点到点以及发布,订阅消息传递模式中,这些接口 的定义和其父接口的定义是一致的。 c o n n e c t i o n f a c t o r y :连接工厂是客户用来创建与提供者的连接的对象。 c o n n e c t i o n :它封装了与j m s 提供者的一个虚拟连接。连接可以代表客户和提 供者服务守护进程之间的一个开放的t c p i p 套接字。 d e s t i n a t i o n :目的地是客户用来指定它生产的消息的目标和它消费的消息的来 源。 s e s s i o n :它是生产和消费消息的一个单线程的上下文( n t e x t ) ,用来创建消息生 产者、消息消费者和消息。会话提供一个事务性的上下文,在这个上下文巾,一组 发送和接收被组合到一个原子操作中。会话有下面几个作用: 1 它是消息消费者和消息生产者的工厂; 2 它提供了一些优化的消息工厂; 曰曰 璺$ 圉 3 它支持单序列的事务,这种事务将它的生产者和消费者的操作合并为一个原 子单位; 4 它为它消费的消息和生产的消息定义了一个串行的顺序: 5 它一直保留它消费的消息直到这些消息被确认; 6 它串行化注册到消息消费者的消息监听器的执行。 表2 1j m s 接口及其继承关系 j m s 标准接口点对点模式发布订阅模式 c o n n e c t i o n f a c t o r yq u e u e c o n n e c t i o n f a c t o r yt o p i c c o n n e c f i o n f a c t o r y c o n n e c t i o n q u e u e c o n n e c t i o n t o p i c c o n n e c t i o n d e s t i n a t i o n q u e u e t o p i c s e s s i o nq u e u e s e s s i o n t o p i e s e s s i o n m e s s a g e p r o d u c e r o u e u e s e n d e r t o p i c p a b l i s h e r m e s s a g e c o n s u m e r q u e u e r e c e i v e r , q u e u e b r o w s e r t o p i c s u b s c r i b e r m e s s a g e p r o d u c e r :消息生产者是由会话创建的个对象,用来把消息发送给一 个目的地。 m e s s a g e c o n s u m e r :消息消费者是由会话创建的对象,用于接收发送到目的地的 消息。消息消费者允许,j m s 客户在目的地中注册感兴趣的消息。j m s 对象之间的关 系见图2 4 所示。 2 1 5j m s 应用开发 广义上讲,j m s 应用程序就是一个或多个进行消息交换的j m s 客户端。 开发j m s 客户端通常有如下步骤: 1 通过j n d i 查找c o n n e c t i o n f a c t o r y 对象; 2 通过j n d i 查找一个或多个d e s t i n a t i o n 对象; 3 c o r m e c t i o n f a c t o r y 根据需要传递的消息来创建一个j m sc o n n e c t i o n 对象; 4 使用j m sc o n n e c t i o n 对象来创建一个或多个j m ss e s s i o n 对象; 5 使用j m sc o n n e c t i o n 对象和d e s t i n a t i o n 对象来创建所必须的m e s s a g e p r o d u c e 对象和m e s s a g e c o n s u m e r 对象: 6 通知j m sc o n n e c t i o n 对象开始传递消息。 6 磊 r 创建 妙 圈 图2 4j m s 对象关系 2 1 6j m s 其它摄念 1 安全性 j m s 规范不提供控制或配置消息完整性或消息隐秘性的功能。 2 多线程 j m s 可以要求它所有的对象都支持并发访问,虽然支持并发访问将明显增加系 统消耗和复杂程度。 有两个限制并发访问s e s s i o n 的原因。第一个原因是s e s s i o n 是一种支持事务的 j m s 实体,它实现多线程事务是非常困难的。第二个原因是s e s s i o n 支持异步消息消 费。j m s 不要求进行异步消息消费的客户端代码有处理多条并发消息的能力,这是 重要的一点因素。另外,如果s e s s i o n 被设置成多条异步消费者,那么,客户端将不 会强制处理那些单独消费者并发执行的情况。这些约束将使j m s 能更简单的用于典 型客户端。 3 用户端触发机制 在基于消息的应用中,一些客户端常常被设计成周期性唤醒并等待消息处理结 束,一个基于消息的应用触发机制通常使用这种客户端触发机制。j m s 不提供触发 客户端执行这种机制,一些提供者可以通过使用管理工具提供这种触发机制。 4 请求答复( r e q u e s t r e p l y ) j m s 提供j m s r e p l y t o 头域( h e a d e rf i e l d ) 来指定将要回复的消息的d e s t i n a t i o n 属性。另外,j m s 提供了一个工具为每个可能被用来作为回复的唯一目的地创建临 时队列和主题。 圃妒圄区涉圄 圈扩团扩 翠圄 为了方便,j m s 为p u b s u b 和p t p 定义了r e q u e s t r e p l y 帮助类来实现一个简单 的r e q u e s t r e p l y 表单。j m s 提供者和客户端都有专门的实现。 2 2 j m s 消息模型 企业消息框架把消息看作由头域和主体组成的轻量级实体。头域包含消息的路 由和认证信息,主体包含可以被发送的应用程序数据。 1 目标 ( 1 ) 提供一个单一的、统一的消息a p i ; ( 2 ) 提供一套a p i 用来匹配已存在的、非j m s 程序所创建的消息: ( 3 ) 支持跨操作系统、不同体系结构、跨计算机语言的不同种类的应用开发: ( 4 ) 支持包含j a v a 对象的消息; ( 5 ) 支持包含x m l 的消息。 2 j m s 消息组成 j m s 消息由两部分构成:h e a d e r 和b o d y 。h e a d e r 包含消息的识别信息和路由信 息,b o d y 包含消息的实际数据。 h e a d e r :所有的消息都支持统一的h e a d e r 域。 p r o p e r t i e s :标准h e a d e r 域的补充,消息提供一种内建的工具用来为消息添加可 选的j m s 头域。 ( 1 ) 应用程序指定属性:它提供一种为消息添加应用程序指定属性的机制; ( 2 ) 标准属性:j m s 在有效的、可选的头域中定义了一些标准属性; ( 3 ) 提供者指定属性:把提供者的本地客户端所需要的提供者指定属性结合到 j m s 客户端中。 b o d y :j m s 定义了一些消息类型主体用来覆盖当前所使用的主要消息风格。 3 消息头域 一个完整的头域将会被传送给所有接收消息的j m s 客户端,但不会传送给非 j m s 客户端。 4 消息属性 可以将它看作附加的头域,用来支持j m s 消息内建工具需要的属性值。它有效 地为消息提供了一种附加、可选的头域机制。 属性主要用于消息选择机制,属性名必须服从消息选择标记规则。属性值可为 b o o l e a n 、b y t e 、s h o r t 、i n t 、l o n g 、f l o a t 、d o u b l e 、s t r i n g 或o b j e c t 。消息取值设置优先 于消息发送,当一个客户端收到一个消息时,其属性为只读模式。 5 消息选择 很多消息应用系统都支持消息过滤和分类功能。 ( 1 ) 消息选择器 j m s 消息选择器允许客户端通过指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论