




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于j m s 的消息中间件的研究与实现 摘要 消息中间件是一种由消息传送机制或消息队列模式组成的中间件技术,利用高效可靠 的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。作 为一个中间层软件,它为分布式系统中创建、发送和接收消息提供了一套可靠通用的方法, 实现了分布式系统中可靠的、高效的、实时的跨平台数据传输。面对规模和复杂度都越来 越高的分布式系统,消息中间件技术也逐渐显示出了它的优越性。但由于没有统一的规范 和标准,基于消息中间件的应用不可移植,不同的消息中间件也不能互操作,这大大阻碍 了消息中间件的发展。 j a v a 消息服务( j m s ) 是s u n 公司提出的旨在统一各种消息中间件系统接口的规范。它 有效地屏蔽了网络协议、应用实现的具体技术、操作系统和数据库等细节,目前已被各大 软件公司和开源组织所接受,成为了工业界的事实标准。本文在分析和总结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 n d l 名字服务,完成了会话层与表示层的封装,为应用层的网络应 用提供了透明接口;还实现了线程池管理、事件监听和日志管理等机制,提高了系统的服 务质量。本文的研究内容具有一定的理论和现实意义。 关键宇:消息中间件,j a v a 消息服务,p t p ,p u b s u b ,消息过滤 l l i 基于j m s 的消息中间件的研究与实现 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 e ( m o m ) i sam i d d l e w a r et e c h n o l o g yc o m p o s e do fm e s s a g i n g m e c h a n i s mo rm e s s a g eq u e u em o d e l s i tp r o v i d e sh i g h l ye f f i c i e n ta n dr e l i a b l e m e s s a g i n g t r a n s m i s s i o nf o rc o m m u n i c a t i o na c r o s sh e t e r o g e n e o u sp l a t f o r m s ,a n dc o n d u c t st h ei n t e g r a t i o no f d i s t r i b u t e ds y s t e mb a s e do nd a t ac o m m u n i c a t i o n s m o m ,a sam i d d l es o f t w a r e ,p r o v i d e sas u i t o fr e l i a b l ea n du n i v e r s a lm e t h o df o rc r e a t i n gm e s s a g e sa n ds e n d i n gm e s s a g e sa n dr e c e i v i n g m e s s a g e si nd i s t r i b u t e ds y s t e m i ta c h i e v e st h er e l i a b l e ,e f f i c i e n ta n dr e a l t i m ec r o s s p l a t f o r m d a t at r a n s m i s s i o ni nd i s t r i b u t e ds y s t e m f a c e dw i t ht h ei n c r e a s e ds c a l ea n dc o m p l e x i t yo f d i s t r i b u t e ds y s t e m ,m e s s a g e o r i e n t e dm i d d l e w a r et e c h n o l o g yg r a d u a l l ys h o w si t s s u p e r i o r i t y h o w e v e r , a st h e r ei s n ou n i f o r mn o r m sa n ds t a n d a r d s ,t h e a p p l i c a t i o n b a s e do nt h e m e s s a g e o r i e n t e dm i d d l e w a r ec a nn o tb et r a n s p l a n t e d ,a n dd i f f e r e n tm i d d l e w a r ec a nn o t m a n i p u l a t ew i t he a c ho t h e r , w h i c hg r e a t l yh i n d e r e dt h ed e v e l o p m e n to fm 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 ( j m s ) i sas p e c i f i c a t i o nj a v a - b a s e di n t e r f a c et ot h em e s s a g es e r v i c e s o fam o mo fs o m eo t h e rp r o v i d e r sa n dw a sp r o p o s e db ys u nm i c r o s y s t e m s i ts h i e l d st h e p r o t o c o lo fn e t w o r k , p r o g r a m m i n gl a n g u a g e ,o sa n dd a t a b a s ea n di sb e c o m i n gt h es t a n d a r di n i n d u s t r y b a s e do nt h ea 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 ss t u d yo n m e s s a g ef i l t e ri nj m sa n dt h ed e s i g no fj m sm e s s a g e - o r i e n t e dm i d d l e w a r e f i r s t ,t h i st h e s i sp o i n t so u tt h er e l a t i o n s h i pb e t w e e nt h em e s s a g e - o r i e n t e dm i d d l e w a r ea n d j m sa sw e l la so nt h ej m si nd e t a i l ,i n c l u d i n gt h ec o m p o s i t i o no fj m sa p p l i c a t i o n s ,t h e c o m p o s i t i o no fj m sm e s s a g e s ,t w om e s s a g i n gm o d e l so fj m sa n dt h ea p p l i c a t i o ni n t e r f a c e so f j m s a i m e da tt h ei n e f f i c i e n t p r o b l e m o ft r a d i t i o n a l m e s s a g em a t c h i n ga l g o r i t h m o f p u b l i s h s u b s c r i b em o d e li nj m sm e s s a g e o r i e n t e dm i d d l e w a r e ,a ni m p r o v e da l g o r i t h mo f c o u n t i n ga l g o r i t h mi nj m si ss u g g e s t e d am e s s a g e o r i e n t e dm i d d l e w a r eb a s e do nj m si s d e s i g n e d a n di m p l e m e n t e d a saj m sp r o v i d e r , t h i s s y s t e mc r e a t e sp o i n t t o - p o i n ta n d p u b l i s h s u b s c r i b em e s s a g i n gm o d e l ,a c h i e v e sa l lo ft h ej m sa p is t a n d a r d s ,p r o v i d e sp e r s i s t e n t m e s s a g i n ga n dm e s s a g es l e c t o r i tp r o v i d e sar e l i a b l ec o m m u n i c a t i o na n dj n d is e r v i c e ,w r a p st h e l o w e rl a y e ro fn e t w o r ka n dp r o v i d e st r a n s p a r e n ti n t e r f a c e sf o ra p p l i c a t i o nl a y e r b e s i d e s ,s e v e r a l s e r v i c e s ,l i k et h r e a dp o o lm a n a g e m e n t ,e v e n tl i s t e n e ra n dl o gm a n a g e m e n ta r ea l s op r o v i d e si n t h i ss y s t e m ,w h i c hi m p r o v e st h eq u a l i t yo fs e r v i c e t h es i g n i f i c a n c eo ft h ec o n t e n ts t u d i e di nt h i s t h e s i si st h e o r e t i c a la n dp r a c t i c a l 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 t p , p u b s u b ,m e s s a g ef i l t e r 基于j m s 的消恩中间件的研究与实现 曲阜师范大学博士硕士学位论文原创性说明 ( 在口划“4 ”) 本人郑重声明:此处所提交的博士口硕士妙论文基于j m s 的消息 中间件的研究与实现,是本人在导师指导下,在曲阜师范大学攻读博士口 硕士囱学位期间独立进行研究工作所取得的成果。论文中除注明部分外不包 含他人已经发表或撰写的研究成果。对本文的研究工作做出重要贡献的个人 和集体,均己在文中已明确的方式注明。本声明的法律结果将完全由本人承 担。 作者签名:米拐战 日期:如。1 i 7 七留 曲阜师范大学博士硕士学位论文使用授权书 ( 在口划“4 ”) 基于j m s 的消息中间件的研究与实现系本人在曲阜师范大学攻读博士口 硕士d 学位期间,在导师指导下完成的博士口硕士曰每位论文。本论文的 研究成果归曲阜师范大学所有,本论文的研究内容不得以其他单位的名义发 表。本人完全了解曲阜师范大学关于保存、使用学位论文的规定,同意学校 保留并向有关部门送交论文的复印件和电子版本,允许论文被查阅和借阅。 本人授权曲阜师范大学,可以采用影印或其他复制手段保存论文,可以公开 发表论文的全部或部分内容。 作者签名:来荔礅 导师签名:嘞、 1 1 日期:9 , o o 宫啦9 日期: 趴。g 七留 基于j m s 的消息中间件的研究与实现 1 1 引言 第一章绪论 最早的计算机系统大多是单机系统,多个用户是通过联机终端来访问的。网络出现以 后,产生了c l i e n t s e r v e r 的计算服务模式,多个客户端可以共享数据库服务器和打印服务 器等。随着网络更进一步的发展,许多软件需要在不同厂家的网络产品、硬件平台、网络 协议及异构环境下运行,应用的规模也从局域网发展到广域网。在这种情况下,c l i e n t s e r v e r 模式的局限性逐渐暴露出来,越来越需要一种新的技术来解决这些问题。同时,对于用户 来说,随着对各种旧应用的不断扩充和新应用的不断增加,当企业i t 部门面临诸如不同硬 件平台、不同网络环境、不同数据库之间的互操作,多种应用模式并存,系统效率过低, 传输不可靠,数据加密和开发周期过长等等这些问题时,单纯依赖传统的系统软件或工具 软件提供的功能已不能满足要求。用户迫切地需要一种简捷的、屏蔽和疏通了复杂的技术 细节,可使企业计算系统的开发、部署与管理变的轻松和谐的企业应用新方式。于是,中 间件应运而生,并开始在i t 应用中发挥其无可替代的承上启下的作用。中间件位于客户机、 服务器的操作系统、网络和数据库之上,分布式软件之下,管理计算机资源和网络通信。 消息中间件( 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 d c 2 0 0 2 年的市场调查显示,全球消息中间件的销售额为2 4 5 亿美元, 年平均增长4 6 ,其中亚太地区的销售额已经达到了3 6 亿美元,而且这种趋势将会在以 后若干年内继续延续【l j 。 1 2 国内外的应用研究现状 消息中问件最突出的特点就是能够提供数据传输的可靠性和高效性,主要解决分布式 系统的数据传输需求。对用户数据整合应用阶段而言,最重要的一点就是将数据从一点传 输到另一点。现在市场上已有相应的数据整合工具,这些数据整合工具中通常包含数据抽 取模块、数据加工模块、数据传输模块和数据加载模块。其中,数据传输模块多由消息中 间件来担当,并在数据整合过程中发挥着不可替代的作用。目前比较有代表性的消息中间 件产品有:i b m 的m q s e r i e s t 2 】l 3 1 、m i c r o s o f t 的m s m q l 4 1 、东方通t o n g l i n k q 1 5 】等。 基于j m s 的消息中间件的研究与实现 1 2 1m q s e r i e s i b m 的m q s e r i e s 中间件产品,以消息队列的方式为分布式环境下实现程序之问的通 信提供了灵活、快速并且易于使用的解决方案。它的功能是控制和管理一个集成的系统, 便于组成这个系统的多个分支应用之间通过传递消息来完成整个工作流程。它基本上由一 个信息传输系统和一个应用程序接口组成,其资源是消息和队列。 m q s e r i e s 的关键功能之一是确保信息的可靠传输,即使在网络通信不可靠或出现异常 时也能保证信息的传输。其异步消息处理技术能够在网络或通信应用程序本身处于“忙” 状态或发生故障时,保证系统之间的信息既不会丢失,也不会阻塞。这样的可靠性是非常 关键的,否则大量的金钱和客户信誉就会面临极大的损害。同时,m q s e r i e s 是灵活的应用 程序通信方案,它支持所有的主要计算平台和通信模式,也能够支持先进的技术,拥有连 接至其它i b m 主要产品的接口。 i b m 的m q s e r i e s 系列市场占有率高,性能稳定,但传输消息大小受限。另外,该开 发系统价格昂贵,在我国一般公司、企业等单位的使用也受到一定的限制。 1 2 2 微软的m s m q 微软消息队列可以在应用之间实现推送式的商务传输环境,即使在可靠性不高的网络 上也能建立可靠的应用,具有易用和应用高度集成的特点。 由于完全支持c o m 、动态目录服务构架以及内置集中式系统管理,m s m q 成为 w i n d o w s2 0 0 0s e r v e r 上最容易使用、部署和管理的消息队列产品。它提供全面的消息队列 功能,如可靠而有弹性的消息传送、基于开销的消息路由以及对事务处理的完全支持。 m s m q 通过微软的m s m q m q s e r i e s 桥来提供与i b mm q s e r i e s 紧密的互操作性,同样通 过l e v e l8 系统的产品提供与其它消息队列产品的连接。 但它存在的不足是:它要求n t 4 0 以上,m q l 0 是基于s q l 的,其性能低且不稳定。 w i n d o w s2 0 0 0 版本以后才开始实用,但也只能开发出县级以下的开发系统,开发系统级别 受到了一定限制。 1 2 3 东方通t o n g l i n k q t o n g l i n k q 是由国内软件厂商东方通公司开发的消息中间件,t o n g l i n k q 是国内 最成熟、应用最广泛的消息中间件平台产品之一,它为应用提供了一个简单易用、高效可 靠的分布式数据传输开发和运行平台。利用t o n g l i n k q 可以方便快速的设计并开发出高 效可靠的分布式应用系统。 2 基于j m s 的消息中间件的研究与实现 t o n g l i n k q 系统以节点来确定物理网络中的每一个点( 网点和接入机器设备) ,并通过 对节点的配置来构建这些节点之间的关系,从而形成树型或网状的t o n g l i n k q 逻辑网络 通信结构。这完全类似于我国目前的行政机构级别划分处理,使系统更加形象好用。 t o n g l i n k q 提供集群等机制,它可以在应用程序之间提供数据的跨平台可靠传送, 这些消息可以在不同的网络协议、不同的计算机系统和不同的应用软件之间传递。它支持 消息的同步异步和可靠传输,支持消息的断点续传,支持消息查询控制,支持应用管理, 支持动态密钥交换、r c 5 加密、节点认证、安全认证,支持c 、c + + 、j a v a 、d e l p h i 和 v b 等多种应用开发工具。它还提供了详细的日志机制,登记系统的日常运行信息、传输 的数据包和文件信息以及系统出错提示等。可分级的日志方式,对监控、故障处理、系统 开发调试和维护提供了方便。 3 论文的组织结构 基于以上所述的研究背景,出于对当前技术热点的把握,本论文主要对消息中间件技 术和由s u n 公司提出的消息中间件的标准规范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 的消息中间件的研究与实现 2 1 消息中间件的定义 第二章消息中间件 目前对消息中间件( m o m ) 的定义还未形成统一的行业标准,我国也正在加快对消息中 间件技术的标准化研究工作1 6 儿7 1 。一般认为,消息中间件是一种由消息传送机制或消息队 列模式组成的中间件技术,利用高效可靠的消息传递机制进行平台无关的数据交流,并基 于数据通信来进行分布式系统的集成。与其它中间件技术不同( 例如o r b 8 】和r p c i 9 】) , 消息中间件一般并不要求系统具备一个可靠的底部传输层,而是通过消息的形式收发应用 程序数据来连接运行于不同系统上的应用程序。消息既可以同步传送也可以异步传送。在 异步方式下,应用程序并不需要消息即时即刻传送到对方,只需由消息中间件来确保把信 息以消息的方式传送到适当的目的地并且只传送一次。 2 2 消息中间件的特点 ( 1 ) 异步通信 通讯程序可在不同的时间运行,程序不在网络上直接相互通话,而是间接地将消息放 入消息队列,因为程序间没有直接的联系,所以他们不必同时运行。消息放入适当的队列 时,目标程序甚至根本不需要正在运行,即使目标程序在运行,也不意味着要立即处理该 消息。 ( 2 ) 多种通信方式 对应用程序的结构没有约束,在复杂的应用场合中,通讯程序之间不仅可以是一对一 的关系,还可以进行一对多和多对多方式,甚至是上述多种方式的组合。多种通讯方式的 构造并没有增加应用程序的复杂性。 ( 3 ) 可靠的消息发送 应用程序发送消息时,消息发送者和接收者不一定要求同时在线,消息中间件可以确 保消息接收者在掉线的情况下消息不会丢失。消息分为非永久。l 生( n o n p e r s i s t e n t ) 消息和永久 性( p e r s i s t e n t ) 消息两种类型。非永久性消息存储在内存中,当系统突然掉电再重新启动时, 将不可恢复。如果用户对于消息的可靠性要求不高,比较侧重性能表现时,则可以采用该 种类型的消息。永久性消息是存储在硬盘上,并且记录操作同志,它具有高可靠性,在网 络和系统发生故障等情况下都能确保消息不丢失、不重复。 ( 4 ) 程序与网络复杂性相隔离 程序将消息放入消息队列或从消息队列中取出消息进行通讯,与此关联的全部活动, 比如维护消息队列、维护程序和队列之间的关系、处理网络的重新启动和在网络中移动消 基于j m s 的消息中间件的研究与实现 息等都由m o m 来完成,程序相互之间不直接进行通话,并且他们不涉及网络通讯的复杂 性。 ( 5 ) 消息路由服务 消息通过该服务能够以最短路径( 或最低代价) 到达消息目的地。系统管理员只需定义 每条路径的代价,消息中间件就可以为消息计算出最低代价的路径。而且消息路由服务可 以避免单点失效,因此非常适合用于不可靠的网络环境中。 消息中间件减少了开发跨平台和网络协议软件的复杂性。它屏蔽了不同操作系统和网 络协议的具体细节,通过提供a p i 实现可以提高系统结构的灵活性以及实现异构平台的互 操作。所有应用之间的消息通信都通过消息服务器进行,新的应用程序可以不经过重新编 译和重新连接就可以部署到分布式系统中。这种通信的形式极大的降低了分布式系统的设 计和实现的复杂性。 2 3 消息中间件与j m s 消息中间件作为一个中间层软件,它为分布式系统中创建、发送、接收消息提供了一 套可靠通用的方法,实现了分布式系统中可靠的、高效的、实时的跨平台数据传输。面对 规模和复杂度都越来越高的分布式系统,消息中间件技术也逐渐显示出了它的优越性。但 由于没有统一的规范和标准,基于消息中间件的应用不可移植,不同的消息中间件也不能 互操作,这大大阻碍了消息中间件的发展。j m s 是s u n 公司提出的旨在统一各种消息中 间件系统接口的规范。j m s 定义了一套通用的接口和相关语义,提供了诸如持久、验证和 事务的消息服务,它最主要的目的是允许j a v a 应用程序访问现有的消息中间件。j m s 规范 没有指定消息节点间所使用的通讯底层协议,来保证应用开发人员不用与其细节打交道, 一个特定的j m s 实现可能提供基于t c p i p ,h t t p ,u d p 或者其它的协议【lo 。现在j m s 已成为j 2 e e 平台的一个重要组成部分,应用程序开发人员可以将消息传递用于使用j 2 e e a p i 的组件。 以往面向消息的中间件产品都依赖于各自所运行的操作平台,因而限制了其运行的范 围,使企业应用程序仅限于单一的硬件和软件平台。j m s 技术成功地解决了这一问题,为 企业应用程序间进行消息服务提供了一个可运行于不同平台的、安全可靠和高效的解决方 案。现在,基于j m s 的消息中间件技术已被广泛应用于企业应用集成【l 、应用程序间消息 服务【1 2 】、数据库管理【1 3 】、数据同步1 4 1 及电子商到1 5 】【1 6 1 等方面。j m s 技术的应用,很好地 解决了企业应用程序开发中的移动性、规模化、资源利用、组件重用以及分布式事务等关 键问题,为把孤立的应用变成互相关联的、健壮的平台提供了一个合理的基础。 基于j m s 的消息中间件的研究与实现 3 1 什么是j m s 第三章j m s 技术研究 j m s 即j a v a 消息服务( j a v am e s s a g es e r v i c e ) 是一组j a v a 应用程序接1 ( j a v aa p i ) ,它 提供创建、发送、接收及读取消息的服务。j m sa p i 定义了一组公共的应用程序接口和相 应语法,使得j a v a 程序能够和其他消息组件进行通信。 j m s 的目的就是为消息系统的客户提供一个固定的接口,使消息系统客户与底层的消 息提供者无关。这样,客户端的应用程序不仅可以在不同的平台之间移植,还能在不同的 消息系统产品之间移植【l n 。j m s 客户端都是建立在j a v a 技术基础之上的,从而也能够使用 其他j a v aa p i ,如j d b c 数据库连接、j a v ab e a n 组件模型、j n d i 命名服务、j t a 客户端事 务处理控制以及j 2 s e 和j 2 e ea p i 来实现企业级应用服务程序。 j m s 本身不是消息服务,它还必须有一个可供连接的消息服务器,在本文中所指的j m s 提供者就是指底层的消息服务器及其j m s 接口。 3 2j m s 应用程序的组成 一个j m s 应用程序n 叫主要是由以下几个部分组成: ( 1 ) j m sc l i e n t ( j m s 客户机) :用来发送和接收消息的j a v a 语言程序。 ( 2 ) m e s s a g e s ( 消息) :客户机之间所交换的信息。 ( 3 ) j m sp r o v i d e r ( j m s 提供者) :提供j m s 客户机应用程序上的j m sa p i 的实现。 j m s 提供者还提供实现消息的路由和消息传递服务器。客户机应用程序和消息传递服务器 共同被作为j m s 提供者。 ( 4 ) a d m i n i s t r a t o ro b j e c t s ( 受管对象) :j m s 被管理的对象是包含j m s 配置信息的 对象,这些对象由j m s 管理者创建,并且最终由j m s 客户端使用。它们使管理员在企业 中实践j m s 应用。尽管管理对象接口没有显示说明依赖于j n d i ,不过j m s 建立了一种惯 例,那就是j m s 客户端通过使用j n d i 在命名空间中查找管理对象。j m s 没有定义命名策 略,管理员可以将被管理的对象放在任何一个命名空间中。这种将j m s 和管理分离的策 略提供了几种好处: 它为j m s 客户端隐藏了j m s 提供者规定的配置细节。 它将j m s 管理信息抽象为j a v a 对象,这样可以很容易地通过一个通用的管理控制 台来组织和管理这些对象。 使用j n d i 来提供通用的命名服务,这意味着j m s 提供者能够发布一个可到处运行 的管理实现。 6 基于j m s 的消息中间件的研究与实现 j m s 定义了两个被管理对象,即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 m s 提供者 能够提供工具,使得管理员能够在j n d l 名字空间中创建和配置被管理的对象。j m s 提供 者实现的被管理对象应当是j a v a x n a m i n g r e f e r e n c e a b l e 和j a v a i o s e r i a l i z a b l e ,这样它们可 以被存储在所有的j n d i 命名环境中。 连接工厂( c o n n e c t i o n f a c t o r y ) :客户用来创建与提供者的连接的对象,它封装一 套己经被管理员定义的连接配置参数,包括所有系统所需的配置信息,定义了j m s 提供者运行的主机地址、监听端口和连接的客户i d 等。 目的地( d e s t i n a t i o n ) :一种客户端用来指定消息发送的目的地或者得到所收消息的 发送源头的对象。消息发送者发送消息到目的地对象上,而消息接收者从该目的地 对象上接收消息。在点对点消息传递域中,目的地被称为队列;在发布订阅消息传 递域中,目的地被称为主题。 j m s 应用程序的大致构成及其相互关系,如图3 1 所示。 。 j , 绑定 j m s 提供者j m s 客户机 3 3j m s 消息模型 3 3 1 目标 图3 1j m sa d m i n i s t r a t o r j m s 消息模型目标 9 1 如下: ( 1 ) 提供一个单独的、统一的消息a p i ; ( 2 ) 提供一套a p i 用于匹配已有的、非j m s 应用所使用的格式: ( 3 ) 支持跨操作系统、机器结构以及计算机语言的异构应用的开发; ( 4 ) 支持包含j a v a 对象的消息; ( 5 ) 支持包含可扩展标记语言( x m l ) 页面的消息。 7 基于j m s 的消息中间件的研究与实现 3 3 2j m s 消息 如图3 2 所示,j m s 消息由消息头( h e a d e r ) 、消息属性( p r o p e r t i e s ) 、消息体( b o d y ) 三部分组成。 图3 - 2j m s 消息组成 ( 1 ) 消息头:所有的消息都支持一套相同的头字段。头字段包含了客户端和提供者 用来路由和识别消息的数据。 ( 2 ) 消息属性:在标准头字段之外提供一种内建的设施用于给消息添加可选的头字 段。消息属性是一个“名一值对,消息属性部分包含一些标准的以及应用特定的域,消 息选择器依据这些信息来过滤收到的消息。除了消息头中定义好的标准属性外,j m s 提供 一种机制增加新的属性到消息头中,这种新的属性有三种类型: 应用指定的属性:提供一种为消息添加应用程序指定属性的机制。 标准属性:j m s 定义的一些标准属性,即一些有效的可选头字段。 提供商指定的属性:在集成j m s 客户端和提供商内在客户端时可能需要使用提供商 指定的属性,j m s 为这些定义了命名约定。 ( 3 ) 消息体:j m s 定义了几种类型的消息体,这些消息体覆盖了目前常用的几种消 息样式。 3 3 3 消息头 头字段包含了客户端和提供者( p r o v i d e r ) 用来路由和识别消息的数据。消息头的完整 信息将被传递给所有接收到消息的j m s 客户端。j m s 没有定义传递给非j m s 客户端的消 息头字段。 ( 1 ) j m s d e s t i n a t i o n j m s d e s t i n a t i o n 消息头字段包含了消息被发送到的目的地。当消息被发出的时候,这 个字段被忽略。在消息发送结束后,消息持有了由发送方指定的目的地对象。当一个消息 被接收的时候,目的地对象的值必须与它发出时候赋予的值相等。 ( 2 ) j m s d e l i v e r y m o d e j m s d e l i v e r y m o d e 头字段包含了消息发送时指定的传送模式信息。在消息被发送的时 候,这个字段被忽略,当消息发送完成后,它持有了由发送方所指定的传送模式。 8 基于j m s 的消息中间件的研究与实现 ( 3 ) j m s m e s s a g e l d j m s m e s s a g e l d 头字段包含了一个唯一的标识每一条由提供者发出消息的值。在消息 被发送的时候,j m s m e s s a g e l d 被忽略,当s e n d 方法返回时,这个字段就包含了一个由提 供者赋予的值。所有的j m s m e s s a g e i d 值必须以前缀i d :开头。不过,不必保证消息i d 值在跨越不同的提供者时也保持唯一。 ( 4 ) 。j m s t i m e s t a m p j m s t i m e s t a m p 头字段含有消息被交给提供者去发送的时间。这个时间不是消息实际 被传送的时间。因为事务或其他客户端对消息的排队导致实际传送消息可能会延迟。在消 息被发出的时候,j m s t i m e s t a m p 被忽略。当发送方法返回的时候,这个字段包含了在发 送方法被调用和返回时问段之中的一个时间值。 ( 5 ) j m s c o r r e l a t i o n l d 客户端能用j m s c o r r e l a t i o n l d 头字段将一个消息同另一个消息相连接。一个典型的用 法就是将一个响应消息同它的请求消息相连接。j m s c o r r e l a t i o n i d 能够持有以下中的一种: 提供者指定的消息i d 。 应用指定的字符串。 提供者本地的字节值。 因为每个由j m s 提供者发出的消息都被赋予一个消息i d 值,这非常便于通过消息i d 进行消息之间的连接。所有的消息i d 值必须以i d :作为前缀。 如果提供者支持本地概念上的c o r r e l a t i o ni d ( 相关联i d ) ,j m s 客户端可能需要赋予 j m s c o r r e l a t i o n l d 一个能够匹配非j m s 客户端要求的值。b y t e 值就是用于这个目的。没有 本地c o r r e l a t i o ni d 值的j m s 提供者不需要支持b y t e 值。使用b y t e 导致应用不具备可移 植性。 s e t j m s c o r r e l a t i o n l d a s b y t e s ( ) 和g e t j m s c o r r e l a t i o n l d a s b y t e s ( ) 方法将抛出异常 l a n g u n s u p p o r t e d o p e r a t i o n e x c e p t i o n 。 ( 6 ) j m s r e p l y t o j m s r e p l y t o 头字段包含一个由客户端在发送消息的时候提供的目的地信息。这个目 的地就是回复这个消息的目的地。发出的消息带有一个n u l lj m s r e p l y t o 值可能表示一些 事件或者它们只是一些发送者认为别人会感兴趣的数据。带有j m s r e p l y t o 值的消息通常 期望能有一个响应,这个响应是可选的,它由客户端决定。 ( 7 ) j m s r e d e l i v e r e d 如果客户端接收的消息带有j m s r e d e l i v e r e d 指示符设置,那么可能( 但不一定) 这个 消息过去被发送了但是没有被确认。通常,如果消息被再次发送,提供者必须设置 j m s r e d e l i v e r e d 消息头字段。 ( 8 ) j m s t y p e 9 基于j m s 的消息中间件的研究与实现 j m s t y p e 头字段包含了由客户端在发送消息时提供的消息类型标识。一些消息提供者 使用消息库来存储由应用发送的消息定义。t y p e 头字段可以引用提供者库中的消息定义。 ( 9 ) j m s e x p i r a t i o n 在消息被发送的时候,它的过期时间是发送方指定的t i m e t o 1 i v e 值加上当前的g m t 值之和。在发送方法返回时,这个消息的j m s e x p i r a t i o n 头字段就包含了这个值。当消息 被接收时,它的j m s e x p i r a t i o n 应含有相同的值。如果t i m e t o 1 i v e 被设置为0 ,过期时间 被设置为o ,则表明这个消息永不过期。当g m t 晚于了一个未被发送的消息的过期时间 时,这个消息将被销毁。j m s 没有定义消息过期通知,客户端不会接收到过期的消息,但 是j m s 不保证那样的事情不会发生。 ( 1 0 ) j m s p r i o r i t y 头字段包含了消息的优先级。在消息被发送的时候,这个字段被忽略,当消息发送完 成后,它持有了发送方指定的值。j m s 定义了1 0 级的优先级,0 作为最低级,9 是最高级。 除此之外,客户端可以认为0 4 级是普通优先级,而5 - 9 作为加速优先级。j m s 不强迫提 供者严格实现消息的优先级顺序,但我们一般实现加速消息先于普通消息。 ( 1 1 ) 重载消息头字段 j m s 允许管理者配置j m s 使它能重载客户端指定的j m s d e l i v e r y m o d e 、j m s e x p i r a t i o n 及j m s p r i o r i t y 字段的值。如果对消息头字段进行重载,消息头字段值必须反映出管理设定 的值。 3 3 4 消息属性 j m s 定义的一组标准的属性,要求m o m 提供者支持,包括: ( 1 ) j m s x u s e r l d :指明发送信息的用户; ( 2 ) j m s x a p p i d :标识发送消息的应用程序; ( 3 ) j m s x g r o u p l d :标识消息所在的消息组; ( 4 ) j m s x p r o u d e r t x i d :标识生成消息的产生者; ( 5 ) j m s x c o n t a i n e r t x i d :标识使用消息的使用者; ( 6 ) j m s x g r o u p s e q :表示消息在消息组中的序列号,第一个消息是l ,第二个是2 ,; ( 7 ) j m s x d e l i v e r y c o u n t :消息传递的尝试次数,第一次是l ,然后是2 ,; ( 8 ) j m s x s t a t e :维护消息时使用,l 表示等待,2 表示准备,3 表示过期,4 表示保持; ( 9 ) j m s x r e v t i m e s t a m p :j m s 传递消息给接收方的时间; ( 1 0 ) j m s x :为供应器提供的属性。 每个消息都对应了一个s e t 方法和一个g e t 方法,用于设置属性和获取属性值。这些属 性表示那些与应用程序提供者相关的可选项的信息。 1 0 基于j m s 的消息中间件的研究与实现 3 3 5 消息体 j m s 提供了五种格式的消息体,每种格式都通过一个消息接口定义。 ( 1 ) s t r e a m m e s s a g e :包含了一个j a v ap r i m i t i v e 流,这个流被顺序地填充和读取。 ( 2 ) m a p m e s s a g e :包含了一系列的名字值对,名字是s t r i n g s ,而值则是j a v ap r i m i t i v e 类型。消息体中的条目可以被e n u m e r a t o r 按照顺序访问,也可以自由访问,条 目的顺序没有定义。 ( 3 ) t e x t m e s s a g e :包含了一个j a v a 1 a n g s t r i n g ,包含这种消息类型是考虑到s t r i n g 消息将被广泛使用的前提。另外一个原因就是x m l 将可能变成一种用来表示 j m s 消息内容的主流机制。 ( 4 ) o b j e c t m e s s a g e :包含了一个可序列化的j a v a 对象。如果需要j a v a 对象集合 ( c o l l e c t i o n ) ,可以是j d k1 2 提供的集合类型中的任何一种。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030工业大数据平台架构设计与行业解决方案报告
- 2025-2030工业大数据可视化平台功能演进与用户体验报告
- 濮阳安全工程师培训课件
- 建党立卡户申请书
- 暂缓缴款申请书
- 活动服装申请书
- 驳回鉴定申请书
- 话剧社申请书英语
- 大病互助申请书
- 潜艇使用与安全课件
- 《浮顶罐结构及工作原理》课件
- TSG21-2025固定式压力容器安全技术(送审稿)
- 《已上市化学药品药学变更研究技术指导原则(试行)》
- 【MOOC】《操作系统A》(南京邮电大学)章节中国大学慕课答案
- 水电站机电设备拆除施工方案
- 《公共数据安全评估规范》
- 银行家算法课件
- 杨梅综合产业园基础设施建设项目可行性研究报告-杨梅产业发展前景广阔配套需求日益凸显
- 2024年下半年辽宁事业单位管理单位遴选500模拟题附带答案详解
- 农产品直播带货策略
- 2024年化学检验员(中级工)技能鉴定考试题库(附答案)
评论
0/150
提交评论