CN102368212A - 消息队列管理 - Google Patents

消息队列管理 Download PDF

Info

Publication number
CN102368212A
CN102368212A CN2011102709235A CN201110270923A CN102368212A CN 102368212 A CN102368212 A CN 102368212A CN 2011102709235 A CN2011102709235 A CN 2011102709235A CN 201110270923 A CN201110270923 A CN 201110270923A CN 102368212 A CN102368212 A CN 102368212A
Authority
CN
China
Prior art keywords
message queue
assembly
message
response
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011102709235A
Other languages
English (en)
Other versions
CN102368212B (zh
Inventor
S.M.伍兹
吴暿文
D.J.普拉斯特
A.J.格拉弗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102368212A publication Critical patent/CN102368212A/zh
Application granted granted Critical
Publication of CN102368212B publication Critical patent/CN102368212B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0718Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an object-oriented system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Abstract

本发明提供了消息队列管理技术,所述消息队列管理技术被设计来减小多组件应用变为非响应的或然率,以及如果一个个组件确实变为非响应的则使能用于它们的恢复选项。在至少一些实施例中,消息队列管理器检测应用界面的组件何时变为非响应的,并从共享的消息队列中拆离该组件。共享的消息队列可以继续处理用于其它响应的组件的消息,而用于非响应的组件的消息传送则经由单独的队列来管理。消息队列管理器还可以把非响应的组件通知给用户,并向用户提供便于恢复非响应的组件的选项。而且,在至少一些实施例中,消息队列管理器可以监视被拆离的组件,并且当拆离的组件重新变为响应的时,重附该拆离的组件。

Description

消息队列管理
背景技术
 诸如标签式(tabbed)web 浏览器那样的多组件(component)应用程序受到用户欢迎,因为它们是通过单个应用来同时与多个资源(例如,文档、网页、文件等等)交互的一种方便的方式。传统上,利用多组件的应用采用共享的输入消息队列来操控用于多个组件的消息处理和排序。不幸地,在传统的方法下,如果一个组件变为不响应的,则该组件停止处理它的来自共享的队列的消息。这可能引起用于共享相同消息队列的其它组件的消息的中断。因此,一个不响应的组件可能实际上会堵塞队列,并使得其它组件也变为不响应的。
发明内容
 这个概要被提供来以简化的形式介绍概念的选择,这些概念还将在下面的详细说明中进行描述。这个概要既不打算标识要求保护的主题的关键特征或必要特征,也不打算被使用来限制要求保护的主题的范围。
 各种实施例提供了消息队列管理技术,所述消息队列管理技术被设计来减小多组件应用变为非响应(non-responsive)(例如,“锁住(lock up)”、“挂起(hang)”、“崩溃(crash)”等等)的或然率,以及如果一个个组件确实变为非响应的则使能用于它们的恢复选项。在至少一些实施例中,消息队列管理器可被实施来检测应用的组件何时变为非响应的,并从共享的输入消息队列中拆离(detach)该组件。共享的队列可以继续处理用于其它响应的组件的消息,而用于非响应的组件的消息传送则经由单独的队列被管理。消息队列管理器还可以把非响应的组件通知给用户,并向用户提供便于恢复非响应的组件的选项。而且,在至少一些实施例中,消息队列管理器可以监视被拆离的组件,并且当拆离的组件重新变为响应的时,重附(reattach)该拆离的组件。
附图说明
 在附图上,相同的数字被使用来表示同样的特征。
 图1图示了在其中可以按照一个或多个实施例来使用这里描述的各种原理的操作环境。
 图2图示按照一个或多个实施例的、用于多组件应用的示例性消息队列管理技术的表示。
 图3图示按照一个或多个实施例的示例性web浏览器。
 图4是描述按照一个或多个实施例的方法的步骤的流程图。
 图5图示可被使用来实施一个或多个实施例的示例性系统。
具体实施方式
 概述
各种实施例提供了消息队列管理技术,所述消息队列管理技术被设计来减小多组件应用变为非响应(例如,“锁住”、“挂起”、“崩溃”等等)的或然率,以及如果一个个组件确实变为非响应的则使能用于它们的恢复选项。在浏览环境下,消息队列管理器可被实施来管理用于标签式浏览器用户界面的标签。在至少一些实施例中,消息队列管理器可以检测应用的组件(例如,标签)何时变为非响应的并从共享的输入消息队列中拆离该组件。共享的队列可以继续处理用于其它的响应的组件的消息,而用于非响应的组件的消息传送则经由单独的队列被管理。消息队列管理器还可以把非响应的组件通知给用户,并向用户提供选项以便于恢复非响应的组件。而且,在至少一些实施例中,消息队列管理器可以监视被拆离的组件,并且当拆离的组件重新变为响应的时,重附该拆离的组件。 
 在以下的讨论中,提供了标题为“操作环境”的段落,它描述了在其中可以使用一个或多个实施例的一种环境。在此之后,标题为“消息队列管理”的段落描述了按照一个或多个实施例的、用来管理用于多组件应用的消息队列的示例性技术。接着,标题为“示例性web浏览器”的段落描述了按照一个或多个实施例的标签式 web浏览器界面、通知和恢复选项的例子。然后,标题为“示例性方法”的段落在示例性方法的上下文中描述了与消息队列管理有关的示例性技术和特征。最后,标题为“示例性系统”的段落描述了可以被利用来实施一个或多个实施例的示例性系统。
 操作环境
图1图示按照一个或多个实施例的操作环境,总的以100表示。环境100包括:计算设备102,其具有一个或多个处理器104;一个或多个计算机可读存储介质106;以及驻留在计算机可读存储介质上并且可由处理器执行的一个或多个应用108。作为例子而不是限制,计算机可读存储介质可包括:典型地与计算设备相关联的、所有形式的易失性和非易失性存储器和/或存储介质。这样的介质可包括ROM、RAM、快闪存储器、硬盘、可拆卸介质等等。下面,在图5上显示和描述了计算设备的一个具体的例子。
 另外,计算设备102包括采用web浏览器110 的形式的软件应用,其包括或者否则利用如以上和以下描述的那样运行的消息队列管理器111。消息队列管理器可被配置成提供对于多组件应用的组件的管理,以便对抗由于非响应的组件而造成的崩溃/挂起并从其中恢复。在标签式浏览环境下,消息队列管理器可操作来管理用于web浏览器110的多个标签的一个或多个输入消息队列。在至少一些实施例中,消息队列管理器可以检测应用的组件(例如,标签)何时变为非响应的、并从共享的输入消息队列拆离该组件。通过这样做,用于非响应的组件的消息处理可以由单独的“拆离”消息队列来操控。这使得该共享的队列能继续处理用于应用的其它响应的组件的消息,以使得可以继续与响应的组件进行交互。消息队列管理器还可以把非响应的组件通知给用户,并向用户提供选项以便于恢复非响应的组件。而且,在至少一些实施例中,消息队列管理器可以监视被拆离的组件/标签,并且当拆离的组件重新变为响应的时,重附该拆离的组件。
 这里,在浏览环境和用于web浏览器或其它应用的标签的上下文中描述各种例子。然而,应意识到,消息队列管理器111和对应的技术可以在各种各样的环境下使用,以及可以与利用多组件的任何适当的应用一起使用。作为例子而不是限制,消息队列管理器可被实施来管理用于各种应用108的组件,应用108包括但不限于:电子邮件应用、桌面生产力(desktop productivity)应用、游戏应用、媒体应用和/或计算设备102的其它适当的应用。
 另外,环境100包括: 网络112,诸如互联网;以及可以从其接收内容和向其发送内容的一个或多个web服务器114,正如在上面和下面描述的。这样的内容可包括从web服务器接收的网页。
 计算设备102可以被体现为任何适当的计算设备,作为例子而不是限制,诸如是台式计算机、便携式计算机、手持计算机,诸如个人数字助理(PDA)、蜂窝电话等等。
 在描述了示例性操作环境后,现在考虑有关能利用消息队列管理器111的一些示例性实施例的讨论。
 消息队列管理
图2图示按照一个或多个实施例的、用于多组件应用的消息队列管理的示例性技术的表示。具体地,图2表示在与消息队列相关联的不同状态之间的转移,其可以由适当地配置的计算设备来执行,诸如包括或否则利用消息队列管理器111的图1的示例性计算设备102。
 在状态200,具有多个组件204(1)-204(3)的多组件应用202的实例初始地被配置成使用共享的输入消息队列206。在这个状态中,用于示例性组件204(1)-204(3) 中的各个组件的消息被排序,并经由共享的输入消息队列206来操控。
 正如这里使用的,多组件应用是使得用户能够经由用于应用的界面的分开的不同部分或“组件”而与多个资源(例如,网页、文档、文件、脚本、媒体内容等等)进行交互的应用。在本上下文中,术语组件可以指多组件应用的不同的、可分开地导航和/或可运行的部分。组件可以是被包含在母应用的公共主窗口或框内的分开的子应用。因此,利用多个组件的界面可被包含在用于该应用的单个窗口内。组件可被看作为半自主的,因为各组件可以是相同应用的组成部分,但通过一个组件的用户交互可以与通过另一个组件的用户交互无关。不同的组件可以交替地经由共同的显示部分和/或同时地在用户界面的不同区域中被选择性地暴露。共享的队列可被利用来同步和协调不同的多个半自主组件,以使得它们表现为单个组件。
 考虑了各种各样的多组件应用的例子,对于它们可以使用这里描述的消息队列管理。如上所述,被配置成使能实现多标签的标签式 web浏览器是多组件应用的一个例子。标签也可以在其它上下文中被使用,诸如,用于字处理应用、电子邮件客户端或多媒体应用。在另一个例子中,诸如办公室生产力套件那样的应用可被配置成具有不同的标签、节、列、或其它组件,以方便与包括文本文档、网页、电子表格、图形等等的多个资源交互作用。
 当消息队列管理器111(图1)检测到组件变为非响应时,消息队列管理器111可以通过以下方式来响应,即:使得非响应的组件被从共享的输入消息队列206中拆离。例如,假设由于某种原因,组件204(1)挂起,或否则变为非响应的。消息队列管理器111可以以任何适当的方式检测到组件204(1)是非响应的,这方面的例子在上面和下面讨论。响应于所述检测,消息队列管理器111可以操作来从共享的输入消息队列中拆离组件204(1)。
 具体地,非响应的组件204(1)可被拆离,如由图2的拆离状态208表示的。如所描绘的,拆离消息队列210可以与非响应的组件204(1)相关联,并可被使用来管理用于组件204(1)的消息传送。组件204(2)和组件204(3)可以继续使用共享的输入消息队列206。因此,用于非响应的组件的消息可以由拆离消息队列(detached message queue)210操控。共享的输入消息队列206可以继续处理用于其它响应的组件的消息,这样使得整个应用不会由于个体组件造成的中断而变为不响应的。在至少一些实施例中,消息队列管理器111可被配置成在要求时创建拆离消息队列210,以及指派该队列由组件专用。这可以响应于检测到该组件是非响应的而发生。用于该组件的消息于是可以被迁移到新创建的队列。另外地或替换地,消息队列管理器111可被配置成:根据需要,利用预先存在的拆离消息队列来操控非响应的组件。万一不同的组件变为非响应的,则预先存在的拆离消息队列可以对于所述组件被重复地使用。在这种情形下,消息队列管理器111可以在每次使用之前将预先存在的拆离消息队列初始化,和/或在每次使用之后清除该队列,以准备好该队列供下次使用。
 当消息队列管理器111检测到:被拆离的组件已经复原了响应性,则消息队列管理器 111可以通过以下方式来响应,即:使得所述非响应的组件被重附到共享的输入消息队列206中。例如,假设组件204(1)在一个时期内被如上所述地拆离,然后重新变为响应的。消息队列管理器111可以以任何适当的方式检测到该组件204(1)重新是响应的,这方面的例子在上面和下面进行讨论。响应于所述检测,消息队列管理器111可以操作来重附组件204(1)。
 具体地,非响应的组件204(1)可被重附,如由图2的重附状态212表示的。如所描绘的,单独的组件消息队列210已经被关闭或否则被移除。在重附状态212,用于组件204(1)的消息传送重新由共享的输入消息队列206来操控。这可以牵涉到将用于组件204(1)的消息与用于组件204(2)和组件204(3)的消息合并,而回到共享的输入消息队列206中。关于可被使用来从共享的输入消息队列中拆离和重附组件的技术的进一步细节可以在下面标题为“示例性方法”的段落中找到。
 在描述了消息队列管理的例子后,现在考虑示例性web浏览器的讨论,该示例性web浏览器可以利用按照一个或多个实施例的消息队列管理器111。
 示例性web浏览器
界面
图3图示按照一个或多个实施例的示例性web浏览器,总的以300表示。所描绘的web浏览器仅仅是可以利用多个组件(例如,标签)和消息队列管理器111(图1)来便于组件的管理的应用的一个例子。web浏览器300包括web浏览器用户界面302,其包括典型的工具,诸如向后和向前导航按钮、地址栏( bar)、搜索栏和可以支持多个标签的标签区(band)。例如,多个标签出现在图3所示的标签区中。标签被标明为组件204(1)-204(3),以表示关于图2讨论的组件可以对应于标签,诸如图3的示例性标签。web浏览器用户界面还包括内容呈现区域304(用交叉阴影线标明),在其中可以呈现内容。另外,web浏览器用户界面302包括通知栏 306。在一个或多个实施例中,通知栏被设计成帮助用户将焦点维持在他们的浏览活动上,而同时以建议的形式提供通知。经由通知栏给出的通知可包括涉及非响应的标签的通知,它们经由消息队列管理器111的操作而被输出或否则被引起,以便使能用于消息队列管理的各种技术。
 在至少一些实施例中,通知栏是非模式化的(non-modal)且在浏览视场内的某位置处给出,该视场被选择成减小用户的注意力分散。例如,在所图示和描述的实施例中,通知栏被在web浏览器的用户界面的底部处或底部附近给出,这里靠近内容呈现区域304的底部或在内容呈现区域304下面。通知栏被设计成是明显的然而是可忽略的,因此使得用户能够在内容呈现区域304中继续进行他们的浏览任务,而不会被模式化的对话分散注意力。此外,在至少一些实施例中,通知栏以覆盖web浏览器所呈现的内容的方式给出。因此,通知栏的位置实际上使得在内容呈现区域304内呈现的内容优先于可能在通知栏中出现的特定通知。
 通知
关于非响应的组件的通知可以以任何适当的方式被配置。适当的通知可包括:弹出式对话框、由web浏览器300或其它应用呈现的html页、标签式用户界面的标签警告、经由通知栏306给出的通知、和/或它们的组合。通知可被配置成包括一个或多个用户可选择的手段,以直接执行恢复和/或通过可经由该通知访问的单独的恢复对话来执行恢复。恢复对话可被配置成提供关于崩溃和/或各种可提供的恢复选项的附加信息。
 例如,图3上的通知栏306被描绘为显示关于非响应的组件的示例性通知。具体地,消息队列管理器111可以响应于检测到示例性浏览器300的标签是非响应的,而使得通知被给出。通知可被配置成出现在对应的标签上。因此,对应于后台中的标签的通知可能不出现,直到用户把该后台标签选择为活动标签为止。这个方法可以限制用户的浏览或与该活动标签的其它交互的中断。
 在所图示的例子中,通知包括指示“标签没有响应”的信息部分308。信息部分也可以标识页名称、URI、域名和/或与非响应的组件相关联的其它标识符,以标识崩溃的源。例如,消息队列管理器可以分析用于web资源的域字符串,以确定域名并配置关于非响应的标签的通知以便指示域名,诸如指示“Foo.com没有响应”。任选地,通知还可以包括一个或多个用户可选择的手段,诸如所示的按钮,总的以310表示,它们被配置成提供各种选项以用于恢复非响应的标签或其它组件。例如,图3的示例性按钮包括“恢复标签”按钮,当被选择时,它可被配置成通过该通知来直接执行动作以恢复该标签。示例性动作可包括重新装载页面,停止正在与该标签相关联地执行的脚本,退回到浏览历史中的以前的资源或URL,等等。另外地或替换地,“恢复标签”按钮可以暴露另一个对话或界面,用户可以通过其获得关于非响应的标签的更详细的信息,和/或选择各种恢复选项。示例性按钮还包括 “关闭标签”按钮,用户可以选择它来关掉非响应的标签。
 恢复选项
如上所提到的,可以经由随通知而包括的用户可选择的手段,和/或通过具有各种可选择的恢复选项的恢复对话,而使用来恢复非响应的标签或其它组件的各种选项可获得。可以通过诸如菜单项选项、工具栏、键盘快捷方式、按钮等等那样的典型的手段,使得恢复选项可获得。
 现在考虑关于几个示例性恢复选项的细节,当检测到非响应的标签时,能使得所述示例性恢复选项可获得。选项可以被提供来关闭标签。因此,用户可以仅仅选择停止与非响应的标签进行交互。另外,选项可被提供来复原标签。复原选项的选择可促使web浏览器试图重新装载和/或重新导航到所选择的资源(例如,页面、文档、网址等等)。
 另一个选项使得用户能够执行在与非响应的组件相关联的资源之间的交换。所述交换实际上隐藏和/或终止(kill)非响应的组件,并创建具有新资源的新组件来替代非响应的组件。该交换可以在后台对于用户透明地被执行。从用户的角度来看,就好像是新的资源被通过该组件来选择和给出。
 例如,可以提供按钮或其它手段,当其被选择时,自动地把非响应的标签导航到另一个网页。该另一个网页可以是预先指定的缺省的页面或主页。另外地或替换地,用户可以通过以下方式启动交换,即以各种方式输入或选择另一个资源,诸如从收藏页列表中选择链接、在web浏览器的地址栏中键入新的地址、选择诸如“back(后退)”或“home(主页)”按钮那样的导航按钮等等。当对于非响应的标签发生另一个资源的选择时,消息队列管理器111可以检测到这一点,并自动启动交换,它隐藏或终止非响应的标签,创建指引到新选择的资源的新标签,并用新标签无缝地替代该非响应的标签。
 另外,可以提供脚本恢复选项来使得用户能够停止执行可能是导致该非响应的标签的原因的脚本。例如,当消息队列管理器111检测到非响应的标签时,可以进行检验以查明是否正在执行与该标签相关联的脚本。如果脚本被识别,则消息队列管理器111可以使用如上面和下面描述的通知来告知用户。所述通知还可以包括按钮或其它用户可选择的手段,当其被选择时,使得脚本停止执行。如果脚本已导致标签是非响应的,那么以所描述的方式尽可能快地停止脚本可以快速地复原标签的响应性,以及限制用户的浏览的中断。
 还应当指出,“自恢复”选项也可以被实施来使能消息队列管理器111在没有任何用户干预的情况下自动地执行恢复。在这个选项下,消息队列管理器111可以确定非响应的组件已经重新变为响应的。所述确定可以与用户动作无关地发生,诸如是和恢复按钮的用户选择无关的或者和与恢复对话的交互无关的。当消息队列管理器111确定响应性被复原时,消息队列管理器111可以自动地操作来将组件重附到该队列,在显示器部分——诸如在图3的内容呈现区域304中——呈现对应于该组件的数据,以及如果适当的话,解除(dismiss)对应的通知。 “自恢复”方法可被实施来避免用通知和/或针对靠它们自己恢复(情况经常如此)的组件的恢复选项来打断用户。
 在考虑了按照一个或多个实施例的、利用多个标签和通知栏的示例性web浏览器后,现在考虑关于在示例性方法的上下文中被描述的消息队列管理的某些另外的细节。
 示例性方法
图4是描述按照一个或多个实施例的方法的步骤的流程图。该方法可以结合任何适当的硬件、软件、固件或它们的组合而被实施。在至少一些实施例中,所述方法可以借助于适当配置的计算设备——诸如图1的包括或否则利用消息队列管理器111的示例性计算设备102——而被实施。
 回想起在初始状态下,诸如标签式 web浏览器那样的多组件应用可以利用共享的输入消息队列来操控用于所述组件的各个组件的消息。在具体的例子中,web浏览器可以具有独立地操作的多个标签,它们可被使用来访问来自web服务器的不同的资源。因此,每个标签可以被导航,以指向不同的资源或URL,并给出对应的内容。在初始状态,web浏览器可被配置成使用共享的输入消息队列来管理每个标签。例如,每个新的标签可以默认地被指派到共享的队列。
 消息队列管理器111可被实施来监视标签,以确保该标签保持为响应的。具体地,步骤400监视诸如用于示例性web浏览器的应用的标签的响应性。根据所述监视,步骤402确定标签是否变为非响应的。
 标签的监视可以以任何适当的方式发生。标签监视可以发生的一种方式是通过将周期性“心跳”消息发送到标签。换句话说,消息队列管理器111可被配置成用心跳消息轮询每个标签。心跳消息可被配置为基本请求消息,它促使标签发送应答消息。因此,消息队列管理器111可以监视标签是否发送应答消息。响应的标签将响应所述消息,以及消息队列管理器111可以得出结论:该标签是响应的。然而,如果标签未能响应心跳消息,则消息队列管理器111可以得出结论:该标签是非响应的。
 在另一种用于监视的示例性技术中,资源可被配置成把消息推送到消息队列管理器111,以便通知消息队列管理器111它们是响应的。这个方法虽然是合适的,但会牵涉到用使能被推送的消息的代码来重新配置资源。因此,与被推送消息的方法相比,如所述地使用心跳消息来轮询标签,可以是更有效的、不那么昂贵的和不那么复杂的,虽然二者都是可行的方法。如果每个步骤402都没有标签被检测为非响应的,则在步骤400执行的监视可以继续进行。应当意识到,即使在存在非响应的标签的情形下,步骤400的监视也可以继续进行,虽然这在图上没有明显地示出。
 当检测到非响应的标签时,步骤404可以拆离该标签。具体地,非响应的标签可以从由web浏览器或其它应用使用的共享的输入消息队列中被拆离。为了执行拆离,步骤406启动拆离队列。例如,消息队列管理器111可以创建或否则获得队列来以任何适当的方式操控用于非响应的标签的消息。这可以牵涉到在要求时创建新的队列、和/或准备好预先存在的队列以供非响应的标签使用。该初始化创建了在该队列与非响应的标签之间的关联。
 一旦适当的拆离队列被初始化,步骤408就把用于该标签的消息从共享的队列迁移到拆离队列。这可以包括在队列之间移动消息,以及确保消息被正确地排序。例如,消息可以是与定序信息相关联的,定序信息诸如是可被使用来在输入队列中对消息进行排序的时间戳和/或优先权。消息还可包括可被使用来把消息指引到适当的标签的瞄准(target)信息,诸如消息号、源名称和/或进程ID。
 为了执行与特定的非响应标签相关联的消息的迁移,消息队列管理器111可以查验瞄准信息,以识别和选择要被移动到拆离队列的消息。与被移动的消息相关联的定序信息可被利用来保留消息序列和/或如果适当的话对拆离队列中的消息进行重新排序。该标签现在可被认为是被拆离的,以及用于被拆离的标签的消息处理可以使用拆离队列而被执行。同时,共享的输入消息队列可以继续被使用来操控用于其它的“响应的”标签的消息。被保持在共享的输入消息中的消息也可以使用定序信息来酌情重新排序。
 一旦标签已被拆离,步骤410就监视被拆离的标签。根据监视,步骤412确定被拆离的标签何时重新变为响应的。可以利用任何适当的机制来监视被拆离的标签。例如,对被拆离的标签的监视可以以与上述对于共享队列的标签的监视相似的方式发生。在至少一些实施例中,消息队列管理器111可以操作来发送心跳消息给被拆离的标签,以及根据心跳消息来确定该被拆离的标签是否响应。
 当被拆离的标签变为响应的时,步骤414重附该标签。例如,如果消息队列管理器111接收到来自被拆离的标签的心跳消息响应,或否则确定标签是响应的,则消息队列管理器111可以使得该标签被重附到共享的队列。为了执行重附,步骤416把用于该标签的消息从拆离队列合并到共享的队列。例如,消息队列管理器111可以以对于共享队列中的消息恰当的顺序,把消息从拆离队列移回到共享的队列。前面提到的顺序信息可被使用来组合消息,以使得消息被正确地排序。例如,当消息被合并到共享的队列中时,与消息相关联的时间戳和/或优先权可被使用来对消息重新排序。
 一旦消息在步骤416中被合并,步骤418就清除(clear)拆离队列。如果消息队列管理器111被配置成重复地使用该队列,就可以执行这个步骤来准备好该队列以供另一个非响应的标签使用。在其中消息队列管理器111在要求时创建用于非响应标签的队列的实施例中,这个步骤会牵涉到关闭、删除、或否则停止运转该拆离队列。然后,可以在要求时创建另一个拆离队列,以便酌情来供不同的非响应标签使用。
 该标签现在可被认为是重附到共享的队列,以及重新经由该共享的队列来操控用于重附的标签以及其它标签的消息处理。
 在描述了按照一个或多个实施例的示例性方法后,现在考虑可以被使用来实施按照一个或多个实施例的、用于消息队列管理的各种技术的示例性系统。
 示例性系统
图5图示可被使用来实施上述的各种实施例的示例性计算设备500。计算设备500可以是例如图1的计算设备102或web服务器114。
 计算设备500包括:一个或多个处理器或处理单元502、一个或多个存储器和/或存储部件504、一个或多个输入/输出(I/O)设备506、以及总线508,总线508允许各种部件和设备互相通信。总线508代表几种类型的总线结构的任意一种或多种,包括存储器总线或存储器控制器、外围总线、加速的图形端口和使用各种各样的总线结构中任何总线结构的处理器或本地总线。总线508可包括有线和/或无线总线。
 存储器/存储部件504代表一个或多个计算机存储介质。部件504可包括易失性介质(诸如,随机存取存储器(RAM))和/或非易失性介质(诸如,只读存储器(ROM)、快闪存储器、光盘、磁盘等等)。部件504可包括固定的介质(例如,RAM、ROM、固定的硬驱动等等)以及可拆卸介质(例如,快闪存储器驱动、可拆卸硬驱动、光盘等等)。
 一个或多个输入/输出设备506允许用户输入命令和信息到计算设备500,还允许向用户和/或其它部件或设备给出信息。输入设备的例子包括键盘、光标控制装置(例如,鼠标)、话筒、扫描仪等等。输出设备的例子包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡等等。
 各种技术可以在这里在软件或程序模块的一般性上下文中描述。通常,软件包括执行特定的任务或实施特定的抽象数据类型的例行程序、程序、对象、组件、数据结构等等。这些模块和技术的实现可被存储在某种形式的计算机可读介质上,或通过某些形式的计算机可读介质来传送。计算机可读介质可以是可由计算设备存取的任何可获得的媒介或介质。作为例子,而不是限制,计算机可读介质可包括“计算机可读存储介质”。
 “计算机可读存储介质”包括易失性和非易失性的、可拆卸和非可拆卸的介质,它们以任何方法或技术被实施来存储信息,诸如计算机可读指令、数据结构、程序模块、或其它数据。计算机可读存储介质包括,但不限于:RAM、ROM、EEPROM、快闪存储器或其它存储器技术、CD-ROM、数字通用盘(DVD)、或其它光学存储装置、盒式磁带、磁带、磁盘存储装置或其它磁存储设备、或可被使用来存储想要的信息并可由计算机存取的任何其它媒介。
 结论
各种实施例提供了用于消息队列管理的技术,所述技术被设计来减小多组件应用变为非响应(例如,“锁住”、“挂起”、“崩溃”等等)的或然率,以及如果一个个组件确实变为非响应的,则使能用于它们的恢复选项。在至少一些实施例中,消息队列管理器可被实施来检测应用界面的组件何时变为非响应的,并从共享的消息队列中拆离该组件。共享的消息队列可以继续处理用于其它响应的组件的消息,而对于非响应的组件的消息传送则经由单独的队列被管理。消息队列管理器还可以把非响应的组件通知给用户,并向用户提供选项以便于非响应的组件的恢复。而且,在至少一些实施例中,消息队列管理器可以监视被拆离的组件,并且当拆离的组件重新变为响应的时,重附该拆离的组件。 
 虽然本主题已经以对于结构特征和/或方法行为特定的语言进行描述,但应当明白,在所附权利要求中定义的主题不是必须限于上述的特定的特征或行为。而是,上述的特定特征和行为是作为实施权利要求的示例性形式被公开的。

Claims (15)

1.存储指令的一个或多个计算机可读存储介质(106),所述指令当被计算设备执行时,使得计算设备实施消息队列管理器(111),该消息队列管理器被配置成执行以下动作,包括:
管理共享的输入消息队列,以便处理用于应用的多个组件的消息;
检测所述多个组件中的非响应的组件;以及
从共享的输入消息队列中拆离非响应的组件。
2.权利要求1的一个或多个计算机可读存储介质,其中所述应用包括web浏览器。
3.权利要求1的一个或多个计算机可读存储介质,其中所述多个组件包括用于该应用的标签式界面的多个标签。
4.权利要求1的一个或多个计算机可读存储介质,其中所述应用包括web浏览器,以及所述多个组件包括用于该web浏览器的标签式界面的多个标签。
5.权利要求1的一个或多个计算机可读存储介质,其中检测非响应的组件包括:
周期地发送消息到多个组件的每个组件,以便监视所述多个组件的响应性;以及
确定非响应的组件未能响应所述消息。
6.权利要求1的一个或多个计算机可读存储介质,其中所述消息队列管理器还被配置成执行以下动作,包括:
输出通知来把非响应的组件通知给用户,其中该通知是非模式化的且经由通知栏而被输出,所述通知栏覆盖由所述应用在内容呈现区域中呈现的内容。
7.权利要求6的一个或多个计算机可读存储介质,其中所述通知包括一个或多个用户可选择的手段,其被配置成使得恢复选项能够恢复非响应的组件。
8.权利要求1的一个或多个计算机可读存储介质,其中所述多个组件包括被包含在所述应用的公共框内的可分开地操作的子应用。
9.权利要求1的一个或多个计算机可读存储介质,其中拆离非响应的组件包括:
启动拆离消息队列,以便操控用于非响应的组件的消息;以及
将用于非响应的组件的消息从共享的输入消息队列迁移到拆离消息队列。
10.权利要求1的一个或多个计算机可读存储介质,其中所述消息队列管理器还被配置成执行以下动作,包括:
确定被检测为非响应的所述组件重新是响应的;以及
将所述组件重附到共享的输入消息队列。
11.权利要求10的一个或多个计算机可读存储介质,其中重附组件包括:
把用于该组件的消息从拆离消息队列合并到共享的输入消息队列中;以及
清除该拆离消息队列。
12.一种计算机实施的方法,包括:
周期地发送(400)消息到标签式应用的多个标签,以便监视该多个标签的响应性,所述多个标签被配置成使用共享的输入消息队列来进行消息操控;
根据所述消息,检测(402)到所述多个标签的一个标签是非响应的;
通过将用于非响应标签的消息从该共享的输入消息队列迁移到拆离消息队列,而从共享的输入消息队列中拆离(404)该非响应的标签;
确定(412)被检测为非响应的标签重新是响应的;以及
通过将用于所述标签的消息从拆离消息队列迁移到共享的输入消息队列,而将所述标签重附(414)到该共享的输入消息队列。
13.权利要求12的计算机实施的方法,还包括:
输出通知来把非响应的标签通知给用户;以及
经由被包括在所述通知中的一个或多个用户可选择的手段,提供对恢复选项的访问。
14.权利要求13的计算机实施的方法,其中所述恢复选项包括选项来用另一个资源交换经由非响应的标签访问的资源。
15.权利要求13的计算机实施的方法,其中所述恢复选项包括选项来:当与非响应的标签相关联的脚本的执行被识别为是导致非响应的标签的原因时,停止该脚本的执行。
CN201110270923.5A 2010-09-14 2011-09-14 消息队列管理 Active CN102368212B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/882,000 US8667505B2 (en) 2010-09-14 2010-09-14 Message queue management
US12/882000 2010-09-14

Publications (2)

Publication Number Publication Date
CN102368212A true CN102368212A (zh) 2012-03-07
CN102368212B CN102368212B (zh) 2015-08-12

Family

ID=45760777

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110270923.5A Active CN102368212B (zh) 2010-09-14 2011-09-14 消息队列管理

Country Status (8)

Country Link
US (1) US8667505B2 (zh)
EP (1) EP2616930B1 (zh)
JP (1) JP5902173B2 (zh)
KR (1) KR101865432B1 (zh)
CN (1) CN102368212B (zh)
ES (1) ES2605415T3 (zh)
TW (1) TWI540513B (zh)
WO (1) WO2012036932A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103019866A (zh) * 2012-10-24 2013-04-03 北京京东世纪贸易有限公司 基于消息队列的分布式方法和系统
CN103118138A (zh) * 2013-03-04 2013-05-22 中国信息安全测评中心 一种基于云服务的消息队列流处理方法
CN106933589A (zh) * 2017-03-13 2017-07-07 车智互联(北京)科技有限公司 一种基于配置的消息队列组件及其集成的方法

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996403B2 (en) 2011-09-30 2018-06-12 Oracle International Corporation System and method for providing message queues for multinode applications in a middleware machine environment
WO2015116075A1 (en) * 2014-01-30 2015-08-06 Hewlett-Packard Development Company, L.P. Copy message from application buffer to send buffer within kernel
US10609155B2 (en) * 2015-02-20 2020-03-31 International Business Machines Corporation Scalable self-healing architecture for client-server operations in transient connectivity conditions
US9853933B2 (en) 2015-08-13 2017-12-26 60East Technologies, Inc. Message queue replication with message ownership migration
US10230678B2 (en) * 2015-08-20 2019-03-12 International Business Machines Corporation Storing messages of a message queue
US10270671B2 (en) 2015-09-22 2019-04-23 Microsoft Technology Licensing, Llc External process user interface isolation and monitoring
US10169116B2 (en) 2015-10-21 2019-01-01 International Business Machines Corporation Implementing temporary message queues using a shared medium
US10218656B2 (en) 2016-03-08 2019-02-26 International Business Machines Corporation Smart message delivery based on transaction processing status
US10747598B2 (en) * 2016-06-01 2020-08-18 Beijing Yi Zhang Yun Feng Technology Co., Ltd. Synchronization of messages based on queues
KR20180079584A (ko) * 2016-12-30 2018-07-11 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작 방법
TWI658369B (zh) * 2017-10-13 2019-05-01 遊戲橘子數位科技股份有限公司 保證訊息通知及回覆之方法
CN109542643B (zh) * 2018-11-16 2021-04-30 北京金山云网络技术有限公司 一种OpenStack系统中消息的恢复方法及装置
US11036365B2 (en) * 2019-06-07 2021-06-15 Microsoft Technology Licensing, Llc Hang condition mitigation for browser applications
CN115344168A (zh) * 2021-05-13 2022-11-15 荣耀终端有限公司 消息展示方法、终端及计算机可读存储介质
KR102639786B1 (ko) 2021-11-22 2024-02-22 주식회사 이글루코퍼레이션 메시지큐를 이용한 무중단 로그 전송 시스템 및 방법

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060218238A1 (en) * 2005-03-28 2006-09-28 Microsoft Corporation Failed message error recovery using application specific error queues
US20060230321A1 (en) * 2005-03-29 2006-10-12 Microsoft Corporation User interface panel for hung applications
US7127720B2 (en) * 2000-12-18 2006-10-24 Charles E Cano Storing state in a dynamic content routing network
US7283993B2 (en) * 2004-04-29 2007-10-16 International Business Machines Corporation Methods, systems, and media for handling errors in script files
US20090183155A1 (en) * 2008-01-15 2009-07-16 Microsoft Corporation Isolation of Content by Processes in an Application
US20090287824A1 (en) * 2008-05-13 2009-11-19 Google Inc. Multi-process browser architecture

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08202566A (ja) * 1995-01-24 1996-08-09 Nissin Electric Co Ltd プロセス間通信システム
JP4205843B2 (ja) * 2000-09-22 2009-01-07 株式会社日立製作所 ネットワーク接続装置の制御方法
US20050149952A1 (en) 2003-04-11 2005-07-07 Microsoft Corporation Persisting state across navigations in a navigation-based application and responding to navigation-related events throughout an application
US7440997B2 (en) 2003-06-13 2008-10-21 Microsoft Corporation Mechanism for supporting browser navigation while preserving important application return states
US8443379B2 (en) * 2008-06-18 2013-05-14 Microsoft Corporation Peek and lock using queue partitioning
US8261286B1 (en) * 2008-06-18 2012-09-04 Amazon Technologies, Inc. Fast sequential message store
US7934129B2 (en) 2008-09-05 2011-04-26 Microsoft Corporation Network hang recovery
JP5272595B2 (ja) * 2008-09-05 2013-08-28 沖電気工業株式会社 表示制御装置、表示制御システム、表示制御方法およびプログラム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7127720B2 (en) * 2000-12-18 2006-10-24 Charles E Cano Storing state in a dynamic content routing network
US7283993B2 (en) * 2004-04-29 2007-10-16 International Business Machines Corporation Methods, systems, and media for handling errors in script files
US20060218238A1 (en) * 2005-03-28 2006-09-28 Microsoft Corporation Failed message error recovery using application specific error queues
US20060230321A1 (en) * 2005-03-29 2006-10-12 Microsoft Corporation User interface panel for hung applications
US20090183155A1 (en) * 2008-01-15 2009-07-16 Microsoft Corporation Isolation of Content by Processes in an Application
US20090287824A1 (en) * 2008-05-13 2009-11-19 Google Inc. Multi-process browser architecture

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103019866A (zh) * 2012-10-24 2013-04-03 北京京东世纪贸易有限公司 基于消息队列的分布式方法和系统
CN103019866B (zh) * 2012-10-24 2017-02-08 北京京东世纪贸易有限公司 基于消息队列的分布式方法和系统
CN103118138A (zh) * 2013-03-04 2013-05-22 中国信息安全测评中心 一种基于云服务的消息队列流处理方法
CN103118138B (zh) * 2013-03-04 2016-02-10 中国信息安全测评中心 一种基于云服务的消息队列流处理方法
CN106933589A (zh) * 2017-03-13 2017-07-07 车智互联(北京)科技有限公司 一种基于配置的消息队列组件及其集成的方法
CN106933589B (zh) * 2017-03-13 2020-07-28 车智互联(北京)科技有限公司 一种基于配置的消息队列组件及其集成的方法

Also Published As

Publication number Publication date
ES2605415T3 (es) 2017-03-14
EP2616930A4 (en) 2014-05-14
US8667505B2 (en) 2014-03-04
TW201224935A (en) 2012-06-16
TWI540513B (zh) 2016-07-01
EP2616930B1 (en) 2016-08-24
US20120066616A1 (en) 2012-03-15
KR20130107276A (ko) 2013-10-01
KR101865432B1 (ko) 2018-06-07
WO2012036932A2 (en) 2012-03-22
CN102368212B (zh) 2015-08-12
WO2012036932A3 (en) 2012-07-19
EP2616930A2 (en) 2013-07-24
JP2013541091A (ja) 2013-11-07
JP5902173B2 (ja) 2016-04-13

Similar Documents

Publication Publication Date Title
CN102368212A (zh) 消息队列管理
US9996631B2 (en) Information management and display in web browsers
CN102918502B (zh) 用于将网络应用和网站安装到客户端设备上的方法和装置
CN1821943B (zh) 使用活动内容向导和帮助文件的任务的可发现性-“现在我能做什么? ”特征
TWI438682B (zh) 用於使用結構式資料管理網頁連結的方法及電腦儲存媒體
CN102918486B (zh) Web应用导航域
US20090210806A1 (en) Method and system for predictive browsing
CN102939583A (zh) 创建任务会话
CN102934080A (zh) 网络应用主页按钮
CN103853433A (zh) 通知消息提示方法和通知消息提示装置
CN103562861A (zh) 应用程序通知显示
CN102591928A (zh) 表现包括从跳转列表任务和项目访问的内容的内容
CN102918540A (zh) 利用凭证创建并启动万维网应用
CN103562858A (zh) 应用程序通知
CN102947792A (zh) Web应用转换和暂时性web应用
JP2015219890A (ja) 管理装置、その制御方法およびプログラム
US10579227B1 (en) Identifying missed interactions
US10719206B1 (en) Measuring unresponsive interactions
US20160103799A1 (en) Methods and systems for automated detection of pagination
US20130346529A1 (en) Method, device and system for adding micro-blog message as favorite
JPH11328193A (ja) 情報検索システム及び記録媒体
US11704014B1 (en) Supporting micro swipes for generating custom user interface responses
US11921986B1 (en) System and method for web page navigation behavior
JP7060804B2 (ja) 情報処理装置、プロジェクト管理方法およびプロジェクト管理プログラム
KR20170073538A (ko) 웹 컨텐츠를 저장하기 위한 방법 및 장치

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150617

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150617

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant