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

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

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

文档简介

西南交通大学硕士研究生学位论文第1 页 摘要 伴随着网络技术的发展,许多应用需要迁移到网络环境的异构平台上,这 对新一代的软件开发提出了新的需求。中间件( m i d d l e w a r e ) 正是应这个需求而 被提出,成为研究的热点。 消息中间件( m e s s a g e o r i e n t e dm i d d l e w a r e ,m o m ) 是中间件的重要分支,它 采用消息驱动方式,基于消息传递机制,为网络异构环境下应用间的数据交换 提供高效、可靠的通信服务。它能够有效地屏蔽底层的网络协议、操作系统等 具体细节,从而大大简化异构环境下企业应用的开发与集成。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 公司提出的基于i a v a 技术的消息中间件的接 口规范,用来创建松耦合的消息系统。 论文研究了常用的通信模式,通过对常用的通信模式进行对比和分析得出 了j m s 特点和优势。论文分析了j m s 的两种消息传递模型:基于队列( q u e u e ) 的点对点( p 2 p ) 模型和基于主题( t o p i c ) 的发布订阅( p u b s u b ) 模型。论文介绍了 j m sa p i 整体架构和j m s 消息结构,还介绍了开源的消息服务器a c t i v e m q , 并重点分析了它的消息持久化的实现方式。 论文主要研究了消息中间件的消息传递,实现了基于不同编程思想的三种 实现方案,并且对其做了深入的对比分析和研究。论文的理论研究重点是深入 理解和分析s p r i n g 框架的设计思想,应用s p r i n g 轻量级框架构建基于 m d p s ( m e s s a g ed r i v e np o j o s ) 的消息传递系统。 论文着重研究了在开发分布式系统时的十条谬误( 10f a l l a c i e s ) ,结合系统 的功能需求,论文重点对如何缓解在大数据量时的网络拥堵以及网络传递过程 中的信息安全等问题进行了研究,提出了切实可行的解决方案。论文中还设计 了事务管理以及多线程管理和日志管理来提高系统的吞吐量和可维护性。通过 对基于m d p s 的消息传递的理论实现进行整合,使之成为安全可靠、性能稳定、 可维护的消息传递系统。 关键词:异构;消息中间件;j m s ; m d p s 西南交通大学硕士研究生学位论文 第1i 页 a b s t r a c t w i t ht h ed e v e l o p m e n to fn e t w o r kt e c h n o l o g y , m a n ya p p l i c a t i o n sn e e dt ob e t r a n s f e r r e dt oh e t e r g e n e o u sp l a t f o r mo fn e t w o r ke n v i r o n m e n t ,w h i c hh a sr a i s e d n e wr e q u i r e m e n t st ot h en e wg e n e r a t i o no fs o f t w a r ed e v e l o p m e n t m i d d l e w a r ei s p u tf o r w a r df o rt h e s er e q u i r e m e n t s ,a n dn o wi sb e c o m i n gah o t s p o ti nc o m p u t e r r e s e a r c h m e s s a g e - o r i e n t e dm i d d l e w a r e ( m o m ) i st h e m o s ti m p o r t a n tb r a n c ho f m i d d l e w a r e ,i ta d o p t sm e s s a g e d r i v e nm o d e ,b a s e do nm e s s a g et r a n s m i s s i o n , p r o v i d i n ge f f i c i e n ta n dr e l i a b l ec o m m u n i c a t i o ns e r v i c ef o rd a t ae x c h a n g eb e t w e e n a p p l i c a t i o n s u n d e rn e t w o r ke n v i r o n m e n t h e t e r g e n e o u sp l a t f o r m m o m c a n e f f e c t i v e l ys h i e l dt h ed e t a i l so fr o c k b o t t o mn e t w o r kp r o t o c o l ,o p e r a t i o ns y s t e m a n ds oo n ,s ot h a ti tc a ns i m p l i f yt h ed e v e l o p m e n ta n di n t e g r a t i o no fe n t e r p r i s e a p p l i c a t i o nu n d e rh e t e r o g e n e o u se n v i r o n m e n t j m s ( j a v am e s s a g es e r v i c e ) p r o p o s e db ys u nm i c r o s y s t e m s ,i n c i st h ei n t e r f a c es t a n d a r do fm o m b a s e do n j a v at oc r e a t el o o s ec o u p l i n gm e s s a g es y s t e m t h et h e s i sd o e ss o m er e s e a r c h e so nc o m m o nc o m m u n i c a t i o nm o d e s ,t h r o u g h c a m p a r a t i o na n da n a l y s i s ,a n dd r a w ss o m ec h a r a c t e r sa n da d v a n t a g e so fj m s t h i s t h e s i sa n a l y z e st w om e s s a g i n gt y p e so fj m s :p 2 p ( p o i n t - t o - p o i n t ) b a s e do nq u e u e a n dp u b s u bb a s e do nt o p i c t h et h e s i si n t r o d u c e st h ee n t i r ef r a m e w o r ko fj m s a p ia n dj m sm e s s a g es t r u c t u r e b e s i d e st h a t ,t h et h e s i si n t r o d u c e st h eo p e n s o u r c eo fa c t i v e m qa n da n a l y z e st h ei m p l e m e n t a t i o no fi t sm e s s a g ep e r s i s t e n c e t h et h e s i sm a k e sar e s e a r c hm a i n l yo nm e s s a g et r a n s m i s s i o no fm o m t h e t h e s i sh a sa c h i e v e d3k i n d so fi m p l e m e n t a t i o n sw h i c ha r eb a s e do nd i f f e r e n t p r o g r a m m i n gc o n c e p t sa n dm a k e sd e e pc o m p a r i s o na n a l y s i sa n dr e s e a r c h t h e k e yp o i n to ft h e o r e t i c a lr e s e a r c ho ft h et h e s i si st od e e p l yu n d e r s t a n da n da n a l y z e t h ed e s i g nc o n c e p t so fs p r i n gf r a m e w o r k ,a n du s es p r i n gl i g h t w e i g h tf r a m e w o r k t ob u i l dm e s s a g i n gs y s t e mb a s e do nm d p s ( m e s s a g ed r i v e np o j o s ) t h et h e s i si n t r o d u c e st h e10f a l l a c i e sw h i l ed e v e l o p i n gad i s t r i b u t e ds y s t e m c o m b i n i n gw i t hs y s t e m s f u n c t i o n a lr e q u i r e m e n t s ,t h et h e s i se m p h s i z e so nt h e n e t w o r kc o n g e s t i o no fl a r g em o u n to fd a t aa n dt h ei n f o r m a t i o ns e c u r i t yo fn e t w o r t t r a n s m i s s i o n ,i tp r o p o s e sf e a s i b l es o l u t i o n s t h et h e s i s a l s od e s i g n st r a n s c a t i o n m a n a g e m e n t ,m u l t i t h r e a dm a n a g e m e n t a n d l o g g i n gm a n a g e m e n t t oi m p r o v e s y s t e mt h r o u g h p u ta n dm a i n t a i n a b i l i t y t h r o u g ht h e s es o l u t i o n sw ec a ni n t e g r a t e 西南交通大学硕士研究生学位论文第1 ii 页 t h e o r yi m p l e m e n t a t i o no fm e s s a g et r a n s m i s s i o nb a s e do nm d p s ,t om a k ei tb ea s a f e ,s t a b l e ,m a i n t a i n a b l em e s s a g et r a n s m i s s i o ns y s t e m k e y w o r d s :h e t e r o g e n e it y :m e s s a g e o rie n t e dmid diewar e :j m s :m d p s 西南交通大学曲南父遗大宇 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校 保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和 借阅。本人授权西南交通大学可以将本论文的全部或部分内容编入有关数据库 进行检索,可以采用影印、缩印或扫描等复印手段保存和汇编本学位论文。 本学位论文属于 1 保密口,在年解密后适用本授权书; 2 不保密一,使用本授权书。 ( 请在以上方框内打“4 ) 学位论文作者签名:夕内妈 日期:们护歹侈 燧引乎彳 日期:乒口7 口j - i 孚 西南交通大学硕士学位论文主要工作( 贡献) 声明 本人在学位论文中所做的主要工作或贡献如下: ( 1 ) 论文深入研究了几种常用通信模式的原理,阐明j m s 通信模式的特点 和优势,并详细介绍了j m sa p i 架构和j m s 消息结构。 ( 2 ) 论文选用a e t i v e m q 作为消息中间件系统的服务器,因此对a c t i v e m q 的实现原理和特性做了介绍,尤其是其消息持久化的实现方式。 ( 3 ) 论文选择消息中间件中的消息传递作为理论研究的着手点,实现了三 种消息传递的实现方案:基于面向对象的基本实现方案和基于m d b ( m e s s a g e d r i v e nb e a n ) 的实现方案,以及在深入研究s p r i n g 框架的思想的基础上着重研 究了基于s p r i n g 框架和m d p s ( m e s s a g ed r i v e np o j o s ) 的实现方案。论文从这 三种实现方案的编程思想角度,对其进行了深入的比较和分析。 ( 4 ) 在理论实现消息传递的基础上,论文又介绍了在设计分布式系统时应 该注意但是常常被忽略的现实问题,然后结合系统的功能需求提出了消息传递 系统需要解决的现实问题,并提出了切实可行的解决方案,对理论实现进行整 合,使之成为性能稳定、安全可靠的消息传递系统,论文还对整合后的消息传 递系统进行了功能测试。 本人郑重声明:所呈交的学位论文,是在导师指导下独立进行研究工作所 取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集 体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已 在文中作了明确说明。本人完全了解违反上述声明所引起的一切法律责任将由 本人承担。 学位论文作者签名:夕眦 日期: w l o 歹眵 西南交通大学硕士研究生学位论文第1 页 1 1 研究背景 第1 章绪论 伴随着计算机技术的迅速发展,应用程序的规模不断扩大,在互联网技术 兴起之后,许多应用程序需要在网络环境的异构平台上运行。在网络环境中, 通常存在多种硬件系统平台( 如p c 、工作站、小型机等) ,在这些硬件平台上又 存在各种各样系统软件( 如不同的操作系统、数据库、语言编译器等) ,同时这 些硬件平台还可能采用不同的网络协议和网络体系结构连接。在分布式异构环 境下,如何构建企业系统集成并且开发新的应用系统成为一个现实而困难的问 题。在这一背景之下,业界提出了中间件( m i d d l e w a r e ) 的概念。 中间件是位于平台( 硬件和操作系统) 和应用程序之间的通用服务,这些服 务具有标准统一的程序接口规范。只要遵守这些标准统一的接口规范,异构环 境下的不同的应用程序就能进行互操作( i n t e r o p e r a b i l i t y ) 。 消息中间件( m e s s a g e o r i e n t e dm i d d l e w a r e ,m o m ) 是中间件中非常重要的 分支,它利用可靠的消息传递机制完成分布式异构环境下应用问的数据通信。 虽然消息中间件作为一种主流的通信技术已出现多年,但是在j m s ( j a v a m e s s a g es e r v i c e ) 发布之前各个厂商都依据自己的标准开发产品,导致了不同的 产品间难以集成。直到s u n 发布了j a v a 消息服务规范,这一状况才有所改善。 j m s 规范只提供了一组与具体实现无关的接口和相关语义,由各个厂商来具体 实现。 基于j m s 开发消息中间件减少了程序员需要学习庞杂的概念的时间,却 提供了强大的功能,支持复杂的消息应用,可以实现松散耦合的异步通信,而 且可靠、可移植。因此,对基于j m s 的消息中间件的研究具有非常重要的研 究意义和市场价值。 1 2 中间件 1 2 1 中间件的定义 中问件( m i d d l e w a r e ) 是和操作系统、数据库并列的三大基础软件。定义有 很多种,其中被普遍接受的是i d c 的定义:中间件是一种独立的系统软件或服 务,分布式应用借助这种软件在不同的技术之间共享资源,中间件位于客户端 和服务器的操作系统之上,管理计算机资源和网络通信,如图1 1 所示。 中间件是基于分布式环境下数据处理或通信的软件,最突出的特点是其网 络通信功能。通常,中间件应具有以下的一些特点:满足大量应用的需要;运 西南交通大学硕士研究生学位论文第2 页 行于多种硬件和操作系统平台;支持分布式计算,提供跨网络、硬件和操作系 统平台的透明的交互功能;支持标准的协议和接口。 开发人员通过调用中间件系统提供的a p i ,实现异构环境下的通信,从而 屏蔽分布式系统中复杂的操作系统和网络协议等异构性。由于标准接口对于可 移植性和互操作性具有重要意义,因此,中间件已成为许多标准化工作的主要 部分。 ( 应用程序a ) ( 应用程序b ) 中间件 ( 分布式系统服务) 硬件操作系统a硬件操作系统b 1 2 2 中间件的分类 图1 1 中间件 中间件可以笼统的分为两大类:一类是底层中间件,用于支撑单个应用系 统或解决一类问题,包括事务中间件( t p m ) 、应用服务器( w a s ) 、消息中间件 ( m o m ) 、数据访问中间件( d a m ) 等;另一类是高层中间件,更多的是用于系统 整合,包括企业应用集成中间件( e a is u i t e s ) 、工作流中间件( w o r k f l o w ) 、f - i 户 中间件( p o r t a l ) 等,这类中间件通常会与多个应用系统通信,在系统中的层次较 高,并且大多是基于前一类底层中间件运行的。 1 3 消息中间件与j m s 1 3 1 消息中间件 消息中间件( m e s s a g e o r i e n t e dm i d d l e w a r e m o m ) 指的是利用高效、可靠的 消息传递机制进行与平台无关的数据交换,并基于数据通信来进行分布式系统 的集成的中间件【l 】。作为中间层软件,它为分布式系统中创建、发送和接收消 息提供了一套通用的方法,实现了分布式系统中高效可靠的跨平台数据传输。 消息中间件屏蔽了不同操作系统和网络协议的具体细节,面对规模和复杂度越 来越高的分布式系统,消息中间件显示出其优越性。 西南交通大学硕士研究生学位论文第3 页 1 3 2d m s 简介 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 实现可以提供基于t c p i p 、 h t t p 、u d p 或者其他协议,应用开发人员不必关心其实现细节。 基于j m s 的消息中间件有两种消息传递模式:基于队列( q u e u e ) 的点到点 ( p 2 p ) 模式和基于主题( t o p i c ) 的发布订阅( p u b s u b ) 模式,详细内容将在下一章 着重进行介绍。 1 3 3 产品现状 从上个世纪9 0 年代初,随着不同厂商消息中间件大量上市,消息中间件 技术得到了长足发展。目前,i b m 和b e a 的消息中间件产品在银行、证券、 电信等高端行业,以及i t 等行业中得到广泛应用。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 等厂商也都有自己的应用服务器;近年来,以 金蝶、东方通等公司为代表的国产中间件产品也发展迅速【l6 1 。 比较流行的j m s 商业软件和开源产品有i b mm q s e r i e s 、b e aw e b l o g i c 、 s o n i c m q 以及开源的a c t i v e m q 和o p e n j m s 。 1 4 研究内容与论文结构 1 4 1 研究内容 基于j m s 的消息中间件具有重要的研究意义和广阔的市场前景,但是由 于消息中间件系统非常庞大,涉及内容非常多,单靠一个人在短时间内是很难 完成的,故选其中的消息传递来进行深入研究,以点带面来研究消息中间件的 原理。论文还将通过分析开源的a c t i v e m q 来深入理解消息服务器的实现,并 且利用s p r i n g 框架的优秀编程思想完成消息传递的轻量级实现,同时还将结合 现实中的网络安全以及网络带宽等现实问题对系统进行整合,使之成为可靠稳 定的商务中间件系统。论文的研究内容如下: l 、论文研究当前常用的几种通信模式,通过对比和分析得出j m s 的特点 西南交通大学硕士研究生学位论文第4 页 和优势。分析j m s 提供的接口和语义,理解消息中间件的原理。 2 、论文通过研究a c t i v e m q 的源码,深入理解j m s 的具体实现,理解消 息发送、接收等过程,以及消息持久化的实现方式。 a c t i v e m q 是非常优秀的开源的j m s 提供者( j m sp r o v i d e r ) 。通过对它的源 码分析,一方面可以进一步理解j m s 的原理,另一方面还可以学习正规的编 程规范和优秀的设计模式与思想。 3 、论文理论研究的重点是在分析s p r i n g 框架的优秀思想基础上,设计并 实现基于m d p s ( m e s s a g ed r i v e np o j o s ) 的消息传递的轻量级实现方案,另外还 实现了基于面向对象思想的基本实现方案和基于m d b ( m e s s a g ed r i v e nb e a n ) 的实现方案。对这三种基于不同编程思想的实现方案进行深入的比较和分析。 s p r i n g 是当前最为流行的轻量级框架,提出并应用了很多值得深思的编程 理念,论文将在充分理解这些优秀编程理念的基础上,设计基于m d p s 的消息 传递系统。 4 、论文分析了设计分布式系统时常常被忽略的现实问题,结合消息传递 系统的功能需求,对消息传递系统中存在的现实问题提出切实可行解决方案。 当理论实现之后应用到现实系统中总会有很多的问题,这都是源于在理论 研究时已经做了很多假定,比如说假定网络是安全的,假定带宽是足够的等等, 然而系统的现实运行环境往往会使一个看似理想的系统设计变得不堪一击。因 此,论文将分析这些现实问题,解决这些被忽略但却非常重要的问题,对原有 方案进行整合,从而设计出经得起现实应用环境考验的解决方案。 1 4 2 论文结构 全文共分为5 章,结构安排如下: 第一章:绪论。本章首先介绍了本课题研究背景和意义,接着介绍了中间 件的定义和分类,着重介绍了消息中间件和j m s 的定义、意义和产品现状。 最后介绍了论文的研究内容和结构。 第二章:j a v a 消息服务与a c t i v e m q 分析。本章首先研究了几种常用的通 信模式,通过对比和原理分析,总结了j m s 的优势,接着详细介绍了j m s 规 范,最后简单介绍了a c t i v e m q 的特性,着重分析了a c t i v e m q 消息持久化的 实现方式。 第三章:基于m d p s 的消息传递的轻量级实现。本章是论文的理论研究重 点,首先实现了消息传递的基本实现方案和基于m d b 的实现方案。接着应用 s p r i n g 框架及其优秀的编程和设计思想构建了基于m d p s 的实现方案。最后, 对三种实现方案进行了深入的比较和分析。 西南交通大学硕士研究生学位论文第5 页 第四章:消息传递系统的设计与实现。本章是论文的重点,介绍了如何在 上一章的理论基础之上,结合现实中的诸多问题对现有实现进行整合,使之成 为可靠、稳定的商用系统。 第五章:论文的总结和展望。本章总结了论文的研究内容和取得的成果以 及今后的研究方向。 西南交通大学硕士研究生学位论文第6 页 第2 章j av a 消息服务与a c t iv e m q 分析 进程间通信( i p c ) 是消息中间件的基础部分,j m s 是进程间通信的模式之 一。本章将分析常用的通信模式,通过对比分析j m s 的特点和优势,然后介 绍j m sa p i 和消息结构,从而在整体上了解j m s 体系架构。论文选用开源的 a c t i v e m q 作为消息服务器,因此,本章的最后将简要介绍了a c t i v e m q 的特 性,着重介绍a c t i v e m q 的消息持久化的实现方式。 2 1 通信模式 2 1 1 常用的通信模式 1 、远程方法调用( r m i ) 从最基本的角度看,r m i 是j a v a 的远程过程调用( r p c ) 机制。与传统的r p c 相比,除了具有r p c 的优点之外,r m i 使用可序列化的j a v a 对象来编组数据。 r m i 应用程序通常包括两个独立的程序:服务器端应用程序和客户端应用 程序。服务器端应用程序将创建一个或多个远程对象,使这些远程对象能够被 引用,然后等待客户端调用这些远程对象的方法。客户端从服务器中得到一个 或者多个远程对象的本地代理,然后通过调用代理对象的方法来实现对远程对 象的方法调用,这样服务器端应用和客户端应用之问就能够进行通信。 值得一提的是,e j b2 0 或更早的版本通信的本质就是利用r m i ,尤其是 r m i i i o p ( i n t e r n e ti n t e r o r bp r o t o c o l ,特定于c o r b a 的二进制形式) 。 2 、公共对象请求代理程序架构( c o r b a ) c o r b a 与r m i 一样,也是r p c 机制的一种,是由o m g 组织制定的一种 标准的面向对象的应用程序的体系规范。c o r b a 制定了一系列a p i 、通信协 议和物件服务信息模型,使得异构环境下的应用程序能够互操作。这些应用 程序可以用不同的程序语言编写,运行在不同的平台上,从而保证了平台和位 置上的透明性。 但是c o r b a 过于复杂,尽管有多家供应商提供c o r b a 产品,但是仍找 不到能够单独为异构网络中所有环境提供实现的供应商,不同的c o r b a 实现 之间会出现缺乏互操作性的问题。 3 、j a v a 消息服务( j m s ) j m s 提供了用于消息传递的标准的a p i 和接口规范,它的设计目标是契约 式设计( d e s i g nb yc o n t r a c t ) ,提供一组标准的接口,消息传递系统的客户端可 以独立的使用这些接口,而不必关心基础消息系统的提供商,这样,客户端应 西南交通大学硕士研究生学位论文第7 页 用程序不仅可以跨计算机体系结构和操作系统进行移植,而且还可以跨消息传 递产品进行移植。 除此之外,通信模式还有j a x r p c ( 用于x m l 的j a v aa p i ) 、j a x m ( 用于 x m l 消息传递的j a v aa p i ) 、j x t a ( 聚焦于通过操作t c p i p 和或h t t p 信道, 来提供跨平台的p e e r t o p e e r 的功能) 等,由于不常用到,在此不再赘述。 2 1 2 数据驱动与行为驱动的通信 通信模式有两种不同的驱动方式,一种是行为驱动,一种是数据驱动】。 r m i 和c o r b a 等标准r p c 进行通信的过程是:客户端调用远程对象在本地的 代理对象的方法,然后方法的参数会被传递给远程的对象,进行处理,然后返 回处理结果,这种通信交互方式是行为驱动的。 通常,数据驱动也被称为消息驱动,因为数据驱动的方式的本质并不是方 法调用,而是向远程资源发送消息,但是并没有隐含远程对象将返回处理结果 的假设。实际上,在很多时候,如果没有响应,反而会好很多,因为这样可以 让发送端应用程序继续处理本地事务而不必等待通过网络返回处理结果。j m s 便是基于消息驱动的接口规范。 2 1 3 选择数据驱动的j m s 经过以上各节对通信方式的介绍后,论文在设计消息中间件时选择数据驱 动的j m s 主要有以下优点: 1 、面向消息 优先选择数据驱动而不是行为驱动【1 1 】。使用j m s 发送消息是以数据为中心 的,也就是说,客户端不必了解服务器端的任何规范,当服务器端的程序发生 改变时,客户端可以保持相对独立性。而在r m i 中,当服务器端的接口发生改 变时,客户端的本地代理必然要发生改变,客户端和服务器端的应用程序就紧 密耦合在一起。 2 、异步通信 使用j m s 发送消息时,客户端无需等待消息被处理,可以接着执行自己的 其他任务,这样就大大节省了时间,客户端的性能也有了极大的提高。 3 、确保投送 使用j m s 发送消息时,客户端可以确信消息能够被可靠的投递,即使在消 息发送时服务器无法使用,消息也会被存储起来,服务器重新使用之后仍然可 以将消息传递给接收者。 西南交通大学硕士研究生学位论文第8 页 2 2j m s 规范 本节将首先介绍j m s 两种消息传递模型:基于队列的点对点消息传递模 型和基于主题的发布订阅消息传递模型,接着详细介绍了j m sa p i 的整体结 构,最后介绍了j m s 消息结构。 2 2 1 消息模型 在j m s 中有两个重要的概念:消息代理( m e s s a g eb r o k e r ) 和目的地 ( d e s t i n a t i o n ) 。当发送端应用程序发送消息时,会将消息发送到消息代理,消息 代理可以确保消息能被投递到指定的消息目的地,同时可以返回发送者确认信 息,使之可以继续执行自己的其他业务【1 4 】。消息代理和目的地构成了消息服务 器。 j m s 支持两种消息传递模型:点对点( e 2 v ) 消息模型和发布订阅( p u b s u b ) 消息模型。j m s 有两种消息目的地类型:队列( q u e u e ) 和主题( t o p i c ) ,其中队 列对应的是点对点模型,主题对应的是发布订阅模型。 ( 1 ) 点对点消息传递模型 在点对点消息传递模型中,类似于网络开发人员心目中的t c p i p ,每个 消息都有一个发送者和一个接收者,如图2 1 所示。 图2 - l 点对点消恩模型 当消息代理接收到消息时,会将消息放入消息队列中。当接收者请求队列 中的下一条消息时,消息代理会从队列中取出消息,投递给接收者。因为消息 被投递后会从队列中删除,这样就可以保证消息只被投递给一个接收者。需注 意的是:消息队列中的每条消息只能被发送给一个接收者,但是这并不意味着 只能使用一个接收者从队列中获取消息。事实上,通常可以使用几个接收者来 侦听队列中的消息,只不过每个接收者只能接收自己需要的消息,因为点对点 消息传递模型中的一对一的关系是针对消息的,而不是针对目的地( 此处指队 列) 的。 ( 2 ) 发布订阅消息传递模型 发布订阅模型对于网络开发人员来说,则更像是u d p i p 。消息被发送给 一个主题( t o p i c ) ,与队列不同的是消息不再只被发送给一个接收者,该主题的 所有订阅者都会收到消息的副本,如图2 2 所示。 西南交通大学硕士研究生学位论文第9 页 2 2 2j m s a pi 图2 - 2 发布订阅消息模型 j m sa p i 是一组用于企业消息传递的接口规范和标准,是消息客户端和消 息传递系统通信时所需接口和类的一个抽象【5 0 】。 j m sa p i 可以分为5 个主要部分:公共( c o m m o n ) a p i 、点对点( p 2 p ) a p i 、 发布订阅( p s ) a p i 、消息( m e s s a g e ) a p i 和公共设施( c o m m o nf a c i l i t i e s ) a p i 。 1 、公共a p i 可以被用于向一个队列或一个主题发送消息,或从其中接收 消息,是点对点a p i 和发布订阅a p i 的父接口,是最抽象的接口。 j m sp r o v i d e r ( j n d i ) 图2 - 3j m s 公共a p i 结构图【5 0 】 j m sa p i 的核心设计模式是工厂方法模式,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 ) 的工厂类,它封装了管理员定义的连接配置参数,负责创建连接 对象。连接对象会话( s e s s i o n ) 的工厂类,它封装了客户端与j m s 服务器之间的 物理连接。会话是消息生产者( p r o d u c e r ) 、消息消费者 ( c o n s u m e r ) $ 1 消息( m e s s a g e ) 西南交通大学硕士研究生学位论文第1 0 页 等对象的工厂类,它是一个创建和消费消息的单线程上下文。公共a p i 接口的 结构图如图2 3 所示。 在公共接口中c o n n e c t i o n f a c t o r y 和d e s t i n a t i o n 需要使用j n d i 从消息服务 器处获得。其他接口则可以通过工厂方法在不同的a p i 接口中创建。公共接口 的类图如图2 4 所示。 图2 - 4j m s 公共a p i 核心接口类图 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 的工厂类。 c o n n e c t i o n :连接,封装了客户端与j m s 提供者之间的物理连接,是s e s s i o n 的工厂类。 s e s s i o n :会话,一个创建和消费消息的单线程上下文。用于创建消息生产 者( p r o d u c e r ) 、消息消费者( c o n s u m e r ) 矛l 消。皂, ( m e s s a g e ) 等。会话提供了一个事务 性的上下文,在这个上下文中,一组发送和接收被组合到了一个原子操作中, 保存着用于消息传送的事务性工作单元( t r a n s a c t i o n a lu n i t ) ,一个应用程序通常 只会有一个c o n n e c t i o n 对象,但是它可以有一个s e s s 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 r :消息生产者,客户端使用该对象向特定的目的地发送消 息。 m e s s a g e c o n s u m e r :消息消费者,客户端用该对象同步或异步地从特定的 目的地接收消息。 西南交通大学硕士研究生学位论文第11 页 2 、点对点a p i p 2 pa p i 是基于队列的接口和类,是公共a p i 的子类或子接口,其类图如 图2 5 所示。 图2 5p 2 pa p i 类图 q u e u e c o n n e c t i o n f a c t o r y :q u e u e c o n n e c t i o n 的工厂类,是c o n n e c t i o n f a c t o r y 接口的子类。 q u e u e c o n n e c t i o n :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 f a c t o r y 创建, 每个q u e u e c o n n e c t i o n 对象代表一个客户端到服务器的唯一连接。 q u e u e s e s s i o n :s e s s i o n 接e l 的子类型,由q u e u e c o n n e c t i o n 创建。该对象 是创建q u e u e r e c e i v e r ,q u e u e se n d e r ,q u e u e b r o w s e r 和t e m p o r a r y q u e u e 对象的 工厂。客户端可以创建多个q u e u e s e s s i o n 对象,从而实现对发送者、接受者及 其相关联事务更细粒度的控制。 q u e u e :d e s t i n a t i o n 的子类,封装了一个j m s 提供者专用的队列名,是消 息服务器上用作实际队列的句柄或标识的受管对象( a d m i n i s t e r e do b j e c t ) 。多个 接受者可以连接到一个队列,但是该队列中的每条消息只能被一个接收者所消 费。队列中的消息依序排列,因此消费者可以按照消息服务器将该消息放入队 列的顺序来接收消息。 q u e u e s e n d e r :m e s s a g e p r o d u c e r 接口的子类,由q u e u e s e s s i o n 创建,客户 端用该对象向一个q u e u e 目的地发送消息。 q u e u e r e c e i v e r :m e s s a g e c o n s u m e r 接口的子类,由q u e u e s e s s i o n 为一个 特定队列而创建的,客户端用该对象从一个队列接收消息。队列中的每条消息 只会传送给一个队列接收者。多个接收者可以连接到一个队列,但是只有该队 列的接收者之一能够接收队列中的消息。 西南交通大学硕士研究生学位论文第12 页 q u e u e b r o w s e r :客户端使用该对象来浏览队列上的消息,实际上未必要真 正消费这些消息,因而不会把它们在队列中删除。队列浏览可以监测来自一个 管理工具的队列内容,或者浏览多条消息,从中找出一条比队列头部更为重要 的消息。 t e m p o r a r y q u e u e :由q u e u e s e s s i o n 创建的,临时队列与创建该队列的 q u e u e s e s s i o n 的连接关联在一起。它仅在会话连接期间活动,而且可以保证在 所有连接中是唯一的。只有和它关联的客户端连接期间是活动的,它才被激活。 在其他方面临时队列就像是一个“正常的 队列。 3 、发布订阅a p i p sa p i 是基于主题的发布与订阅的接口和类,其类图如图2 - 6 所示。 图2 - 6p sa p i 类图 t o p i c 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 f a c t o r y 的子类,创建t o p i c 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 :由t o p i c c o n n e c t i o n f a c t o r y 创建,是一个j m s 发布订阅 提供者的活动连接,是c o n n e c t i o n 的子类。 t o p i c s e s s i o n :由t o p i c c o n n e c t i o n 创建,是t o p i c p u b l i s h e r 、t o p i c s u b s c r i b e r 和t e m p o r a r y t o p i c 等对象的工厂类。客户端可以创建多个t o p i c s e s s i o n 对象, 为发布者、订阅者及其关联事务提供更细粒度的控制。t o p i c s e s s i o n 是s e s s i o n 接口的子类。 t o p i c :封装了一个j m s 提供者专用的主题名,是消息服务器上用作实际主 题的句柄或标识的一个受管对象。j m s 客户端向一个主题发送消,皂, ( m e s s a g e ) 时,订阅该主题的所有客户端都会接收到该消息的副本。t o p i c 是d e s t i n a t i o n 接口的子类。 西南交通大学硕士研究生学位论文第13 页 t o p i c p u b l i s h e r - 由t o p i c s e s s i o n 创建,客户端用该对象向一个t o p i c 发布 消息。t o p i c p u b l i s h e r 是m e s s a g e p r o d u c e r 接口的子类。 t o p i c s u b s c r i b e r - m e s s a g e c o n s u m e r 接口的子类,由t o p i c s e s s i o n 为特定 的主题而创建的,客户端用该对象从一个主题接收消息,不需要因为新消息而 轮询主题。 4 、消息a p i 消息a p i 定义了消息接口和具体的消息类型,其类图如图2 7 所示。 图2 7

温馨提示

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

评论

0/150

提交评论