供异步消息接发系统使用的方法和设备的制作方法

文档序号:6471180阅读:191来源:国知局
专利名称:供异步消息接发系统使用的方法和设备的制作方法
技术领域
本发明涉及使用异步消息接发的分布式并行软件系统。
背景技术
分布式并行软件系统采用不同形式的电子通信。消息接发是一种这样的通信模型。借助消息接发,系统组件通过发送消息相互通信。消息传送一些专用数据。
消息接发天生是异步的,因为系统组件在某一时刻发送消息,并且独立于消息传送和消息的任意接受者,继续进行计算。消息发送者可在稍后时刻接收对该消息的应答。消息的发送者和接受者在时间上是独立的,即它们不必同时存在于网络上。
许多分布式并行软件系统依赖于异步消息接发,并且为此使用消息中间件。消息中间件指的是在软件系统的组件之间实现消息接发操作的一种或多种软件程序。借助消息中间件,消息一般被发送给某一形式的目的地,例如消息队列,消息中间件的其它客户程序,例如最终消息接受者随后可从所述目的地读取消息。从而,消息的发送者和接受者不必知道彼此的存在。
对于消息的发送者来说,各个消息传送的失败和成功很重要,甚至可能是关键性的。一般而言,依据其确定消息传送失败的专用标准可因发送者以及因消息而异。但是,规定这些标准,根据标准评估消息发送,以及对评估结果起反应都难以进行,并且不易于得到现有的消息中间件的支持。
现有的消息中间件,例如MQSeries(IBM公司的商标),或者Java Message Service JMS(Sun Microsystems公司的商标)的实现只支持非常有限的消息传送失败的概念,并且不能区分不同的失败概念,基于每个消息,消息的发送者可以其它方式确定所述不同的失败概念。消息的发送者只规定消息的目的地,并且可声明消息传送是可靠的。随后,消息中间件确保即使在存在诸如系统崩溃之类故障的情况下,相对于目的地的消息传送。现有的消息中间件并不支持专用标准的确定,依据所述专用标准,可确定消息传送的失败和成功。

发明内容
本发明提供最好基于每条消息,确定并处理消息传送结果的方法和设备。所述结果最好为“成功”或“失败”。
本发明的一方面是一种供异步消息接发系统之用的基于计算机的方法,所述方法包括下述步骤为要在系统中发送的至少一个消息确定至少一种消息传送结果条件,并使所述至少一种消息传送结果条件和要在系统中发送的消息相关联;在系统中发送具有相关联的至少一种消息传送结果条件的消息;并监视发送消息的传送,根据相关联的至少一种消息传送结果条件,评估消息的传送结果,从而可把消息的传送结果通知消息的发送者。
在本发明的另一方面,提供一种由消息的发送者用于执行下述步骤的应用编程接口(i)基于每条消息,规定消息传送结果条件;(ii)使消息和消息结果条件(的目标表达)相关联;(iii)发出具有这些结果条件的消息;(iv)相对于消息传送的结果条件,询问消息传送的状态;(v)允许修改或替换为某一消息规定的结果条件;和(vi)指定接收评估结果通知的对象。
在本发明的另一方面,提供一种用于执行一个或多个下述操作的基于计算机的设备(i)把消息结果条件表达为永久对象;(ii)观察消息传送;(iii)评估消息结果条件;(iv)回答相对于消息传送结果条件,对消息传送状态的询问;和(v)把关于发送的每个消息的评估结果通知消息发送者,或者发送者指定的对象。可利用适合于实现这里提供的本发明教导的现有消息中间件实现所述设备。


下面结合附图,详细说明本发明的例证实施例,其中图1是使用根据本发明的消息接发的系统的方框图;图2是根据本发明一个实施例的和图4、图5、图6和图7的流程图相关的消息接发进程的流程图;图3是根据本发明一个实施例的消息失败确定进程的流程图;图4是根据本发明一个实施例的消息发送进程的流程图;图5是根据本发明一个实施例的消息传送观察进程的流程图;图6是根据本发明一个实施例的消息失败评估进程的流程图;图7是根据本发明一个实施例的消息失败条件修改进程的流程图;图8是图解说明适合于实现根据本发明的消息接发系统的计算机系统的通用硬件结构的方框图。
具体实施例方式
下面将在使用异步消息接发的例证软件系统的环境下说明本发明。系统最好是分布式并行系统。众所周知,分布式软件系统是其中系统的组件可驻留在通过通信网络耦接的两个或更多计算机系统上的系统,同时并行软件系统是其中可并行,即同时处理几个计算任务的系统。但是,要明白本发明并不局限于任意特殊的软件系统体系结构。相反,本发明通常更适合于其中希望确定并处理消息传送结果的任意软件系统结构。下面描述的例证实施例将把“成功”和“失败”看作结果条件,不过本发明并不局限于此。
如前所述,异步消息接发指的是与时间无关的软件进程之间的消息交换。一般来说,消息的发送者使用消息中间件把消息发送给由中间件管理的某一形式的目的地,例如远程消息队列。消息的最终接受者是从目的地读取消息的消息中间件的任意其它客户程序。
另外,如前所述,对于消息的发送者来说,每个消息传送的失败和成功很重要,甚至可能是关键性的。一般而言,依据其确定消息传送失败的专用标准可因发送者以及因消息而异。例如,当且仅当消息m1分别在时间窗口t1和t2中到达特定的最终接受者r1和r2时,才认为消息m1被“成功传送”。否则,如果存在少于五个的,在时间窗口t3中接收消息m2的不同匿名最终接受者,则认为另一消息m2“失败”。
但是,如前所述,规定这样的标准,根据标准评估消息发送,以及对评估结果作出反应都难以进行,并且不易得到现有消息中间件的支持。
现有的消息中间件只支持非常有限的消息传送制作的概念,但是不区分不同的失败概念,基于每个消息,消息的发送者可以确定所述不同的失败概念。消息的发送者只规定消息的目的地,例如消息队列。一般不指定消息的最终接受者。虽然消息中间件可确保可靠地把消息传送给中间目的地,但是最终接受者对消息接受的确认必须被应用编码(application-coded),并且得不到中间件的直接支持。
本发明引入更复杂的消息传送失败定义和管理。如同这里所述,可容易地对消息传送失败的不同概念编制程序,并且管理消息传送失败的负担从发送者转移到中间件。一种特殊应用是发送者可通过单个操作的结果,确定一组操作,即消息发送的全部结果,这里,操作可具有不同的失败条件。这样的一种特殊情况是其成功依赖于其消息的成功传送的交易。
如同下面详细所述,在本发明的优选方面,提供应用编程接口,以便被消息的发送者用于(i)基于每条消息,规定消息传送失败条件;(ii)使消息和消息失败条件(的对象表达)关联起来;(iii)发送具有这些失败条件的消息;(iv)相对于消息传送失败条件,询问消息传送的状态;(v)允许修改或替换为消息指定的失败条件;和(vi)指定接收失败评估结果通知的对象。
此外,如同下面详细所述,在本发明的另一优选方面,提供一种基于计算机的设备,用于(i)把消息失败条件表达为永久对象;(ii)观察消息传送;(iii)评估消息失败;(iv)回答相对于消息传送失败条件,对消息传送状态的询问;和(v)把关于发送的每个消息的评估结果通知消息发送者。可利用适合于实现这里提供的本发明教导的现有消息中间件实现所述设备。
要设置的关于代表消息传送失败条件的数值包括,例如委任或可选接受者的名单,目的地(例如消息队列)和最终接受者(例如从目的地读取消息的其它应用程序对象),关于特定或者匿名最终接受者读取的消息的超时和所需时间窗口的说明,必须接收消息的任意最终接受者的数目或范围的基数说明,以及适用于发送者或者消息传送系统显露的其它数值。
可以各种形式使消息失败条件的表达彼此相关。这包括,例如呈广义化-专业化层次和树,或者链接表形式的排序。
下面详细说明本发明的优选实施例。
参见图1,图1的方框解说明了使用根据本发明一个实施例的消息接发的系统。该系统包括消息发送者102,例如发送消息的消息中间件的客户程序。消息发送者102使用三个模块。失败定义模块104用于确定消息传送失败条件。消息传送模块106用于发送具有失败条件的消息。失败评估模块108用于关于消息传送失败条件,询问消息传送的状态。
失败定义模块104产生并管理失败条件的表达。这些表达是带有如上所述那些数值的永久对象。
消息传送模块106发送具有相关失败条件的消息,并观察相对于目的地以及对于最终接受者的消息传送。该模块使用现有的消息中间件110,例如MQSeries或者JMS的实现。
失败评估模块108根据消息传送模块106所观察的实际消息传送,并按照与消息相关的失败条件,把消息传送评估为成功的消息传送或者失败的消息传送。在发出消息之后的任意时刻,可查询评估的状态,失败评估模块108把评估结果通知消息发送者,或者发送者指定的对象。为此,系统规定作为应用编程接口(API)一部分的接口。该接口由作为应用程序一部分的消息发送者(或者指定对象)实现和提供。
要认识到这里术语“接口”被用作软件工程的一个技术术语,接口组合某一服务提供者(例如对象)提供的一组操作(函数)。从而,接口包括操作定义,并由软件组件实现。软件组件可以是应用程序的组件或者是例如图1中所示的消息传送系统的组件。
现有的消息中间件110被用于(可靠地)把消息传送给目的地12,例如消息队列或者JMD Topic对象。为了观察相对于最终消息接受者114的消息传送,最终接受者可在从目的地112读取消息之前,向消息传送模块登记,并提供可由消息传送模块106用于观察的接口。该接口被系统定义为API的一部分,并由应用程序(这种情况下,最终接受者)实现,以便与系统通信。另一方面,最终接受者114可使用专用接口和对象从目的地读取消息,从而,每当最终接受者从目的地读取消息,该对象都可自动通知消息传送模块106。
要认识到当软件系统是分布式的软件系统时,失败定义模块104,消息传送模块106,失败评估模块108和消息中间件110可驻留在一个或多个计算机系统上,而消息发送者102,目的地112和最终消息接受者114驻留在它们自己的独立计算机系统上。借助适当的通信网络,可耦接每个计算机系统。
现在参见图2,图中表示了描述根据本发明一个实施例的消息接发进程的流程图。具体地说,图2和在不同附图中详述的步骤相关,即消息失败定义和消息发送(图4,图4又和图3相关),消息传送观察(图5),消息失败评估(图6)和消息失败条件修改(图7)。
通过在步骤202中发送具有失败条件的消息(如图4中所述)开始进程200。一旦消息被发送,则在步骤204中观察消息的传送(图5),同时,在步骤206中评估失败条件(图6)。可选地,可在步骤208中修改消息的失败条件。可在消息被发送之后立即并行进行传送观察和失败评估。可在发出消息之后的任意时间修改失败条件,这会影响失败评估进程的结果。
现在参见图3,图中表示了描述根据本发明一个实施例的消息失败定义的流程图。通过在步骤302中确定是否需要特殊的(专用)消息失败条件,开始进程300。如果不需要任何特殊的失败条件,则在步骤304中,从另一对象或永久存储器产生或获得标准的预定失败模型的表达,并且结束失败定义的进程。如果需要特殊的失败条件,则在步骤306中,由使用失败定义模块的消息发送者确定失败条件。一旦条件被确定,则在步骤308中产生关于特殊失败模型的表达,并结束该进程。失败条件的表达是永久对象。
现在参见图4,图4中的流程解说明了根据本发明的一个实施例的发送具有失败条件的消息的进程。
通过在步骤402中定义消息失败(如同上面在图3的环境中所述),或者通过在步骤404中产生要发送的消息,开始进程400。这两个步骤的任意顺序都可以,但是为了完成在步骤406中使消息和失败表达联系起来的下一进程步骤,这两个步骤都需要被完成。随后可在步骤408中,利用消息传送模块发送和失败表达相联系的消息。
现在参见图5,图5中的流程解说明了根据本发明一个实施例的消息传送观察。
当消息传送模块(或者消息传送模块指定的实体)在步骤502中等待接收最终消息接受者给出的消息接受的确认时,开始进程500。这样的确认可由最终接受者直接传送给消息传送模块,或者通过使用最终接受者用于从目的地读取消息的特殊接口和对象,间接传送给消息传送模块。在直接通信的情况下,消息的读取和把确认接受发送给消息传送模块是两个独立的不同操作。在间接通信的情况下,当接受者读取消息时,系统暗中自动进行确认的发送。这种情况下,接受者使用系统提供的专用读取操作。
当收到一个确认时,在步骤504中,确定最终接受者的身份,并将其记录在消息传送日志中。消息传送日志是被发送消息的最终消息接受者的永久记录。随后通过在步骤506中确定是否继续进行观察,继续该进程。该判定会考虑外部和内部超时。内部超时是在系统内规定的和消息相关的超时。外部超时是在系统之外管理的事件(可能由应用程序管理),并且不和单一消息相关;外部超时是导致进程结束的外部事件。如果继续进行观察,则从接收确认的步骤,即步骤502重复进程。如果观察将要停止,则进程结束。
现在参见图6,图中表示了描述根据本发明一个实施例的消息失败评估的进程的流程图。
当在步骤602中利用失败表达(如上在图3的环境中所述)和消息传送日志(如上在图5的环境中所述),评估发送消息m的所有未评估失败条件时,开始进程600。一旦存在确定评估的标准,则可把条件评为真或假;例如,发生超时,或者最终消息接受者所读取消息的确认被输入消息传送日志。这样的事件,或者其它事件可触发条件的评估。
一旦一个条件被评估,则进程继续进行,在步骤604中检查特定的失败条件是否被评估为真。评估为真的失败条件暗示消息传送失败。如果是,则在步骤606中,失败评估模块把消息传送失败的结果通知发送给消息发送者,或者消息发送者指定的接收结果通知的对象。
在发送消息传送失败的结果通知之后,或者如果条件被评估为假,则通过在步骤608中确定是否继续进行评估,或者是否停止评估,继续该进程。如上所述,该判定会考虑外部和内部超时。如果要继续评估,则从评估消息m的所有未评估失败条件的步骤,即步骤602重复该进程。
如果判定要停止失败评估,则在步骤610中,过程确定是否所有的失败条件已被评估,并且是否所有条件都被评估为假。如果是,则在步骤612中,把消息传送成功的结果通知发送给消息发送者,或者指定的通知对象。否则,以及在已发送消息传送成功的通知的情况下,结束进程。
失败评估模块108(图1)提供消息发送者可在任意时刻使用其查询评估的状态,例如迄今哪些条件已被评估,或者从最终接受者收到多少接受确认的接口。
现在参见图7,图中的流程解说明了根据本发明的一个实施例,修改和/或替换关于被发送消息的失败条件的进程。
通过在步骤702中,确定是否需要修改失败条件,即相应的替换,开始进程700。该判定可由消息发送者完成。在希望修改失败条件的情况下,在步骤704中,按照上面在图3的环境中描述的进程,定义失败条件,随后在步骤706中使所得到的修改后的或者新的失败表达和被发送的消息联系起来。通过返回失败条件修改的初始判定状态,即步骤702继续该进程。如果判定不进行任何修改,则结束该进程。
上面的详细说明描述了实践本发明的优选方式。根据这里提供的教导,本领域的技术人员可实现几种变化。
例如,三个模块,即失败定义模块,失败评估模块和消息传送模块(图1)可被实现成单个模块,或者可被分成更多的独立模块(例如,独立的消息传送观察模块)。
除了消息失败条件之外,或者替代消息失败条件,可规定消息成功条件。可以依据失败来规定消息成功条件,即被转换成对应的失败条件,从而如上所述的实现本发明的优选方式在所有方面适合于成功条件。
其它变化可包括消息发送之前,消息失败定义和消息产生的可变顺序,最终接受者观察消息读取的不同方式,以及把消息的评估结果通知消息发送者的不同方式。
现在参见图8,图中表示了图解说明计算机系统的通用硬件结构的方框图,所述计算机系统适合于实现采用附图中描述,并且在这里详细说明的消息接发进程的系统的一或多个不同功能组件/模块。要明白可在这样的计算机系统上,或者在独立的一个以上的这种计算机系统上实现如图1的环境中举例说明的消息接发系统的各个组件。
如图所示,按照处理器800,存储器810和I/O装置820可实现该计算机系统。要认识到这里使用的术语“处理器”包括任意处理器,例如包括CPU(中央处理器)和/或其它处理电路的处理器。这里使用的术语“存储器”包括与处理器或CPU相关的存储器,例如RAM,ROM,固定存储器(例如硬盘驱动器),可拆卸的存储器(例如磁盘),快速存储器等。另外,这里使用的术语“输入/输出装置”包括把数据输入处理器的一个或多个输入装置,例如键盘,和/或呈现和处理器相关的结果的一个或多个输出装置,例如CRT显示器和/或打印机。另外要明白术语“处理器”可涉及一个以上的处理器,并且与处理器相关的各处部件可被其它处理器共享。
因此,包括用于实现这里所述的本发明的方法的指令或代码的软件组件可保存在一个或多个相关存储器(例如ROM,固定或可拆卸的存储器)中,并且当准备使用所述软件组件时,所述软件组件被部分或者整个载入(例如载入RAM中),并被CPU执行。
虽然这里参考附图,说明了本发明的例证实施例,不过要明白本发明并不局限于这些具体实施例,本领域的技术人员可对这些实施例做出各种其它变化和修改。
权利要求
1.一种供异步消息接发系统使用的基于计算机的方法,所述方法包括下述步骤为要在系统中发送的至少一个消息确定至少一种消息传送结果条件,并使所述至少一种消息传送结果条件和要在系统中发送的消息相关联;在系统中发送具有相关联的至少一种消息传送结果条件的消息;和监视发送消息的传送,并根据相关联的至少一种消息传送结果条件,评估消息的传送结果,从而可把消息的传送结果通知消息的发送者。
2.按照权利要求1所述的方法,其中传送结果是成功和失败之一。
3.按照权利要求1或2所述的方法,其中与特定消息无关地确定至少一种消息传送结果条件。
4.按照前述任意权利要求所述的方法,其中消息传送结果条件被表达成永久对象。
5.按照权利要求4所述的方法,其中特定消息传送结果条件表达是一组相关对象。
6.按照权利要求1-3任一所述的方法,其中要发送的消息和呈一个或多个永久对象形式的消息传送结果条件的表达相关联。
7.按照权利要求6所述的方法,其中消息传送结果条件的特定表达和一组不同消息相关联。
8.按照前述任意权利要求所述的方法,其中根据一个或多个目的地和一个或多个最终消息接受者中的至少一个,执行监视传送步骤。
9.按照权利要求1所述的方法,其中监视传送步骤包括把消息接受记录在永久消息传送日志中的步骤。
10.按照前述任意权利要求所述的方法,其中利用结果表达对象和其中记录消息接受的消息传送日志,评估传送结果。
11.按照前述任意权利要求所述的方法,其中消息发送者询问传送结果评估的状态。
12.按照前述任意权利要求所述的方法,其中传送结果被发送给消息发送者。
13.按照权利要求1-11任一所述的方法,其中传送结果被发送给消息发送者指定的接收结果通知的对象。
14.按照前述任意权利要求所述的方法,其中至少消息传送监视和传送结果评估之一具有与之相关的超时。
15.按照前述任意权利要求所述的方法,还包括在消息被发出之后,修改和该消息相关联的一种或多种消息传送结果条件的步骤。
16.按照权利要求1-14任一所述的方法,还包括在消息已被发出之后,替换和该消息相关联的一种或多种消息传送结果条件的步骤。
17.一种供异步消息接发系统使用的设备,所述设备包括完成下述操作的一个或多个处理器(i)为要在系统中发送的至少一个消息确定至少一种消息传送结果条件,并使所述消息传送结果条件和要在系统中发送的消息相关联;(ii)在系统中发送具有相关联的消息传送结果条件的消息;和(iii)监视发送消息的传送,并根据相关联消息传送结果条件,评估消息的传送结果,从而可把消息的传送结果通知消息的发送者。
18.按照权利要求17所述的设备,其中消息传送结果是成功和失败之一。
19.按照权利要求17或18所述的设备,其中与特定消息无关地确定至少一种消息传送结果。
20.按照权利要求17-19任一所述的设备,其中消息传送结果条件被表达成永久对象。
21.按照权利要求20所述的设备,其中特定消息传送结果条件表达是一组相关对象。
22.按照权利要求17-19任一所述的设备,其中要发送的消息和呈一个或多个永久对象形式的消息结果条件的表达相关联。
23.按照权利要求22所述的设备,其中消息传送结果条件的特定表达和一组不同消息相关联。
24.按照权利要求17-23任一所述的设备,其中根据一个或多个目的地和一个或多个最终消息接受者中的至少一个,执行消息传送监视操作。
25.按照权利要求17-24任一所述的设备,其中消息传送监视操作包括把消息接受记录在永久消息传送日志中。
26.按照权利要求17-25任一所述的设备,其中利用结果表达对象和其中记录消息接受的消息传送日志,评估传送结果。
27.按照权利要求17-26任一所述的设备,其中消息发送者询问传送结果评估的状态。
28.按照权利要求17-27任一所述的设备,其中传送结果被发送给消息发送者。
29.按照权利要求17-27任一所述的设备,其中传送结果被发送给消息发送者指定的接收结果通知的对象。
30.按照权利要求17-29任一所述的设备,其中至少消息传送结果监视和传送结果评估之一具有与之相关的超时。
31.按照权利要求17-30任一所述的设备,其中一个或多个处理器还在消息被发出之后,修改和该消息相关联的一种或多种消息传送结果条件。
32.按照权利要求17-30任一所述的设备,其中一个或多个处理器还在消息被发出之后,替换和该消息相关联的一种或多种消息传送结果条件。
33.一种包括指令的计算机程序,当在数据处理系统上执行所述指令时,所述指令使所述系统执行如权利要求1-16任一所述的方法。
34.一种和异步消息接发系统相关联的应用编程接口,所述接口包括当被执行时,允许实现下述步骤的软件代码基于每条消息,规定消息传送结果条件;使消息和消息结果条件相关联;发出具有相关联的结果条件的消息;相对于消息传送的结果条件,询问消息传送的状态;允许为某一消息规定的结果条件进行至少修改和替换之一;和指定接收评估结果通知的对象。
35.一种供异步消息接发系统使用的设备,所述设备包括能够完成下述操作的一个或多个处理器(i)把消息结果条件表达成永久对象;(ii)观察消息传送;(iii)评估消息结果条件;(iv)回答相对于消息传送结果条件对消息传送状态进行的询问;和(v)把关于每个被发送消息的评估结果通知消息发送者或者发送者指定的对象。
全文摘要
一种供异步消息接发系统之用的基于计算机的方法,包括下述步骤(i)为要在系统中发送的至少一个消息确定至少一种消息传送结果条件,并使所述至少一种消息传送结果条件和要在系统中发送的消息相关联;(ii)在系统中发送具有相关消息传送结果条件的消息;和(iii)监视发送消息的传送,根据相关联消息传送结果条件,评估消息的传送结果,从而可把相对于最终接受者的消息传送结果通知消息的发送者。
文档编号G06F9/54GK1545655SQ01814095
公开日2004年11月10日 申请日期2001年7月26日 优先权日2000年8月15日
发明者托马斯·米卡尔森, 伊萨贝勒·鲁费路, 斯坦利·苏顿, 史蒂芬·泰, 泰, 苏顿, 勒 鲁费路, 托马斯 米卡尔森 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1