已阅读5页,还剩61页未读, 继续免费阅读
(通信与信息系统专业论文)基于jms的消息中间件的设计.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学硕士学位论文 摘要 i n t e m e t 的发展使得分布式计算环境下的应用集成越来越普遍,中间件是实 现应用间互操作的一个重要手段。面向消息的中间件能够为分布式企业应用提 供更为灵活、高效和可靠的异步消息传递机制。 消息中间件采用消息传递机制为网络计算提供了异步低耦合的编程架构。 j a v a m e s s a g es e r v i c e ( j m s ) 是由s u n m i e r o s y s t e m s 公司提出的基于j a v a 技术 的消息中间件的规范。它有效地屏蔽了网络协议、应用实现的具体技术、操作 系统和数据库的细节,目前己被各大软件公司和开源组织所接受,成为业界的 事实标准。 针对目前消息中间件所存在的一些不足,例如传统类型的消息中间件的设 计与开发没有统一的标准,各种消息中间件都使用专有的a p i 和专有协议,来 自不同厂家的消息中间件产品之间很难进行互操作;并且由于j m s 技术发展时 间并不长,在安全性、x m l 支持、管理工具以及支持除j a v a 以外的其他语言 等方面还没有深入研究等问题,本文在研究消息中间件技术和j m s 规范的基础 上,设计并实现了一个完全符合j m s 规范的消息中间件产品:f r e e j m s 。 由于j m s 规范中没有对消息过滤机制进行具体说明,而传统的基于j m s 的消息过滤方法效率较低,本文在第三章给出了一种改进的基于j m s 的消息过 滤算法。 文章最后给出了系统的整体结构设计和各项服务的设计思想,并根据设计 思想给出其具体的实现细节。作为一个消息服务系统,产品建立了发布订阅和 点到点的两种消息模式,实现了全部的j m s 标准a p i ,提高了消息持久化、消 息预览和消息选择功能;基于j 2 e e 技术,产品建立了可靠的线级通讯连接,提 供了名字与目录服务,完成了会话和表示层的封装,为应用层的网络应用提供 了透明接口;同时在服务器端实现了事件监听和多线程管理等机制,提高了产 品的服务质量。 关键词:j m s ;发布订阅模式;点到点模式;消息过滤 武汉理工大学硕士学位论文 a b s t r a c t w i t ht h e r a p i dd e v e l o p m e n t o fi n t e m e t , a p p l i c a t i o n i n t e g r a t i o n u n d e r d i s t r i b u t e dc o m p u t i n ge n v i r o n m e n th a sb e c o m em o l la n dm o l e w i d c l yu s e d m i d d l e w a r ei sa l li m p o r t a n ta p p r o a c ht oa c h i e v ec o o p e r a t i o na m o n ga p p l i c a t i o n s m e s s a g e - o r i e n t e dm i d d l e w a l l ( m o m ) c a l lp r o v i d ef l e x i b l e 、e f f e c t i v ea n dr e l i a b l e a s y n c h r o n o u sm e s s a g i n gm e c h a n i s mf o rd i s t r i b u t e de n t e r p r i s ea p p l i c a t i o n 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 ( m o m ) i sas p e c i a lm i d d l e w a l lb a s e do n m e s s a g e - t r a n s m i s s i o n , e f f e c t i v ea n dr e l i a b l e m e s s a g e t r a n s m i s s i o n f o r c 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 sc a l lb ep r o v i d e db yi t d i s t r i b u t e d s y s t e m sc a ni n t e r a c ta n db ei n t e g r a t e do nt h ew a yo f d a t ac o m m u n i c a t i o nb ym o m 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 nf o rm o mb a s e d0 nj a v al a n g u a g e p r o t o c o l ,a n dw a sc r e a t e db ys u nm i c r o s y s t e m s i tm a k e st h eh e t e r o g e n e i t yo f n 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 e i nv i e wo ft h ec u r r e n tm i d d l e w a l le x i s t e n c eo fan u m b e ro fs h o a c o m i n g s ,f o r e x a m p l e ,t h et r a d i t i o n a lt y p eo fm i d d l e w a r ed e s i g na n dd e v e l o p m e n ti sn ou n i f o r m s t a n d a r d ,v a r i o u sm i d d l e w a r eu s ep r o p r i e t a r ya p i sa n dp r o p r i e t a r yp r o t o c o l s ,f i o m d i f f e r e n tm a n u f a c t u r e r sm i d d l e w a r ep r o d u c t si sd i f f i c u l tt o i n t e r - o p e r a t e ;a n d b e c a u s ej m st e c h n o l o g yd e v e l o p m e n tt i m ei sn o tl o n g ,i nt h es e c u r i t y , x m ls u p p o r t , m a n a g e m e n tt o o l sa n ds u p p o r ti na d d i t i o nt oo t h e rt h a nt h ej a v al a n g u a g ea n do t h e r a s p e c t sh a v en o ty e ti n - d e p t hr e s e a r c h , b a s e do nt h es t u d yo f i n f o r m a t i o nt e c h n o l o g y a n dj m sm i d d l e w a r en o r m so nt h eb a s i so fd e s i g na n di m p l e m e n t a t i o no faf u l l y c o n s i s t e n t 谢t ht h eh e w so f j m sm i d d l e w a r ep r o d u c t s :f r e e j m s b e c a u s et h e m e s s a g e f 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 s s p e c i f i c a t i o n , a n dt h et 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 i nt h et h i r dp a r t , a ni 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 si ss u g g e s t e d a f t e rt h er e s e a r c ho fm o m t e c h n o l o g ya n dj m ss p e c i f i c a t i o n , am e t h o do f d e s i g n i n ga n di m p l e m e n t i n gam o ms y s t e mb a s e d0 1 1 m ss p e c i f i c a t i o nh a sb e e n c a r r i e do u t f r e e j m se l l a t o sp u b l i s h s u b s c r i b ea n dp o i n t - t o - p o i n tm e s s a g i n gm o d e l , 武汉理工大学硕士学位论文 i m p l e m e n t sa l lj m sa p i ,p r o v i d e sp e r s i s t e n tm e s s a g i n g 。m e s s a g eb r o w s e ra n d m e s s a g es e l e c t o r a sam i d d l e w a r e , f r e e j m sc r e a t e sr e l i a b l ew i r e - l e v e l c 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 el o w e rl a y e ro fn e t w o r ka n dp r o v i d e s i 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 y s t e ms e r v i c e s ,l i k eg a r b a g e c o l l e c t i o n , e v e n tl i s t e n e ra n dt h r e a dp o o ln h a n a g e m e n ta r ea l s op r o v i d e si nt h e p r o d u c t k e yw o r d s :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 e r i b e ;p o i n t - t o - p o i n t : m e s s a g ef i l t e r h i 独创性声明 本人声明,所呈交的论文是本人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其 他人已经发表或撰写的成果,也不包含为获得武汉理工大学或其它教育机构学 位证书而使用过的材料。与我起工作的同志对本研究所做的任何贡献均已在 论文中作了明确的说明并表示了谢意。 签名:垫缝e l 期:! ! :兰:! ! 关于论文使用授权的说明 本人完全了解武汉理工大学有关保留、使用学位论文的规定,即学校有权 保留、送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部 或部分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 戳:一新躲华飙必 武汉理工大学硕士学位论文 1 1 引言 第1 章绪论 随着互连网的扩大化和复杂化,企业的信息系统向着三层甚至多层体系结 构的分布式环境不断迈进。但是在分布式环境中,大规模的应用软件通常要求 在硬、软件各不相同的分布式网络上运行。无论硬件平台还是软件平台都不可 能做到统一。为了更好地开发和应用能够运行在这种异构平台上的软件,迫切 需要一种基于标准的、独立于计算机硬件及操作系统的开发和运行环境,于是 中间件技术应运而生。中间件在三层结构中主要充当中间层,完成数据安全和 完整传输,通过负载均衡来调节系统的工作效率,可以有效地弥补两层结构的 不足【l 】。 消息中间件是目前中间件技术的研究热点。分布式应用系统借助消息中间 件在不同的技术之间共享资源,管理计算资源和网络通信。消息中间件适用于 任何需要进行网络通信的系统,负责建立网络通信的通道,提供公用的通信手 段。消息中间件还为开发者提供了公用于所有环境的应用程序接口,满足企业 内部对系统伸缩性和扩展性的要求。 1 2 国内外的研究及应用现状 近年来,中间件软件产业化迅速。c o r b a 、d c o m 、r m i 等r p c 中间件 技术已经广泛应用于各个领域。但是面对规模和复杂度都越来越高的分布式系 统,这些技术也显示出其局限性。 ( 1 ) 同步通信:客户发出调用后,必须等待服务对象完成处理并返回结果 后才能继续执行: ( 2 ) 客户和服务对象的生命周期紧密耦合:客户进程和服务对象进程都必 须正常运行,如果由于服务对象崩溃或者网络故障导致客户的请求不可达,客 户会接收到异常; ( 3 ) 点对点通信:客户的一次调用只发送给某个单独的目标对象【2 】。 武汉理工大学硕士学位论文 面向消息的中间件( m e s s a g eo r i e n t e dm i d d l e w a r e ,m o m ) 较好的解决7 这些问题。发送者将消息发送给消息服务器,消息服务器将消息存放在若干队 列中,在合适的时候再将消息转发给接收者。这种模式下,发送和接收是异步 的,发送者无需等待;二者的生命周期未必相同:发送消息的时候接受者不一 定运行,接收消息的时候发送者也不一定运行。 目前比较有代表性的消息中间件有:i b m 的m q s e r i e s t 3 、东方通科技的 t o n g l i n k q 、微软的m s m q 。 ( 1 ) i b m m q s e r i e s m 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 基本由一个信息传输系统和一个应用程序接口组成,其资源是消息和 队列。 ( 2 ) 东方通科技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 提供两种通信方式:实时通信传输和可靠通信传输。 ( 3 ) 微软m s m q 微软消息队列可以在应用之间实现推送式的商务传输环境,即使在可靠性 不高的网络上也能建立可靠的应用。它具有易用、应用高度集成的特点【4 】。 1 3 消息中间件与i b i s 消息中间件作为一个中间层软件,它为分布式系统中创建、发送、接收消 息提供了一套可靠通用的方法,实现了分布式系统中可靠的、高效的、实时的 跨平台数据传输。消息中间件减少了开发跨平台和网络协议软件的复杂性,它 屏蔽了不同操作系统和网络协议的具体细节,面对规模和复杂度都越来越高的 分布式系统,消息中间件技术显示出了它的优越性【5 】: ( 1 ) 采用异步通信模式。发送消息者可以在发送消息后进行其他的工作, 不用等待接收者的回应,而接受者也不必在接到消息后立即对发送者的请求进 行处理: ( 2 ) 客户和服务对象生命周期的松耦合关系。客户进程和服务对象进程不 2 武汉理工大学硕士学位论文 要求都正常运行,如果由于服务对象崩溃或者网络故障导致客户的请求不可达, 客户不会接收到异常,消息中间件能保证消息不会丢失。 随着不同厂商消息中间件大量上市,消息中间件技术得到长足的发展。目 前,m m 和b e a 的中间件产品在银行、证券、电信等高端行得到广泛应用。m m 凭借其在1 9 9 9 年推出的应用服务器w e b s p h e r e 扎根金融、证券等行业,在超大 型以及系统整合型应用方面优势突出;b e a 则是专门从事中间件开发的公司, 它的应用服务器w e b l o g i e 在美国市场占有率超过6 0 ,在国内电信及证券行业 占有主要地位:s u n 、o r a c l e 、s y b a s e 等厂商也都有自己的应用服务器;近年 来,以金蝶、东方通等公司为代表的国产中问件产品也发展迅速【6 】。 由于没有统一的规范和标准,基于消息中间件的应用不可移植,不同的消 息中间件也不能互操作,这大大阻碍了消息中间件的发展。j a v a m e s s a g es e r v i c e ( j m s ) 是s u n 及其伙伴公司提出的旨在统一各种消息中问件系统接口的规范。 它定义了一套通用的接口和相关语义,提供了诸如持久、验证和事务的消息服 务,它最主要的目的是允许j a v a 应用程序访问现有的消息中间件。j m s 规范没 有指定在消息节点间所使用的通讯底层协议,来保证应用开发人员不用与其细 节打交道,一个特定的j m s 实现可能提供基于t c p i p 、h t i v 、u d p 或者其它 的协议。现在j m s 已成为j 2 e e 平台的一个重要组成部分,应用程序开发人员 可以将消息传递用于使用j 2 e e a p i 的组件。 以往面向消息的中间件产品都依赖于各自所运行的操作平台,因而限制了 其运行的范围,使企业应用程序仅限于单一的硬件和软件平台。j m s 技术成功 地解决这一问题,为企业应用程序间进行消息服务提供了一个可运行于不同平 台的、可靠安全和高效的解决方案。现在,基于j m s 的中间件技术已被广泛应 用于企业应用集成、应用程序问消息服务、数据库管理、数据同步及电子商务 等【”。j m s 技术的应用,很好地解决了企业应用程序开发中的移动性、规模化、 资源利用、组件重用以及分布式事务等关键问题,为把孤立的应用变成互相关 联的、健壮的平台提供了一个合理的基础。 1 4 课题的目的、意义及工作内容 l a l 目的和意义 消息中间件是中间件范畴中发展比较快的类型之一,但是也产生了一些问 题: 武汉理工大学硕士学位论文 ( 1 ) 由于传统类型的消息中间件的设计与开发没有同意的标准,各种消息 中间件都使用专有的a p i 和专有协议,来自不同厂家的消息中间件产品之间很 难进行互操作。j a v a m e s s a g es e r v i c e ( j i s ) 是由s u n 公司提出的基于j a v a 技 术的消息中间件范畴,它有效地屏蔽了网络协议、操作系统、应用实现的具体 技术和数据库的细节,成为了工业界的事实标准。 ( 2 ) 由于j m s 技术发展时间并不长,在增强安全性、x m l 支持、管理工 具以及支持除j a v a 以外的其他语言等方面还有没有深入研究。 1 4 2 工作内容及论文组织结构 本文的主要工作是综合运用一系列j 2 e e 技术,设计一个符合j m s 规范的 消息中间件系统。 全文共分为5 章: 第l 章是绪论,叙述了研究背景、相关组成以及研究现状。 第2 章对j m s 进行了综述,包括j m s 定义、体系结构、应用组成、消息 模式、消息结构,并对j m s 的a p l 进行了详细允绍。 第3 章对j m s 的过滤机制进行综述,提出了一种改进的基于y m s 的消息 过滤算法。 第4 章给f r e e j m s 系统的设计原理,包括设计原理,包括架构设计、客户 端和服务器端的设计以及实现。 第5 章对全文工作进行了总结,并给出了下一步的研究工作。 4 武汉理工大学硕士学位论文 第2 章j m s 设计原理 消息中同件m o m 为分布式企业应用系统中刨建、发送、接收和订阅消息 提供了一套可靠通用的方法。已有的m o m 系统包括i b m 的m q s e r i e s 、m i c r o s o f t 的m s m q 和b e a 的w e b l o g i c 等。由于没有一个通用的标准,这些系统很难 实现互操作和无缝连接。 j m s 于1 9 9 8 年引入,它最主要的目的是允许j a v a 应用呈现访问现有的面 向消息传递的中间件系统,实现了j m s 规范的产品能够为企业提供一套完整的 消息传递功能。j m s 定义了一些通用的企业消息概念和工具集,试图最小化一 个j a v a 程序员在使用这些企业消息产品前所必须学习的一系列概念,并试图最 大化消息应用程序的灵活性哺】。 2 1j m s 规范 j a v a 消息服务简称j m s ,是一种接口规范,最初是s u n 公司为使j a v a 应 用程序可以访问已有的面向消息的中间件而设计的,现在已经成为j 2 e e 体系结 构中定义的标准服务之一。 j m s 为j a v a 程序提供了一种创建、发送、接收和读取企业级消息系统消息 的一般方法,其目的是为消息系统客户提供个固定的接口,而且与底层的消 息提供者无关。这样,客户端的应用程序不仅可以在不同的机器和操作系统中 移植,而且能在不同的消息系统产品之间转移。j m s 客户端都是建立在j a v a 技 术上的,从而也能使用其他j a v a a p i ,如j d b c 数据库连接,使用j a v ab e a n 组 件模型,j n d l 名字服务等等来实现企业级应用服务程序。 j m s 仅是一种接口规范,在这一点上,j m s 类似于i d b c ( j a v ad a t a b a s e c o n n e c t i o n ) 和s n d i ( j a v a n a a n i n ga n dd i r e c t o r y ) 。j d b c 实现了访问关系数据 库的抽象,j n d i 实现了访问命名和目录服务的抽象,y m s 实现了访问消息中间 件的抽象。 因此我们可以给出j m s 的定义:j m s 是一个规范,它定义了一组接口和相 关的语义,这些接口允许基于j a v a 技术开发的应用程序访问任何一个遵守j m s 规范的消息中间件产品【9 】。 武汉理工大学硕士学位论文 这个定义说明了: ( 1 ) j m s 只是一个规范,并不是产品的具体实现; ( 2 ) j m s 只定义了接口和语义; ( 3 ) j m s 适用于任何一种遵守该规范的消息中间件产品,即可移植性; ( 4 ) j m s 只适用于采用j a v a 技术开发的应用系统,即语言相关性。 需要指出,j m s 规范并非由s u n 公司一家开发并完成。在j m s 规范指定 和开发的过程中,很多业界的领导厂商参与了这一过程,包括m m 、o r a c l e 、 s y b a s e 、n o v e l l 、a l l a i r e 、b e a s y s t e m s 等。这正是j m s 规范被广泛接收,并成 为当前消息中间件的事实标准的重要原因。 同时,j m s 规范并没有强制要求所有的中间件厂商必须全部实现规范中的 所有内容。j m s 规范中有很多是可选内容,这些内容可以由提供者自行决定是 否实现。 2 2 j 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 sa p i 的应 用程序。 图2 1 说明上面所述各个部分交互的方式。 回当囤 图2 - 1j m s a p i 体系结构 6 武汉理工大学硕士学位论文 管理工具允许将目的地和连接工厂绑定到一个j a v a 命名和目录接口 ( j n d i ) a p i 命名空间中,j m s 客户在该命名空间中查找被管理对象,并通过 j m s 提供者建立与这些对象的逻辑连接【埘。 2 3j m s 的消息传递模式 j m s 规范提供了两个最普遍的消息传递模式:点对点模式1 1 l 和发布何阅模 式。在j m s 诞生之前,大多数消息传递产品支持的都是点对点的或发布订阅的 消息传递方式。j m s 规范为每个方式都提供了一个单独的域并为每个域定义了 一致性,独立的j m s 提供者可以实现其中一个域或两个都实现。 j m s 规范允许客户端使用两种模式的混合,发布订阅模式和点对点模式使 用相同的j m s 消息格式。 2 3 1 对点消息传递模式 点对点消息传递建立在消息队列的基础上,每个客户端对应一个消息队列, 客户端发送消息到对方的消息队列中,从自己的消息队列读取消g t l 2 1 。消息队 列由j m s 提供者提供,消息发送端发送消息到消息队列上,接受端从消息队列 中接收消息。所以消息发送者和接收者实际并不直接连接,它们之间的消息通 信是通过位于j m s 提供者上的消息队列来完成的,队列的存在使得消息的异步 传输成为可能。和邮件系统中的邮箱一样,队列可以包含各种消。g ,j m s 提供 者提供工具管理队列的创建、删除。 j m s 点到点传递模式还定义了客户端如何向队列发送消息,从队列接收消 息,浏览队列中的消息。在点对点消息传递模式中,每一条消息队列中的消息 只能被一个客户所接收,一旦消息队列中的消息被消息客户接收后,该消息就 被队列删除,其他消息客户就不能再访问该条消息。同时,每一条消息都包含 明确的目的地地址,能够被发送到确定的消息队列上,保存在该队列中,直到 被其他消息客户接收为止【1 3 1 。 消息队列是一个受管对象,预先配置并保存在名字空间中,所有j m s 客户 都可以通过1 n d i 查找它们的实例。一个队列由管理员创建,并长时问存在, 无论消费消息的客户端是否激活,它都可以有效的保存消息并发送它,所以客 户端不用做特别的预防来保证不丢失消息。 7 武汉理工大学硕士学位论文 图2 - 2 为点对点消息传递的模型。 囤 匕= = = 哥 发选 囤 回荨曰确认。u 图2 - 2 点对点消息传递模型 当发送的每个消息必须被一个消费者成功处理时,可以使用点对点消息传 递,其主要特点如下: ( 1 ) 每个消息只有一个消费者; ( 2 ) 消息的发送者和接收者没有时间上的相关性,无论接收者在发送者发 送消息时是否处于运行状态,它都可以提取消息; ( 3 ) 接收者确认消息的成功处理。 2 3 2 发布,匍阅消息传递模式 发布订阅是一种一对多的发布模式,在此模式中,客户端应用向主题发布 消息,主题反过来放对此主题感兴趣的客户所预定。所有预定客户将收到每一 条消息u 4 1 。 发布订阅模式通常是匿名的,可以动态地发布或订阅消息,且必须保证每 个节点的所有发布者发布的消息准确无误地发送到这个节点的所有订阅者。发 布订阅消息传递模式可以使一条消息被多个客户所接收,发布者将消息发布到 某个主题上,多个客户可以同时订阅该主题,一个主题也可以接收多个发布者 发送过来的消息。主题使得消息订阅者和消息发布者保持相互独立,不需要接 触即可保证消息的传送,主题同样也是一个受管对象,预先配置并保存在名字 空间中,所有j m s 客户可以通过b q d i 查找到它们的实例。 图2 3 为发布,订阅消息传递模型。 8 武汉理工大学硕士学位论文 曰 囤曰 图2 3 发布,订阅消息传递模型 虽然在所有发布订阅系统中都存在延迟,但是消息的延迟可能会动态依赖 于j m s 提供者向已存在的订阅者发送消息的速度,还包括消息在传输过程中由 j m s 提供者保留的时间【1 5 3 。 发布订阅消息传递模式的主要特点如下: ( 1 ) 每个消息可以有多个消费者; ( 2 ) 发布者和订阅者有时间相关性。订阅一个主题的客户只能消费自它订 阅之后发布的消息,订阅者必须一直处于激活状态,才能消费发布的消息。 2 4j l v l s 的消息结构 消息是通过消息服务器在客户端之间发送的一条条信息。在j m s 中,消息 是使得j m s 跨供应商的相当简单的对象。 一个j m s 消息实际是由许多元素组成的,这些元素包括消息头、消息属性 ( 可选) 和实际的消息体,如图2 - 4 所示。 登 目的地交换模式捎息i d 蓍 营 时问戳消息类型优先级 崔头 相关i d 过期重复发送霪 图2 4 消息结构 9 圃重般婴冒 黑司 武汉理工大学硕士学位论文 消息头( h e a d e r ) 包含标准的、比不可少的消息信息,包括消息的识别信 息和路由信息。消息头包含一些标准的属性。 消息属性( p r o p e r t i e s ) 包含标准的、特定于供应商或者特定于应用程序的 可选的消息信息。它是对消息头的补充,消息消费者可以利用消息选择器 ( s e l e c t o r ) 对指定的属性的消息进行过滤。 消息体( b o d y ) 包含了消息中的数据和事件的内容,消息类型决定了消息 体中数据的结构和组织。 2 4 1 消息头 一个完整的消息头域将回被传送给所有接收消息的j m s 客户端,但不会传 送给非j m s 客户端。 j m s 规定的消息头包含了一些基本的属性: ( 1 ) j m s d e s t i n a t i o n :消息目的地,它指向一个t o p i c 或q u e u e 对象; ( 2 ) j m s d e l i v e r y m o d e 消息传输方式,包括持久化和非持久化。持久化 方式中,如果j m s 服务器死机,消息也不会丢失;非持久化则不能保证; ( 3 ) j m s m c s s a g e l d :消息i d ,唯一标识消息的字符串; ( 4 ) j m s t t m e t a m p :消息时间戳,发送消息的准确时间( 毫秒) ; ( 5 ) j m s e x p i r a t i o n :消息的过期时间( 毫秒) ,0 表示永远不过期; ( 6 ) j m s r e d e l i v e r e d :表示消息是否为重新发送; ( 7 ) j m s p r i o r i t y :消息的优先级,0 - 4 为普通优先级,5 - 9 为高优先级; ( 8 ) j m s r e p l y t o :消息的回复地址,指向一个d e s t i n a t i o n 对象; ( 9 ) j m s c o r r e l a t i o n l d :消息的相关消息,通常用于答复消息指向源消息; ( 1 0 ) j l v l s t y p e :消息类型,决定消息的结构和消息体的类型。 这些消息大部分都在消息发送到目标之前自动设定,消息头可以通过g e t 和s e t 方法存取,它们的方法是s e t m s h e a d e r n a m e 0 和g e t j m s h e a d e r n a m e 0 。 2 a 2 消息属性 消息属性是一个“名值对”,消息属性部分包含一些标准的以及应用特定的 域,消息选择器依据这些信息来过滤收到的消息。除了消息头中定义好的标准属 性外,j m s 提供一种机制增加新的属性到消息头中,这种新的属性有三种类型: ( 1 ) 应用需要用到的属性:它提供一种为消息添加应用程序指定属性的 1 0 武汉理工大学硕士学位论文 机制。 ( 2 ) 消息头中原有的一些可选属性:j m s 在有效的可选的头域中定义了一 些标准属性。 ( 3 ) j m sp r o v i d e r 需要用到的属性:把提供者本地客户端所需要的提供者 指定属性结合到j m s 客户端中 j m s 定义的一组标准的属性( 第二种类型) ,要求m o m 提供者支持,包括: ( 1 ) j m s x u s e r l d :消息发送者的客户i d ; ( 2 ) j m s x a p p l d ;消息发送的应用系统的i d : ( 3 ) j m s p m d u o e r t d :制造消息操作所在的事务的i d ; ( 4 ) j m s c o n s u m e r t x i d :消费消息操作所在的事务的d ; ( 5 ) m s x r e v t h n e s t a m p :消息被接收时的u t c 时间; ( 6 ) j m s x d e l i v e r y c o u n t :一条消息被重复发送的次数; ( 7 ) j m s x s t a t e :消息状态,1 表示等待,2 表示准备,3 表示过期,4 表 示保持。 其他两种类型不在j i v l s 规范的要求之内,可以由应用程序开发者和中间件 生产商自行决定。 2 4 3 消息选择器 很多消息应用系统都支持消息过滤和分类功能。 ( 1 ) 消息选择器 j m s 消息选择器允许客户端通过检查消息头和消息属性的内容来接收所喜 欢的消息,只有头域和属性都满足的条件下,消息才被接收。 ( 2 ) 消息选择器语法 消息选择器语法遵从s q l 9 2 标准。对应w h e r e 字句。如我们可以通过 u s e m a m e ! - j o h n ”,来接收除j o h n 外的所有入的消息。 2 4 4 消息体 j m s 定义了六类消息,每一类消息装载不同格式的消息体数据: ( 1 ) m e s s a g e :最简单的消息,只有消息头和属性,不带任何消息体。它 是其他五类消息的超类; ( 2 ) t e x t m e s s a g e :文本消息,包含由本文组成的s t r i n g 类型的对象; 武汉理工大学硕士学位论文 ( 3 ) s t r e a m m e s s a g e :流消息,包含顺序读取的值的流,这些值是由j a v a 原始类型( h a t ,c h a r 等) 组成的流对象; ( 4 ) m a p m e s s a g e :映射消息,可以按顺序或者随机访问的成对的名字和 值,名字部分是字符串对象,值的部分是j a v a 任何基本对象; ( 5 ) o b j e c t m e s s a g e :对象消息,包含序列化( s e d a l i z a b l e ) j a v a 编程对象; ( 6 ) b y t e s m e s s a g e :字节流消息,装载字节数组类型的消息体。 2 5j 】s a p i j m s 规范除了规定消息中问件的语义和模式,其主要部分是由一组定义良 好的接口来体现的。所有的j m s 提供者必须实现这些接口,或者说提供者的主 要工作就是给出这些接口的实现。j m s a p i 都是随j a v a x , j m s 包一起发行。按照 a p i 的性质,可以分为三类:控制类、消息类和异常类,下面分别介绍所有接 口的作用以及它们之间的关系旧。 2 5 1 j m s 控崩a p i j m s 控制a p i 以及它们之问的关系较为复杂,如图2 - 5 所示。 图2 - 5j m s 控制a p i 1 2 武汉理工大学硕士学位论文 ( 1 ) c o n n e c t i o n :一个客户对其j m s 提供者的活动连接; ( 2 ) c o n n e e t i o n f a c t o r y :封装由系统管理员定义的一组连接配置参数,它 是c o n n e c t i o n 对象的工厂类; ( 3 ) c o n n e c t i o n m e t a d a t a :提供说明c o r m e e t i o n 对象的相关信息: ( 4 ) d e l i v e r y m o d e :发送由j m s 支持的模式,很可能是简单的p e r s i s t e n t 而不是n o n 。发送模式只覆盖消息到其目的地的传输;_perisitent ( 5 ) e x e e p t i o n l i s t e n e r :如果一个j m s 提供者检测到一个c o n n e c t i o n 出现 了严重的问题,并且已经注册了一个e x e e p t i o n l i s t e n e r ,它将通知这个 c o n n e c t i o n 的e x e e p t i o n l i s t e n e r ; ( 6 ) m e s s a g e c o n s u m e r :一个客户使用一个消息消费者从一个d e s t i n a t i o n 接收消息,一个消息消费者会进行同步处理; ( 7 ) m e s s a g e l i s t e n e r :用于接收异步发送的消息,这个接口只定义了一个 方法,即o n m e s s a g e ( ) ; ( 8 ) m e s s a g e p r o d u e e r :一个客户使用一个消息制造者向一个d e s t i n a t i o n 发送消息; ( 9 ) q u e u e c o n n e e t i o n :对一个j m s 点对点提供者的一条活动连接,它是 c o n n e c t i o n 的子类; ( 1 0 ) 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 c o n n e c t i o n f a c t o r y 来生产点对点传输模式的连接; ( 1 1 ) q u e u e r e e e i v e r :一个客户使用一个q u e u e r e e e i v e r 来接收已经发送 到队列的消息; ( 1 2 ) q u e u e s e n d e r :一个客户使用一个q u e u e s e n d e r 向队列发送消息; ( 1 3 ) q u e u e s e s s i o n :一个客户到j m s p t p 提供者的会话,用来生成 q u e u e r e c e i v e r 、q u e u e s e 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 对象。它是s e s s i o n 的子类; ( 1 4 ) s e s s i o n :会话,它是一个单线程的上下文环境,用于制造和消费信息; ( 1 5 ) t o p i c c o n n e c t i o n :对一个j m s ( 发布订阅) 提供者的一条活动连接; ( 1 6 ) t o p i e c o n n e c t i o n f a c t o r y :t o p i e c o n n e e t i o n 的工厂类,一个客户使用 一个t o p i c c o n n e e t i o n f a e t o r y 来生产发布订阅传输模式的连接: ( 1 7 ) t o p i e p u b l i s h e r ;用于向一个主题发布消息; ( 1 8 ) t o p i c s e s s i o n :一个客户到一个j m sp u b s u b 提供者的会话。用来生 武汉理工大学硕士学位论文 成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 对象。它是s e s s i o n 的子类; ( 1 9 ) t o p i c s u b s c r i b e r :用来接收已经发布到一个主题的消息。 2 5 2 j m s 消息a p i j m s 消息a p i 如图2 - 6 所示。 图2 6j m s 消息a p i b y t e s m e s s a g e :用于发送一条包含一个未解释的字符流的消息; d e s t i n a t i o n :因为j m s 并不定义一个标准的地址语法,因此这个接口用于 封装提供者专用的地址。尽管人们可以考虑采用标准的地址语法,但不同m o m 产品之间的地址在语法上的差别太大,以至于无法用一种语法作为沟通它们的 桥梁; m a p m e s s a g e :用于发送一组名字一值对,其中名字是字符串,值是j a v a 原子类型的数据。这种名字值对可以根据枚举器或者由名字来按顺序访问; m e s s a g e :所有j m s 消息的接口; o b j e c t m e s s a g e :用于发送一条包含一个可串行化j a v a 对象的消息。如果需 要一个j a v a 对象的集合,我们可以使用一个j a v a 集合类; q u e u e :封装一个提供者专用的队列名; q u e u e b r o w s e r :用于查看一个队列上的消息,而不会移动它们; s t r e a m m e s s a g e :用于发送一个j a v a 原子类型的数据流;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 焦作市武陟县2025-2026学年第二学期四年级语文第五单元测试卷(部编版含答案)
- 宜昌市西陵区2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 来宾市武宣县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 那曲地区班戈县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 昌吉回族自治州玛纳斯县2025-2026学年第二学期三年级语文第六单元测试卷(部编版含答案)
- 汉中市城固县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 邢台市柏乡县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 服装市场营销策划方案
- 深度解析(2026)《CBT 4002-2005 J类法兰铸钢1.0MPa截止阀》
- 深度解析(2026)《AQ 9012-2023生产安全事故应急救援评估规范》
- 老年人摄影与艺术创作指导
- 2024-2025学年度洛阳职业技术学院单招《职业适应性测试》综合提升测试卷含答案详解【新】
- 蒙牛校园招聘在线测评题
- (2025年)(新版)低压电工证职业技能考试题库(含答案)
- 规范参股公司管理制度
- 幕墙施工防坠落方案
- 工厂防错培训课件
- 2025人教版三年级数学上册 第六单元 分数的初步认识 单元分层作业
- 止水钢板施工人员配置
- 无人吊装施工方案(3篇)
- 湖南公务员面试必-备知识要点集锦
评论
0/150
提交评论