当前位置: 首页 > 专利查询>微软公司专利>正文

使用子队列来增强本地消息处理制造技术

技术编号:3510647 阅读:297 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及使用子队列来增强本地消息处理的方法、系统、以及计算机程序产品。消息包括由父部分和下标部分组成的队列ID。父部分标识父值而下标部分标识父队列的子队列。消息通过改变下标值在逻辑上在队列之间移动,例如在子队列之间、在父队列和子队列之间、以及在子队列和父队列之间。应用程序可检查各消息,并基于消息内容(包括消息主体和标头)将各消息路由到指定子队列中。下标值可原地改变(例如当消息保持物理地存储在队列中时),以便于保留消息发送者标识并避免过早确认传递(即不产生返回ACK)。

【技术实现步骤摘要】

本专利技术涉及电子消息传送,尤其涉及使用子队列来增强本地消息处理
技术介绍
计算机系统和相关技术影响了社会的许多方面。实际上,计算机系统处理信息的能力已经改变了我们生活和工作的方法。现在计算机系统通常执行在计算机出现之前手工执行的大量任务(例如,字处理、日程安排以及数据库管理)。最近,计算机系统已彼此耦合并与其它电子设备耦合,以形成计算机系统和其它电子设备在其上能传送电子数据的有线和无线计算机网络。结果,可在计算机系统上执行的许多任务(例如,语音通信、访问电子邮件、控制家用电器、Web浏览、和打印文档)包括众多计算机系统和/或其它电子设备之间通过有线和/或无线计算机网络的电子消息的交换。网络实际上已变得如此丰富,从而简单的网络-使能计算系统可在通常称为“因特网”的网络连接上与遍布全球的数百万其它计算系统的任一台通信。这种计算系统可包括台式、膝上型、或书写板个人计算机;个人数字助理(PDA);电话;或能够在数字网络上通信的任何其它计算机或设备。为了在网络上通信,一个计算系统(在此通常称为“发送计算系统”)构建或以其它方式访问电子消息,并在网络上将该电子消息传送给另一个计算系统(在此称为“接收计算系统”)。当该电子消息是电子邮件或即时消息时,该电子消息由用户读取,或者相反可由运行在接收计算系统上的应用程序读取。该电子消息可在用户的可能帮助下通过运行在发送计算系统上的应用程序构建。在一些环境中,各应用程序使用排队消息通信彼此通信。排队通信包括各机制,使发送应用程序将消息写入发送队列、该发送队列将消息传送给接收队列、以及接收应用程序从接收队列中读取消息。各队列保持通信各方之外的通信状态,并提供它们之间的间接性程度。因此,排队消息传送提供松散耦合的应用程序之间的可靠通信。消息的发送者和接收者使用中介队列管理器来进行通信,并可独立关闭和重新启动,甚至可有不重叠的使用期。排队还使客户机和服务器能“以它们自己的步调”收发消息,其中队列收紧了两端的间隙。常常接收计算机系统会公布单个接收队列名称,从而其它计算机系统可将消息发送到接收队列中去。消息随后可从接收队列传递到适当应用程序。在一些环境中,消息从接收队列移到接收计算机系统上的其它队列中。例如,队列管理器可确定暂时不可处理排队消息(例如当适当应用程序不可用时)。因而,排队管理器可将该排队消息从接收队列移到另一队列,以便于使其它排队消息可用来处理。在稍后时间,队列管理器可将排队消息移回接收队列,并确定是否现在可处理该排队消息。不时地,对于队列管理器而言,还有必要将接收队列中的各个消息分成各个组,以比如将各消息路由到不同处理单元。然而,队列通常是整体式的,并不具有任何组织结构。因而,接收队列中消息的适当分类仅可通过将消息移出接收队列并移入接收计算机系统的其它队列才能实现。还可以是应用程序访问消息,并随后将其移到不同队列中。例如,当应用程序检测到一有害消息时(例如在处理消息时指定次数的失败读取或失败尝试之后),应用程序可暂时将该有害消息移到另一个队列(例如有害消息队列)中,所以可继续处理接收队列中的其它消息。然后在稍后时间,应用程序可将该有害消息移回接收队列并尝试再次读取并处理该有害消息。然而,“移动”操作会是资源密集的。例如,移动操作可使消息物理地从一存储器位置移到另一存储器位置。此外,当接收应用程序在队列之间移动消息时,会丢失向前赋予的标识信息(原始发送者的标识)。用于将一消息从一个队列移到另一个队列的典型机制是从一队列“Receive”(接收)并“Send”(发送)给另一队列。然而,在消息移动期间,消息通常离开消息传送系统(当调用Receive时)并再次进入消息传送系统(当调用Send时)。因而,消息传送系统在一段时间内无法跟踪该消息,并将再次进入的消息视为新消息。因为消息传送系统将该消息视为新消息,所以它会把移动者的标识赋予该消息,从而丢失原始发送者的标识。在消息移动期间将消息从消息传送系统中移去出于至少一个原因是有问题的。因为该消息离开消息传送系统,Receive使传递确认(“ACK”)发送。原始的发送者可接收到ACK并将该ACK视为已满足传递保证的表示。即,该ACK向发送应用程序表示接收应用程序处理了该消息。然而,如果消息在队列之间传送,则到接收应用程序的实际传递可能尚未进行。因而,发送应用程序可不适当地将该消息视为已处理的。响应于该ACK,发送应用程序可将该消息从本地高速缓存中移除,并继续发送消息序列中的其它消息。不幸的是,在接收应用程序将该消息移回到接收队列中并再次尝试处理该消息之后,会发生其它失败。最终,在指定次数的失败(以及可能队列之间的进一步移动)之后,接收应用程序可通知发送应用程序它不能处理该消息。作为响应,发送应用程序可尝试再次发送该消息。然而,因为发送应用程序先前响应于该ACK将消息从高速缓存中移去,发送应用程序可能没有办法表示该消息或访问该消息的内容。也会出现其它问题。例如,因为策略原因(例如安全性或配额设置),新的队列会无法接受来自移动队列的消息。新队列无法接受消息会使该消息被移到移动者的死消息队列中。因此,用于更有效和更准确地确认本地消息处理的系统、方法、计算机程序产品会是有利的。
技术实现思路
本领域现有状态的前述问题由本专利技术的诸原理解决,这些原理涉及使用子队列来增强本地消息处理的方法、系统、以及计算机程序产品。在一些实施例中,接收到的消息被分到子队列中。例如,队列管理器接收一消息,用于从发送应用程序传递给接收应用程序。该消息包括具有父值部分的队列标识符,在父值部分中存储了标识接收队列的父值。队列管理器基于所存储的父值将消息排入接收队列中。接收应用程序检查排队消息。接收应用程序赋予标识接收队列的子队列的子队列下标值。应用程序将子队列下标值存储在队列标识符的下标值部分中,以便于根据消息检查在逻辑上将消息从接收队列移到接收队列的已标识子队列中。在其它实施例中,消息在各队列之间移动。例如,队列管理器接收标识第一队列的第一句柄。该第一句柄包括标识队列的父部分的父值,以及标识队列的第一子部分的第一下标值。队列管理器使用该第一句柄来定位第一队列内的消息。该消息包括一队列标识符,具有存储父值的父值部分以及存储第一下标值的下标值部分。队列管理器接收第二句柄,该第二句柄标识要接收定位消息的第二队列。该第二句柄包括相同的父值,以及标识队列的第二子部分的第二下标值。该队列管理器将第二下标值存储在队列标识符的下标值部分中,以便于在逻辑上将消息从第一队列移到第二队列。根据本专利技术各原理划分并移动的消息可存储在计算机可读介质上。该消息可包括存储表示电子消息内容的内容值的内容字段。该消息可包括存储标识队列的队列标识符的队列标识符字段,在该队列中要排入内容字段中表示的电子消息的内容。该队列标识符字段还可包括存储标识队列父部分的父值的父值字段,以及存储标识队列子部分的下标值的下标值字段。本专利技术的这些和其它特征及优点将从以下描述和所附权利要求中变得更加显而易见,或可从下文陈述的本专利技术实践中获知。附图说明为了进一步阐述本专利技术的上述和其它优点及特征,本专利技术的更具体描述将参照附图中所示的特定实施例提交。可以理解,这些附图仅示出本专利技术的典型实施例并因此不被视为限制其范围。本文档来自技高网
...

【技术保护点】
在可与一个或多个其它计算机系统一起网络连接到网络的计算机系统上,所述计算机系统包括控制所述计算机系统上一个或多个消息队列的队列管理器,一种用于有效划分队列内排队的消息的方法,所述方法包括:所述队列管理器从发送应用程序接收消息的动作,所述消息用于传递给接收应用程序,所述消息包括队列标识符,所述队列标识符具有存储标识接收队列的父值的父值部分;所述队列管理器基于所存储的父值将所述消息排入所述接收队列的动作;所述接收应用程序检查所述入队消息的动作;赋予子队列下标值的动作,所述子队列下标值标识所述接收队列的子队列;将所述子队列下标值存储在所述队列标识符的下标值部分中,从而根据所述消息检查在逻辑上将所述消息从接收队列移到接收队列的被标识子队列中的动作。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:A达迪欧莫弗RD希尔
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1