首页> 中国专利> 消息队列中逻辑关联的消息的自动合并

消息队列中逻辑关联的消息的自动合并

摘要

本发明实施例提供了一种用于在消息队列中消息合并的方法、系统和计算机程序产品。在本发明的实施例中,可以提供一种用于在消息队列中消息合并的方法。该方法可以包括在由主机计算平台的处理器在存储器中执行的消息队列管理器中接收用于将新消息添加到消息队列的请求。该方法还可以包括用于规定是否应该发生合并的合并指示符。该方法还可以包括识别将新消息与消息队列中现存消息相关联的关联键,并在消息队列中定位对应于所识别的关联键的关联消息。最后,该方法可以包括将新消息与消息队列中所定位的关联消息相合并。

著录项

  • 公开/公告号CN102087615A

    专利类型发明专利

  • 公开/公告日2011-06-08

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN201010549939.5

  • 申请日2010-11-15

  • 分类号G06F9/46(20060101);

  • 代理机构11105 北京市柳沈律师事务所;

  • 代理人黄小临

  • 地址 美国纽约阿芒克

  • 入库时间 2023-12-18 02:30:29

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-10-30

    授权

    授权

  • 2011-07-20

    实质审查的生效 IPC(主分类):G06F9/46 申请日:20101115

    实质审查的生效

  • 2011-06-08

    公开

    公开

说明书

技术领域

本发明涉及消息队列管理领域,并且更具体地,涉及消息队列中逻辑关联的消息的程序性(programmatic)关联。

背景技术

在信息技术领域中,消息队列是用于处理间通信或线程间通信的软件工程组件。该组件使用消息器可以将消息放入其中的、以及指定的接收器可以从其中提取消息的队列。在该方面,消息队列可以是使得能够在消息器和指定的接收器之间异步传递消息的通信组件。在操作时,消息队列可以支持多个消息器和接收器,使得对于一组参与方可以实现异步通信。

消息队列的异步特性提供了用于不同技术的理想的技术耦合器。具体地,只要单独的技术可以访问消息队列,单独并不同的技术就可以处理传递的消息,使得可以进行通信。具体地,消息队列可以通过用于打开、写入、读和关闭消息队列的应用编程接口(API)来暴露(expose)不同的方法调用(call)。每个应用又可以包括调用(invoke)这些方法调用(call)的序列以将消息放置在消息队列中或者从消息队列中提取消息的逻辑。具体地,在操作时,当请求时,API可以搜索消息队列来寻找可用消息,并且可以将它返回给正请求的逻辑。

通常,一个或多个应用将消息放置在消息队列上以被其他应用所处理。当消息到达消息队列时,可以处理消息,或者可以积累消息以在稍后进行处理。在后一种情况下,可以在恰当时逻辑地关联所积累的消息。例如,可以通过共同主题将属于相同主题的消息、例如属于与相同帐户有关的金融操作的消息、或者属于相同的人的联系人(contact)管理操作的消息逻辑地关联。

典型地,当由应用处理消息队列中的逻辑关联的消息时,消息队列中的每个消息独立于消息队列中的其它消息而被处理。在该方面,在消息队列中的每个消息属于将由应用执行的事务(transaction)的情况下,响应于来自消息队列的相应消息的提取来执行每个事务,而不管与保持在消息队列中的任何其它消息相应的任何其它事务。或者,应用可以预处理消息队列中的所有消息来识别逻辑关联的消息,并且可以在处理所合并的消息之前执行所识别的逻辑关联的消息的合并。

然而,本领域技术人将将意识到,即便在逻辑地关联的消息队列中的消息的情况下应用仍然有责任单独处理消息队列中的消息或者在处理所合并的消息之前执行逻辑关联的消息的合并以解决逻辑关联。在任一情况下,将需要额外的计算机处理,增大了应用程序的复杂性和处理时间。

发明内容

本发明实施例解决了与消息队列管理有关的现有技术的缺点,并提供了一种用于在消息队列中消息合并的新颖且非显而易见的方法、系统和计算机程序产品。在本发明的实施例中,可以提供一种用于在消息队列中消息合并的方法。该方法可以包括在由主机计算平台的处理器在存储器中执行的消息队列管理器中接收用于将新消息添加到消息队列的请求。该方法还可以包括识别将新消息与消息队列中现存消息相关联的关联键(key),并在消息队列中定位对应于所识别的关联键的关联消息。最后,该方法可以包括将新消息与消息队列中所定位的关联消息相合并。

在本发明的另一实施例中,可以提供一种消息排队数据处理系统。该系统可以包括包含存储器和至少一个处理器的主机计算平台。该系统还可以包括与主机计算平台耦连的消息队列,以及与消息队列耦连并在主机计算平台的存储器中由处理器执行的消息队列管理器。该系统还可以包括与消息队列管理器耦连的消息合并模块。该模块可以包括在由计算机的处理器在存储器中执行时使能的程序代码,以在由消息队列管理器接收的用于将新消息添加到消息队列的请求中,识别将新消息与消息队列中现存消息相关联的关联键,在消息队列中定位对应于所识别的关联的关联消息,并将新消息与消息队列中所定位的关联消息相合并。

本发明的其他方面将部分在如下描述中阐述,部分从描述中将显而易见,或者可以通过本发明的实践来学习。将通过所附权利要求中具体指出的元件和组合来实现和达到本发明的方面。将理解的是,前述大致描述和如下详细描述仅仅是示范性和解释性的,并且不限制所要求保护的本发明。

附图说明

合并于该说明书中并组成该说明书的一部分的附图例示了本发明的实施例,并与描述一起用来解释本发明的原则。在此例示的实施例是优选的,然而要理解的是,本发明不限于所示的精确布置和手段,其中:

图1是用于逻辑地合并在消息队列中的排队消息的处理的图示说明;

图2是被配置来逻辑地合并在消息队列中的排队消息的消息排队数据处理系统的示意性说明;以及

图3是说明用于逻辑地合并在消息队列中的排队消息的处理的流程图。

具体实施方式

本发明实施例提供了用于自动合并逻辑关联的消息的方法、系统和计算机程序产品。在本发明的实施例中,可以接收消息放置在消息队列中。例如,通过参考消息的消息头部中的数据或者嵌入在消息本身中的数据,通过环境变量,参考包括在用于将消息放置在消息队列上的命令(directive)中的参数、可以确定是否合并所接收的消息的指示。如果确定合并所接收的消息,则可以使用消息头部中的数据和/或消息数据,来使用用于将所接收的消息与消息队列中的另一消息相关联的关联键来建立两个消息之间的关联性。以这种方式,通过合并所关联的消息,可以减少消息队列中消息的数量。

在进一步说明中,图1图示性地描绘了用于逻辑地合并消息队列中的排队消息的处理。如图1所示,一个或多个应用110可以利用消息队列120来在消息队列120中交换多个应用消息140A。队列管理器130可以管理由应用110进行的将消息140A投递到消息队列120上以及由应用110进行的将消息140A从消息队列120中去除,来用于应用110中的处理。注意的是,当给定的应用110之一请求队列管理器130将消息140B添加到消息队列120上时,队列管理器130可以确定是否将消息140B与已经位于消息队列120中的消息140A中另一关联的消息相合并。如果是,则队列管理器130可以在与消息140A相关联的消息队列120中识别消息140A中特定的一个消息,并且队列管理器130还可以基于合并规则150中所选择的一个来执行消息140B与消息140A中相关联的一个的合并。

一旦应用了合并规则150中所选择的一个,就可以将消息140B的内容与消息队列中消息140中关联的一个相合并,并且可以丢弃消息140B。或者,可以将消息140中关联的一个的内容与消息140B相关联,并且可以从消息队列120中去除消息140中关联的一个并丢弃。作为另一替代实施例,可以将消息140B的内容和消息队列中消息140中关联的一个的内容组合为新的消息,并将其放置在消息队列120中。在任何情况下,可以由队列管理器130执行消息140B与消息队列120中消息140中关联的一个的合并,而不会不必要地加重应用110的负担。

可以在消息排队数据处理系统中实现参考图1描述的处理。在另一示例中,图2是被配置来逻辑地合并在消息队列中的排队消息的消息排队数据处理系统的示意性图示。该系统可以包括一个或多个服务器210,每个服务器包括一个或多个处理器、存储器和操作系统,每个服务器210主管一个或多个应用220的执行。可以在计算机通信网络240上通过终端用户客户端计算设备230访问一个或多个应用220。此外,可以在计算机通信网络240上将服务器210中单独的一些与另一服务器可通信地相耦连。

还可以在计算机通信网络240上将具有存储器和至少一个处理器的主机计算平台250与服务器210可通信地相耦连。主机计算平台250可以支持由消息队列管理器280管理的消息队列260的操作。在这方面,消息队列管理器280可以是由主机计算平台250的一个或多个处理器在存储器中执行的、并管理由应用220中不同的应用经由计算机通信网络240对消息队列260中的消息270的访问的计算机程序。此外,消息队列260中的每个消息270可以包括如本领域众所周知的在消息主体中表达的内容以及头部部分,以由消息队列管理器280用来确定对于消息队列260如何处理消息270中相应的一个。

消息合并模块290可以与消息队列管理器280相耦连,或者是消息队列管理器280的部件。消息合并模块290可以包括当被处理器执行同时被装载到计算机的存储器中时、可以管理消息队列260中消息270中所选择的一些的逻辑地合并的程序代码。在该方面,消息合并模块290可以作为程序代码在主机计算平台250的存储器中或者在直接或经由计算机通信网络240与主机计算平台250可通信地相耦连的不同计算平台的存储器内执行。

当在计算机的存储器中被处理器执行时,消息合并模块290的程序代码可以识别应用220用来将消息放置在消息队列260中的请求。对于每个请求,程序代码可以确定相对于消息队列260中的消息270中现存的一个、逻辑地合并对于消息是否是优选的。该确定可以基于存储在消息的头部中、在消息主体中或者在为消息队列260存储的其本身参数中的数据、或者作为参数由应用程序接口传递的数据、或者可由消息合并模块290访问的作为环境变量可得的数据。对于与将相对于消息队列260中的消息270中现存的一个逻辑地合并的消息相应的每个请求,程序代码可以在消息队列260中定位消息270中现存的一个,并且可以将合并规则应用到所定位的消息270中现存的一个以及请求中的相应消息。最后,程序代码可以将每个所合并的消息存储在消息队列260中。

在消息合并模块290的操作的再一说明中,图3是图示用于逻辑地合并消息队列中的排队消息的处理的流程图。开始于块305,可以接收应用置入(put)请求用于可以包括消息主体和消息头部的消息。请求还可以包括一个或多个参数,例如是否将消息与消息队列中的现存消息逻辑地合并的指示,以及在是的情况下的与现存消息相应的关联键。然而,在实施例的替代方面中,可以将参数作为消息头部的一部分、作为消息主体的内容的一部分、作为消息队列的属性、作为环境变量、作为队列消息的内容、或者作为文件或数据库中的内容来提供。

在块310中,可以为消息装载如果存在的合并指示符。在判断块315中,可以确定逻辑地合并对于消息是否是优选的。在逻辑地合并对于消息不是优选的情况下,在块360中,可以将消息存储在消息队列中,并且在块365中处理可以结束。反之,如果在判断块315中确定逻辑地合并优选,则在块320中可以为消息装载关联键,并且在块325中可以使用关联键定位消息队列中的关联消息。关联键可以是初始请求的一个参数或多个参数,作为消息头部的一部分、作为消息主体的内容的一部分、作为消息队列的属性、作为环境变量、作为队列消息的内容、作为文件或数据库中的内容、作为队列管理器属性、作为队列消息的一部分。在判断块330中,可以确定对于关联键是否没有关联消息可以在消息队列中定位。如果没有,则在块360中可以将消息存储在消息队列中,并且在块365中处理可以结束。反之,处理可以继续到块335。

在块335中,可以装载合并规则来将消息与在消息队列中所定位的关联消息相合并。合并规则可以包括每个消息中相关数据的描述以及如何将相关数据组合到单一消息中。例如,合并规则可以提供将每个消息中的数据映射到另一消息的标记语言以及用于将数据合并到所合并的消息中的位置中的命令。作为另一例子,合并规则可以是用于执行将两个消息的数据物理合并到单一消息中的可执行脚本或程序。可选地,可以以消息为基础在消息上指定合并规则,或者可以配置消息合并模块来使用具体合并规则。作为另一选择,合并规则可以指定是否以从两个消息的合并得到的修改形式用消息取代在队列中所定位的关联消息、或者是否以从两个消息的合并得到的修改形式更新所定位的关联消息。

在块340中,可以根据合并规则来合并消息,并在判断块345中,可以确定是否以从两个消息的合并得到的修改形式用消息取代在队列中所定位的关联消息、或者是否以从两个消息的合并得到的修改形式更新所定位的关联消息。如果是前者,则在块355中可以从消息队列中去除所定位的关联消息,并在块360中可以将消息的合并形式添加到消息队列。如果是后者,则在块350中,可以用所合并的数据来更新所定位的关联消息,并在块365中处理可以结束。

如本领域技术人员将意识到的,可以将本发明的方面体现为系统、方法或计算机程序产品。从而,本发明的方面可以采取全部硬件实施例、全部软件实施例(包括固件、驻留软件、微代码等)或者组合软件和硬件方面的实施例的形式,在此可以将它们大体上称为“电路”、“模块”或“系统”。此外,本发明的方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,其中在计算机可读介质上具有计算机可读程序代码。

可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算可读信号介质或者计算机可读存储介质。计算机可读存储介质可以是例如但不限于电的、磁的、光的、电磁的、或半导体的系统、装置或设备、或者前述任何恰当组合。计算机可读存储介质的更具体例子(非穷尽列表)将包括如下:具有一条或多条线路的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式压缩盘只读存储器(CD-ROM)、光存储设备、磁存储设备或者前述任何恰当组合。在本文档的上下文中,计算机可读存储介质可以是可以包括或存储可以由指令执行系统、装置或设备使用或者与之相联系的程序的任何有形介质。

计算机可读信号介质可以包括具有在其中体现的计算机可读程序代码的传播数据信号,例如在基带中或者作为载波的一部分。这样的传播信号可以采取多种形式中的任何一种,包括但不限于电磁波、光波或者其任何恰当组合。计算机可读信号介质可以是不是计算机可读存储介质的任何计算机可读介质,并且可以通信、传播或传输由指令执行系统、装置或设备使用或与之相联系的程序。

可以使用任何恰当介质来发送在计算机可读介质上体现的程序代码,包括但不限于无线、有线、光纤线缆、射频等或者前述任何恰当组合。可以以一种或多个编程语言的任何组合来写用于执行本发明的方面的操作的计算机程序代码,包括面向对象编程语言以及传统处理编程语言。程序代码可以作为单机软件包全部在用户的计算机上执行、部分在用户的计算机上执行、部分在用户的计算机上执行并部分在远程计算机上执行,或者全部在远程计算机或服务器上执行。在后一种方案中,可以通过任何类型的网络将远程计算机与用户的计算机相连,包括局域网(LAN)或者广域网(WAN),或者可以进行到外部计算机的连接(例如,使用互联网服务提供商通过互联网)。

上面参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图描述了本发明的方面。在这方面,图中的流程图和框图图示了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。例如,流程图或框图中的每个块可以代表模块、部分或者代码的一部分,其包含用于实现特定逻辑功能的一个或多个可执行指令。还应该注意的是,在一些替代实现方式中,块中标注的功能可以不按照图中标注的顺序发生。例如,以连续形式示出的两个块实际上可以基本并发地执行,或者取决于所涉及的功能,有时可以将块以相反的顺序执行。还将注意的是,可以由执行特定功能或动作的基于专用硬件的系统或者专用硬件和计算机指令的组合来实现框图和/或流程图图示的每个块以及框图和/或流程图图示中块的组合。

还将理解的是,可以通过计算机程序指令来实现流程图图示和/或框图的每个块以及流程图图示和/或框图中块的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图块或多个块中指定的功能/动作的手段。

还可以将这些计算机程序指令存储在可以引导计算机、其他可编程数据处理装置或其他设备以特定方式起作用的计算机可读介质中,使得存储在计算机可读介质中的指令产生包括实现在流程图和/或框图块或块中指定的功能/动作的指令的制造物。还可以将计算机程序指令装载到计算机、其他计算机数据处理装置或其他设置上以使操作步骤序列在计算机、其他可编程装置或其他设备上执行而产生计算机实现的处理,使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图块或块中指定的功能/动作的处理。

最后,在此使用的术语仅仅为了描述特定实施例的目的,而不试图限制本发明。如在此所使用的,单数形式“一”、“一个”和“该”也试图包括复数形式,除非上下文清楚地指示相反的情况。将进一步理解的是,当在该说明书中使用时,术语“包括”和/或“包含”说明特定特征、整数、步骤、操作、元件和/或部件的存在,而不排除一个或多个其他特征、整数、步骤、操作、元件、部件和/或其组合的存在或添加。

如下权利要求中的所有手段或步骤加上功能元件的相应结构、材料、动作和等价物试图包括任何结构、材料或动作来与明确要求保护的其他所要求的元件组合执行功能。为了说明和描述的目的提供本发明的描述,而不试图穷尽或以所公开的形式来限制本发明。许多修改和变型对于本领域技术人员将是明显的,而不脱离本发明的范围和精神。选择并描述了实施例以优选理解本发明的原则和实际应用,并使得本领域其他技术人员可以理解本发明以用于具有与所考虑的特定使用相适宜的各种修改的各种实施例。

参考本发明实施例详细描述了本申请的发明,将明显的是,修改和变型是有可能的,而不脱离在如下所附权利要求中限定的本发明的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号