一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

消息流的处理的制作方法

2022-03-26 04:24:37 来源:中国专利 TAG:

消息流的处理


背景技术:

1.本公开总体上涉及处理数据,并且更具体地涉及一种用于处理时间消息流的方法。
2.本公开还涉及一种用于处理消息流的系统。
3.本公开进一步涉及包括计算机可读程序代码的计算机程序产品,该计算机可读程序代码使得系统的处理器能够实现这样的方法。
4.用于处理时间数据(或不需要严格排序但需要在类似时间被处理的数据)的传统数据处理系统可通常包括适于处理数据流的处理引擎。这样的处理引擎可实时地处理快速数据流,并且为了迎合不同大小的流,可基于数据流的大小来缩放处理引擎。然而,此缩放可导致输出数据失序且因此使所得输出数据不可用。
5.例如,系统中的应用可通过消息中心向度量处理引擎发送度量数据(例如,响应时间、交易费率和中央处理单元(cpu)使用)。随后,度量处理引擎可以向开源度量分析工具发送度量数据。缩放所述度量处理引擎包括将对应于所述度量数据的主题分成分区(或队列),使得所述度量数据能够在所述度量处理引擎的实例之间共享。然而,如果在度量处理引擎的实例之一中发生问题,则这些实例可能失步,从而导致在度量分析工具的用户接口处的不可用输出(例如,事务速率数据可能示出工作负荷尖峰与其他数据的失步,从而防止准确的数据相关性和问题诊断)。
6.在另一示例中,销售或分发大量商品的公司(例如,售票公司)可以通过解除与订购商品和处理订单相对应的动作来处理高速率的订单。对项目进行排序可导致消息被置于特定于项目的主题上,其中排序消息(即,对应于所创建的顺序的消息)跨对应于主题的多个分区(此后称为队列)布置。多个处理引擎可用于处理每个队列中的消息。然而,存在消息的处理可能不均匀地分布在多个处理引擎上的风险。因此,这增加了数据不按顺序到达的风险,例如,个体接收大量物品中的最后物品,即使他们的对应订单的创建明显晚于来自还尚未接收他们的订购物品的另外的订单。进一步地,由于“慢”处理引擎,个体没有履行其订单的风险可以增加。
7.因此,在本领域中需要解决上述问题。


技术实现要素:

8.本公开还试图提供一种用于处理消息流的系统。
9.本公开试图提供一种用于处理消息流的计算机实现的方法。
10.本公开进一步试图提供一种计算机程序产品,该计算机程序产品包括计算机程序代码,当由控制器单元执行该计算机程序代码时,该计算机程序代码用于实现提出的方法。
11.根据本公开的一方面,提供了一种用于处理消息流的计算机实现的方法。该方法包括获得消息流的消息,每个消息具有相关联的时间戳。该方法进一步包括将每个消息存储在多个队列中的至少一个中,其中,每个队列的消息基于其时间戳被排序,使得具有最早时间戳的消息位于队列的前部。该方法还包括基于目标消息的时间戳与多个队列中的其他
队列中的每个队列的前部(front)消息的时间戳之间的时间差来控制从目标队列的前部检索目标消息。
12.根据本公开的另一方面,提供了一种用于处理消息流的计算机程序产品。该计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有体现在其中的程序指令,这些程序指令可由处理单元执行以使处理单元执行根据所提出的实施例的方法。
13.根据本公开的另一方面,提供了一种处理系统,其包括至少一个处理器和根据实施例的计算机程序产品。所述至少一个处理器适于执行所述计算机程序产品的计算机程序代码。
14.根据本公开的另一方面,提供了一种消息流的系统处理。该系统包括被配置为获得消息流的消息的接口,每个消息具有相关联的时间戳。该系统进一步包括队列组件,该队列组件被配置为将每个消息存储在多个队列中的至少一个中。每个队列的消息基于其时间戳进行排序,使得具有最早时间戳的消息位于队列的前部。该系统还包括消息检索组件,该消息检索组件被配置成基于目标消息的时间戳与多个队列中的其他队列中的每个队列的前部消息的时间戳之间的时间差来控制从多个队列中的目标队列的前部检索目标消息。附图简要说明
15.现在将参考以下附图仅以实例的方式描述本发明的优选实施例,在附图中:图1示出了可以实现说明性实施例的方面的示范性分布式系统的图形表示;图2是其中可以实施说明性实施例的方面的实例系统的框图;图3是用于对时间消息流进行并行处理的系统的举例实施例的简化框图;图4是用于时间消息流的并行处理的计算机实现的方法的流程图;图5是示范性实施例的方法中涉及的步骤的图表,其中,垂直轴描述多个队列中的每个,并且水平轴描述与消息对应的时间戳的时间;以及图6是用于对时间消息流进行并行处理的系统的示范性实施例的简化框图。
具体实施方式
16.附图仅是示意性的并且不是按比例绘制的。还应当理解的是,在整个附图中使用相同的附图标记来表示相同或相似的部件。
17.在本技术的上下文中,当本公开的实施例构成方法时,这样的方法可以是用于由计算机执行的进程,即,可以是计算机可实现的方法。因此,该方法的各个步骤可反映计算机程序的各个部分,例如,一个或多个算法的各个部分。
18.而且,在本技术的上下文中,系统可以是适于执行本公开的方法的一个或多个实施例的单个设备或分布式设备的集合。例如,系统可以是经由诸如局域网、互联网等的网络连接的个人计算机(pc)、服务器或pc和/或服务器的集合,以协作地执行本公开的方法的至少一个实施例。
19.提出了用于处理消息流的概念。此类概念可以使得能够通过缩放处理引擎同时处理时间数据,同时保持处理的近似时间对准。因而,各实施例可促成时间消息流的并发处理。
20.实施例可结合消息传递或事件系统来实施,例如消息队列(mq)或java消息服务(jms)实施。
21.所提出的实施例可采用定义一组队列(或分区或流)的概念,其中可存储消息并且时间对准(例如,排队)消息。消息可按顺序从队列检索,但此类检索可基于与消息相关联的时间戳来控制。例如,时间戳可被分析并用于确保从队列检索的消息保持相对同步。
22.本发明实施例提供了一种消息检索组件。这样的消息检索组件可被配置为基于消息的时间戳与多个队列中的其他队列中的每个队列的前部消息的时间戳之间的时间差来控制从多个队列中的队列的前部检索消息。例如,如果消息在所有队列间在最早时间戳的预定可允许时间差内,通过仅允许消息的检索,所检索的消息可保持时间对准。
23.实施例因此可以通过维持并行处理的数据的近似时间对准来提供时间消息流的并行处理的改进。
24.作为示例,各实施例可结合消息收发或流送服务来实现。这样的实施例可以实现消息流的时间对准,而无需强制实施不允许缩放处理引擎的严格排序和/或单线程行为的方式。因而,消息的分配被优化,降低了消息传送或流式传输服务中的低效率的风险。这是优于现有技术的优点的一个实例。
25.为了本公开的目的,目标消息是消息流的消息之一。当顾客(或其他组件)试图从队列(例如,get命令的主题,其中get命令是将消息从队列移除以用于后续处理的代码)移除目标消息时,消息变成目标消息。通常,目标消息将是队列中的第一消息(例如,下一行、具有最早时间戳的消息等)。包含目标消息的队列可被称为目标队列。
26.为了本公开的目的,主题可以是群组、流和/或分区。主题可以是将多个消息分类和/或组织在消息流中以将它们分类到不同队列中的任何方式。这些主题可以是(或相关于)消息的大小、消息的类型(例如,格式)、数据源、随机、轮询、顺序和/或分类的任何其他方法。例如,假设该系统与事件的售票有关。在特定时间,票将被发布并且将创建若干购买消息。门票的主题可以是:所购买的门票的数量、购买的总量、基于个人门票价格、基于始发购买的位置、基于所请求门票的区间(例如,座位vs开放座位)、和/或其他类似因素。
27.在所提出的实施例中,控制检索可以包括:确定目标消息与来自每个其他队列的前部消息之间的时间差。时间差是两个消息的时间戳之间的差。然后,控制检索可包括从所确定的时间差中识别时间差的最大值,然后基于时间差的最大值是否超过阈值允许从目标队列检索目标消息。以这种方式,可以控制消息的检索,使得从队列跨所有队列均匀地检索消息。这可优化对应于消息的数据的时间对准,从而使时间相似的数据能够在相似的时间被处理。由此,可减小由于缩放而中断时间数据的序列的次序的风险。这提供了有效缩放工艺的优点。
28.在一些实施例中,控制检索可以进一步包括接收表示时间对准要求的输入信号并且基于所接收的输入信号确定该阈值。因此,用于建立消息的检索的阈值可以取决于时间对准要求。这能够基于对方法和/或系统的要求建立消息的检索,并且能够相对于要求自动调整。这样,优化了用于时间消息流的并行处理的方法和/或系统的效率。
29.在提出的实施例中,准许目标消息的检索可在时间差的最大值不超过阈值时发生。进一步,如果时间差的最大值超过阈值,则可拒绝目标消息的检索。因此,消息的检索可跨多个队列中的每一个均匀地维护。这可以降低在检索消息时在多个队列之间偏置的风险,从而降低队列检索与多个队列之间的平均数量相比显著更高/更低数量的消息的风险。
30.在一些实施例中,如果拒绝从目标队列检索目标消息,则可以生成错误消息。以此
方式,可以向用户警告拒绝检索消息。这可以使得能够识别对应于被拒绝检索的队列,从而使得能够确定和分析多个队列中的每一个的检索速率。如果在可以确定其数量的特定队列中拒绝相对大量的检索,则可以因此识别队列,并且可以采取纠正措施。
31.用于对时间消息流进行并行处理的方法可进一步包括针对每个所获得的消息生成时间戳,该时间戳表示与该消息相关联的时间。以此方式,每个消息包括由时间戳所标识的对应时间。例如,与消息相关联的时间戳可识别获得(例如,由接口接收)消息的时间。这使得能够以时间相关的序列组织消息,优化时间对准。
32.时间戳的示例可以包括消息是队列的put的时间,其中put是编程语言的命令。这可以通过发布消息的客户端或消息传送系统来生成。这可以在将消息放置在队列上时或在创建消息数据时完成。时间可以是在消息主体中(或在消息报头/元数据中)的时间段或全日期时间串。
33.在一些实施例中,每个消息可以与多个话题中的至少一个话题相关。在一些实施例中,用于对时间消息流进行并行处理的方法还可以包括:对于所述多个话题中的每一个话题,定义与每个话题相关联的一个或多个队列。该方法可以进一步包括将每个消息存储在与同一主题相关联的队列中的与至少一个主题相关的多个队列中的至少一个中。因此,该方法可以扩展到将一个以上的主题分组,并且因此将对应的多个队列分组。这可以使得能够并行地处理与消息有关的多个话题,提高方法和/或系统的效率,并且使得能够增加方法和/或系统的复杂性。
34.图1描绘了其中可以实施说明性实施例的方面的示范性分布式系统的图形表示。分布式系统100可包括其中可实现说明性实施例的各方面的计算机网络。分布式系统100包含至少一个网络102,网络102是用于在分布式数据处理系统100内连接在一起的不同设备和计算机之间提供通信链路的介质。网络102可以包括诸如有线、无线通信链路或光纤电缆之类的连接。
35.在所描绘的示例中,第一服务器104和第二服务器106与存储单元108连接到网络102。此外,客户端110、112和114也连接到网络102。客户端110、112和114可以是例如个人计算机、网络计算机等。在所描绘的示例中,第一服务器104向客户端110、112和114提供诸如引导文件、操作系统映像和应用之类的数据。在所描绘的示例中,客户端110、112和114是第一服务器104的客户端。分布式处理系统100可包括额外的服务器、客户端和未示出的其他设备。
36.在所描绘的示例中,分布式系统100是互联网,其中网络102表示使用传输控制协议/互联网协议(tcp/ip)协议组来彼此通信的网络和网关的全球集合。互联网的核心是主节点或主计算机之间的高速数据通信线路的主干,由数千个路由数据和消息的商业、政府、教育和其他计算机系统组成。分布式系统100还可被实现为包括多个不同类型的网络,诸如例如内联网、局域网(lan)、广域网(wan)等。如上所述,图1旨在作为实例,而不是作为对本公开的不同实施例的架构限制,并且因此,图1中示出的特定元件不应当被认为是对可以实现本公开的说明性实施例的环境的限制。
37.图2是其中可以实施说明性实施例的方面的实例系统200的框图。系统200是计算机(诸如图1中的客户端110)的示例,实施本公开的说明性实施例的处理的计算机可用代码或指令可以位于其中。
38.在所描绘的示例中,系统200采用包括北桥和存储器控制器中心(nb/mch)202以及南桥和输入/输出(i/o)控制器中心(sb/ich)204的中心架构。处理单元206、主存储器208和图形处理器210连接到nb/mch202。图形处理器210可以通过加速图形端口(agp)连接到nb/mch202。
39.在所描绘的示例中,局域网(lan)适配器212连接到sb/ich204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(rom)224、硬盘驱动器(hdd)226、cd-rom驱动器230、通用串行总线(usb)端口和其他通信端口232、以及pci/pcie设备234通过第一总线238和第二总线240连接到sb/ich204。pci/pcie设备可以包括例如以太网适配器、插入卡和用于笔记本计算机的pc卡。pci使用卡总线控制器,而pcie不使用。rom224可以是例如闪存基本输入/输出系统(bios)。
40.hdd226和cd-rom驱动器230通过第二总线240连接到sb/ich204。hdd226和cd-rom驱动器230可以使用例如集成驱动电子设备(ide)或串行高级技术附件(sata)接口。超级i/o(sio)设备236可以连接到sb/ich204。
41.操作系统运行在处理单元206上。操作系统协调并提供对图2中的系统200内的各个组件的控制。作为客户端,操作系统可以是可商购的操作系统。面向对象的编程系统,诸如javatm编程系统,可以结合操作系统运行,并且提供从在系统200上执行的javatm程序或应用程序对操作系统的调用。
42.作为服务器,系统200可以是例如运行高级交互执行操作系统或操作系统的计算机系统。系统200可以是对称多处理器(smp)系统,其包括处理单元206中的多个处理器。可替代地,可以采用单个处理器系统。
43.操作系统、编程系统和应用或程序的指令位于诸如hdd226的存储设备上,并且可以被加载到主存储器208中以供处理单元206执行。类似地,根据实施例的一个或多个消息处理程序可适于由存储设备和/或主存储器208存储。
44.本公开的说明性实施例的过程可由处理单元206使用计算机可用程序代码来执行,计算机可用程序代码可位于存储器中,诸如主存储器208、rom224或一个或多个外围设备226和230中。
45.总线系统(诸如图2所示的第一总线238或第二总线240)可包括一条或多条总线。总线系统可以使用在附接到结构或架构的不同组件或设备之间提供数据传送的任何类型的通信结构或架构来实现。通信单元(诸如图2的调制解调器222或网络适配器212)可包括用于发送和接收数据的一个或多个设备。存储器可以是例如主存储器208、rom224或诸如在图2中的nb/mch202中找到的高速缓存。
46.本领域普通技术人员将认识到,图1和2中的硬件可以取决于实现方式而变化,并且可以在不影响权利要求书的范围的情况下改变。除了或代替图1和2中描绘的硬件,可使用其他内部硬件或外围设备,例如快闪存储器、等效非易失性存储器或光盘驱动器等。此外,举例实施例的过程可以应用于除了前部提到的系统之外的多处理器数据处理系统,而不脱离本公开的精神和范围。
47.此外,系统200可以采取多个不同数据处理系统中的任的形式,包括客户端计算装置、服务器计算装置、平板计算机、膝上型计算机、电话或其他通信装置、个人数字助理(pda)等。在一些说明性示例中,系统200可以是配置有闪存的便携式计算设备,以提供用于
存储操作系统文件和/或用户生成的数据的非易失性存储器。因此,系统200可以本质上是任何已知的或以后开发的数据处理系统,而没有架构限制。
48.现在参见图3,描绘了用于对时间消息流进行并行处理的系统的示范性实施例的简化框图。
49.该系统包括被配置为获得消息流的消息的接口310,每个消息具有相关联的时间戳。该系统进一步包括队列组件320,该队列组件被配置为将每个消息存储在多个队列322的每个中,其中,每个队列322的消息基于其时间戳被排序,使得具有最早时间戳的消息被定位在队列322(即,先进先出(fifo)队列)的前部,队列322b中的消息pb-1。该系统进一步包括消息检索组件330,该消息检索组件被配置成基于消息的时间戳与多个队列322中的其他队列322中的每队列的前部消息的时间戳之间的时间差来控制从多个队列322的目标队列的前检索目标消息。消息检索组件330可与多个消费者332通信,其中每个消费者332可从对应队列322、消费者332a中的消息pa-1检索消息。此处,尽管消费者332可具有到队列的1:1映射,但消费者332可从一个以上队列322检索消息,且队列322可具有由一个以上消费者332检索的消息。
50.在一些实施例中,消息检索组件330经进一步配置以针对其他队列322中的每一者确定目标消息的时间戳与每个队列322的前部消息之间的时间差。消息检索组件进一步被配置为从所确定的时间差中识别时间差的最大值,并且基于时间差的最大值是否超过阈值来允许或拒绝从目标队列322检索目标消息。
51.在一实施例中,消息检索组件330还被配置成如果时间差的最大值未超过阈值,则允许从目标队列检索目标消息,并且如果时间差异的最大值超过阈值,则拒绝从目标队列检索目标消息。在一些实施例中,检索具有最早时间戳的消息(或与最大差值相关联的消息),并且重新计算时间差值。然后存在第二大差,或者剩余最大差。以与最大差相同的方式确定这些差。
52.在一实施例中,消息检索组件330进一步配置成如果拒绝从队列322检索目标消息则生成错误消息。
53.在一实施例中,该系统进一步包括对准配置组件(未示出),该对准配置组件被配置成用于接收表示时间对准要求的输入信号并且基于所接收的输入信号来确定该阈值。在不同实施例中,对准配置组件是接口310、队列组件320、消息检索组件330和/或单独组件的一个组件和/或并入其中。
54.在一些实施例中,该系统进一步包括时间组件,该时间组件被配置成用于针对每个消息生成表示与该消息相关联的时间的时间戳并且将所生成的时间戳与该消息相关联。例如,消息的时间戳可以表示生成消息的时间或者向队列put。在不同实施例中,时间组件是以下的一个组件和/或并入其中:接口310、队列组件320、消息检索组件330和/或单独组件的。
55.在一些实施例中,每个消息与多个话题中的至少一个话题相关。队列组件320还被配置成对于多个话题中的每个话题,将队列322中的一个或多个队列与一个或多个话题关联并且将每个消息存储在与消息所涉及的话题关联的多个队列322的至少一个队列中。
56.现在参见图4,描绘了根据一个实施例的用于处理消息流的计算机实现的方法。这样的方法可以使得能够通过缩放处理引擎同时处理时间消息流,同时保持处理的近似时间
对准。
57.步骤410包括获得消息流的多个消息,每个消息具有相关联的时间戳。在一些实施方式中,步骤410包括为每个消息生成时间戳。
58.在一个实施例中,每个消息与多个话题中的至少一个话题相关。在一些实施例中,所述方法还包括:对于所述多个话题中的每个话题,将至少一个话题关联到每个队列。在一些实施例中,该方法进一步包括:将该主题划分为多个分区并且将一个或多个消费者分配给每个队列。
59.例如,用户可以在消息传送系统中创建包含五个队列(例如,分区、流和/或主题)的主题。五个消费者可以被分配给话题作为组消费者,向每个队列提供一个消费者。每个消息基于一些分类因子(例如,大小、内容、起始位置、数据类型、轮询、随机等)被分发到队列之一。每个消费者一旦从队列中检索到对应于其各自队列的消息就处理该消息。该实例在图3中描绘,其中五个队列322a、322b、322c、322d、322e和五个所分配的消费者332a、332b、332c、332d、332e处置用于队列322a的消息pa-1、pa-2、pa-3、用于队列322b的pb-1和用于队列322c的pc-1。图5示出了在该实例中涉及的步骤的图表,其中,垂直轴描述了多个队列中的每个,并且水平轴描述了与消息对应的时间戳的时间。以下描述的实例涉及图3和图5中描绘的信息。
60.步骤420包括将每个消息存储在多个队列中的至少一个中,其中,每个队列的消息基于其时间戳被排序,使得具有最早时间戳的消息位于队列的前部。这里,每个消息被存储在与该消息所涉及的主题相关联的队列中的至少一个中。
61.步骤430包括基于消息的时间戳与多个队列中的其他队列中的每个队列的前部消息的时间戳之间的时间差,控制从目标队列的前部检索目标消息。在所述实例中,可从所述多个队列中的每一者均匀地且连续地将消息从所述多个队列检索到消费者。
62.在一个实施例中,控制检索可包括,对于其他队列中的每个队列,确定目标消息的时间戳和其他队列中的每个队列的前部消息之间的时间差。然后,控制检索可包括从所确定的时间差中识别时间差的最大值,然后,基于时间差的最大值是否超过阈值,允许从目标队列检索目标消息。
63.在示例中,用户可以定义100ms的阈值,其也可以被称为时间对准。然而,阈值可以大于或小于100ms。例如,五个队列中的第一队列322a可获得包含相对大的事件(事件pa-1)的消息,其中时间戳为20:00:00.000且持续时间为200ms。对应于事件pa-1的消息由对应于第一队列的消费者332a检索。第一队列322a中的下一消息可含有时间戳为20:00:00.100的另一事件,事件pa-2。对应于下一连续队列(即,第二队列322b)的消费者332b可尝试从第二队列322b的前部消息检索下一事件,例如,时间戳为20:00:00.190的事件pb-1。可确定对应于每一队列前部的消息的每一事件的时间戳。
64.在一实施例中,如果时间差的最大值未超过阈值,则允许从目标队列检索目标消息,并且如果时间差的最大值超过阈值,则拒绝从目标队列检索目标消息。这样,当检索消息时,比较每个队列前部的消息的时间戳。如果跨所有队列的最早时间戳与对应于目标队列中的目标消息的时间戳之间的时间差值的值,则检索对应于最早时间戳的消息。
65.在该实例中,事件pb-1对应的时间戳(20:00:00.190)与事件pa-1对应的时间戳(20:00:00.100)之间的时间差为90ms,不超过阈值100ms。这通过从目标消息的时间戳(例
如,(目标消息时间戳)-(不同队列的第一消息),20:00:00.190-20:00:00.100)中减去前部消息的时间戳来获得。这允许包含事件pb-1的消息由对应于目标队列(在该情况下是第二队列322b)的消费者332b检索。
66.在一实施例中,允许检索目标消息进一步包括如果拒绝从目标队列检索目标消息则生成错误消息。错误消息可包括指示输出数据不同步的返回码或消息。如果拒绝从目标队列检索目标消息,那么可暂时暂停所述过程直到对应于每一队列前部的消息的时间戳准许不超过阈值的对应时间差为止。
67.控制检索可以进一步包括接收表示时间对准要求的输入信号,然后基于所接收的输入信号确定该阈值。
68.在该实例中,来自下一连续队列(第三队列322c)的消息可包含另一事件,时间戳为20:00:00.250的事件pc-1。可以确定与到每个队列的前部的消息相对应的每个事件的时间戳。事件pa-2对应的时间戳在该时间点最早,事件pa-2对应的时间戳(20:00:00.100)与事件pc-1对应的时间戳(20:00:00.250)之间的时间差为150ms,超过阈值100ms。由此,拒绝从队列322c检索的请求,并且不检索事件pc-1。考虑相反,pa-2是目标消息,现在差为负150ms,其小于100ms的阈值,并且pa-2可以被检索。
69.与事件pa-1对应的消息的处理完成并且检索与第一队列322a中的下一事件(事件pa-2)对应的消息。来自第一队列322a的消息可含有另一事件,例如时间戳为20:00:00.180的事件pa-3。可以确定与到每个队列的前部的消息相对应的每个事件的时间戳。事件pc-1对应的时间戳(20:00:00.250)与事件pa-3对应的时间戳(20:00:00.180)之间的时间差为70ms,不超过阈值100ms。这允许消费者332c检索包含事件pc-1的消息,该消息对应于目标队列,在此情况下是第三队列322c。
70.在一些实施例中,阈值是动态确定的。它可以基于队列中的消息数量、队列中的消息的相对处理时间、消息的时间戳之间的时间差、和/或任何其他类似因素。例如,阈值可以是每个队列中的第一和第二消息的时间戳之间的差值的平均值。另一示例,阈值可以是在任何队列中具有最长处理时间(例如,00:00.100)加上预时间间段(例如,x 00:00.150)的消息。因此,如果队列中的消息的最长处理时间是00:00.100,则阈值将是00:00.2500。
71.以上示例可以被扩展以将多于一个主题(以及因此对应的队列)分组。在该实施例中,可以给每个组标识符以使每个主题之间的消费者相互关联。
72.作为进一步的示例,如图6所示,实施例可以包括计算机系统70,计算机系统70可以形成联网系统7的一部分。计算机系统/服务器70的组件可以包括但不限于一个或多个处理布置,例如包括处理器或处理单元71、系统存储器74和将不同系统组件(包括系统存储器74)耦合到处理单元71的总线90。
73.处理单元71,用于定义目标对象类型,目标对象类型用于保存中间件功能的结果。此外,处理单元71被配置为接收用于应用的第一对象,然后使用第一对象执行中间件功能的处理,以产生处理结果。处理单元71,用于根据所述处理结果,生成所述目标对象类型的第二对象,并将所述第二对象提供给所述应用。
74.总线90表示若干类型的总线结构中的任何一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任一种的处理器或局部总线。作为示例而非限制,这样的体系结构包括工业标准体系结构(isa)总线、微通道体系结
构(mca)总线、增强型isa(eisa)总线、视频电子标准协会(vesa)局部总线和外围组件互连(pci)总线。
75.计算机系统/服务器70通常包括各种计算机系统可读介质。这样的介质可以是可由计算机系统/服务器70访问的任何可用介质,并且其包括易失性和非易失性介质、可移动和不可移动介质。
76.系统存储器74可包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(ram)75和/或高速缓存存储器76。计算机系统/服务器70还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅通过示例的方式,存储系统74可以被提供用于从不可移除的非易失性磁性介质(未示出,并且通常被称为“硬盘驱动器”)进行读取和写入。尽管未示出,可以提供用于从可移动非易失性磁盘(例如,“软盘”)读取或向其写入的磁盘驱动器,以及用于从可移动非易失性光盘(如cd-rom、dvd-rom或其他光学介质)读取或向其写入的光盘驱动器。在这样的情况下,每一个可以通过一个或多个数据介质接口连接到总线90。如以下将进一步描绘和描述的,存储器74可包括具有被配置成执行本公开的实施例的功能的一组(例如,至少一个)程序模块的至少一个程序产品。
77.具有一组(至少一个)程序模块79的程序/实用程序78以及操作系统、一个或多个应用程序、其他程序模块和程序数据可以通过示例而非限制的方式存储在存储器74中。操作系统、一个或多个应用程序、其他程序模块和程序数据中的每一个或它们的一些组合可以包括网络环境的实现方式。程序模块79通常执行如在此所描述的本公开的实施例的功能和/或方法。
78.计算机系统/服务器70还可以与一个或多个外部设备80(例如键盘、定点设备、显示器85等)通信;和/或使计算机系统/服务器70能够与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)。这种通信可经由输入/输出(i/o)接口72发生。此外,计算机系统/服务器70可以经由网络适配器73与诸如局域网(lan)、通用广域网(wan)和/或公共网络(例如,互联网)之类的一个或多个网络通信。如图所示,网络适配器73通过总线90与计算机系统/服务器70的其他部件通信。应当理解,虽然未示出,但是其他硬件和/或软件组件可以与计算机系统/服务器70结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器和数据归档存储系统等。
79.在本技术的上下文中,当本公开的实施例构成方法时,应当理解,这样的方法是用于由计算机执行的进程,即,是计算机可实现的方法。因此,该方法的各个步骤反映计算机程序的各个部分,例如,一个或多个算法的各个部分。
80.本公开可以是系统、方法和/或计算机程序产品。所述计算机程序产品可包含上面具有用于致使处理器执行本发明的方面的计算机可读程序指令的计算机可读存储媒体(或媒体)。
81.计算机可读存储媒体可为可保留和存储供指令执行装置使用的指令的有形装置。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体的示例的非穷尽列表包括以下:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom),可擦可编程只读存储器(eprom或闪存)、存储级内存(scm)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd-rom),数字通用盘(dvd)、记忆棒、软盘、具有记录在其
上的指令的诸如穿孔卡或凹槽中的凸出结构的机械编码设备、以及上述的任何合适的组合。如本文所使用的计算机可读存储媒体不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输媒体传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
82.本文中所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
83.用于执行本公开的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如smalltalk、c 等)和常规的过程式程序设计语言(诸如“c”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(lan)或广域网(wan))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本公开的各方面。
84.本文参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本公开的各方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
85.这些计算机可读程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。
86.也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的或多个方框中规定的功能/动作。
87.附图中的流程图和框图示出了根据本公开的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,取决于所涉及的功能,连续
示出的两个块实际上可以基本上同时执行,或者这些块有时可以以相反的顺序执行。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
88.已经出于说明的目的呈现了本公开的不同实施例的描述,但并不旨在是详尽的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域普通技术人员将是显而易见的。这里使用的术语被选择来最好地解释实施例的原理、实际应用或对在市场中找到的技术的技术改进,或者使得本领域普通技术人员能够理解这里公开的实施例。
89.总之,已经讨论了各种实施方式,其在以下编号的实例中再次说明:
90.实施例1如下。一种用于处理消息流的计算机实现的方法,所述方法包括:获得消息流的多个消息,每个消息具有相关联的时间戳;将每个消息存储在多个队列中的至少一个队列中,其中,每个队列的所述消息基于其时间戳进行排序,使得具有最早时间戳的消息位于所述队列的前部;以及基于所述目标消息的所述时间戳与所述多个队列中的不包括所述目标队列的其他队列中的每个队列的前部消息的所述时间戳之间的时间差,来控制从所述目标队列的所述前部检索所述目标消息。
91.实施例2如下。根据实例1所述的方法,其中,控制所述检索包括:对于所述其他队列中的每个队列,确定所述目标消息的所述时间戳与所述队列的前部消息之间的时间差;从所确定的时间差中识别时间差的最大值;以及基于时间差的所述最大值是否超过阈值,允许从所述目标队列检索所述目标消息。
92.实施例3如下。示例1或2的方法,其中允许检索目标消息包括:如果时间差的最大值小于阈值,则允许从目标队列检索目标消息。
93.实施例4如下。根据前述示例中的任一项所述的方法,还包括:如果时间差的最大值超过阈值,则拒绝从目标队列检索消息;以及响应于从所述目标队列检索所述消息被拒绝,生成错误消息。
94.实施例5如下。根据前述示例中的任一项所述的方法,还包括:响应于从所述目标队列检索所述消息被拒绝,生成错误消息。
95.实施例6如下。根据前述示例中的任一项所述的方法,还包括:延迟从被拒绝的所述目标队列检索所述消息。
96.实施例7如下。根据前述示例中的任一项所述的方法,还包括:确定与所述最长值相关联的所述消息不再处于其相关联的队列中;从所确定的时间差中标识时间差的剩余最大值;以及如果所述时间差的剩余最大值小于所述阈值,则允许从所述目标队列检索所述目标消息。
97.实施例8如下。根据前述示例中的任一项所述的方法,还包括:接收表示时间对准要求的输入信号;以及基于所接收的输入信号确定所述阈值。
98.实施例9如下。根据前述示例中的任一项所述的方法,其中,所述阈值等于每个队列中的所述第一消息和第二消息的平均值。
99.实施例10如下。根据前述示例中的任一项所述的方法,进一步包括,针对每个获得的消息:生成表示与所述消息相关联的时间的时间戳;以及将所生成的时间戳与所述消息
相关联。
100.实施例11如下。根据前述示例中的任一项所述的方法,其中:每个消息与多个话题中的至少一个话题相关;所述方法还包括:对于所述多个话题中的每一个话题,定义与至少一个话题相关联的多个队列;以及将每个消息存储在多个队列中的至少一个中包括:将每个消息存储在与所述消息所涉及的主题相关联的所述多个队列中的至少一个中。
101.实施例12如下。一种用于处理消息流的计算机程序产品,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有随其包含的程序指令,所述程序指令可由处理单元执行以致使所述处理单元:获得消息流的消息,每一消息具有相关联的时间戳;将每个消息存储在多个队列中的至少一个中,其中,每个队列的所述消息基于其时间戳被排序,使得具有最早时间戳的消息位于所述队列的前部;以及基于所述目标消息的所述时间戳与所述多个队列中的其他队列中的每个队列的所述前部消息的所述时间戳之间的时间差,控制从目标队列的前部检索所述目标消息。
102.实施例13如下。根据实例12的计算机程序产品,其中程序指令还被配置为使处理单元:对于其他队列中的每个队列,确定目标消息的时间戳与每个队列的前部消息之间的时间差;以及根据所确定的时间差来标识时间差的最大值。
103.实施例14如下。根据实例12或13的计算机程序产品,其中程序指令还被配置为使处理单元:如果时间差的最大值小于阈值,则允许从目标队列检索目标消息。
104.实施例15如下。根据实例12至14中任一项的计算机程序产品,其中程序指令还被配置为使处理单元:如果时间差的最大值超过阈值,则拒绝从目标队列检索消息;以及响应于从所述目标队列检索所述消息被拒绝,生成错误消息。
105.实施例16如下。一种用于处理消息流的系统,所述系统包括:接口,被配置为获得消息流的消息,每个消息具有相关联的时间戳;队列组件,被配置为将每个消息存储在多个队列中的至少队列中,其中,每个队列的所述消息基于其时间戳被排序,使得具有最早时间戳的消息位于所述队列的前部;以及消息检索组件,其经配置以基于所述目标消息的所述时间戳与所述多个队列中的不是所述目标队列的其他队列中的每一者的前部消息的所述时间戳之间的时间差来控制从所述目标队列的前部检索所述目标消息。
106.实施例17如下。根据实例16的系统,其中消息检索组件被配置为:对于其他队列中的每个队列,确定目标消息的时间戳和队列的前部消息之间的时间差;从所确定的时间差异中识别所述时间差异的最大值;以及基于时间差异的所述最大值是否超过阈值,允许从所请求的队列中检索所述目标消息。
107.实施例18如下。根据实例16或17的系统,其中消息检索组件被配置为:如果时间差的最大值不超过阈值,则允许从所请求的队列中检索目标消息。
108.实施例19如下。根据实例16至18中任一项的系统,其中,消息检索组件进一步被配置为如果时间差的最大值超过阈值,则响应于拒绝从所请求的队列检索目标消息而生成错误消息。
109.实施例20如下。根据实例16至19中任一项的系统,还包括:对准配置组件,其被配置为接收表示时间对准要求的输入信号并且基于所接收的输入信号来确定所述阈值。
110.实施例21如下。根据实例16至20中任一项的系统,进一步包括:时间组件,被配置用于针对每个获得的消息生成表示与该消息相关联的时间的时间戳并且将所生成的时间
戳与每个消息相关联。
111.实施例22如下。根据实例16至21中任一项所述的系统,其中每个消息与多个话题中的至少一个话题相关,其中所述队列组件进一步被配置用于针对所述多个话题中的每个话题定义与所述话题相关联的多个队列;并且其中,所述队列组件进一步被配置为将每个消息存储在与所述消息所涉及的主题相关联的所述多个队列中的每个队列中。
112.实施例23如下。根据实例16至22中任一项的系统,其中,用户定义阈值。
113.实施例24如下。一种用于处理消息流的计算机实现的方法,所述方法包括:获得消息流的消息,每个消息具有相关联的时间戳,其中每个消息与多个主题中的至少主题相关;定义与至少一个主题相关联的多个队列;以及将每个消息存储在与所述至少一个主题相关联的所述多个队列中的至少一个中,每个消息都与所述至少一个主题相关;将每个消息存储在多个队列中的至少一个中,其中,每个队列的所述消息基于其时间戳被排序,使得具有最早时间戳的消息位于所述队列的前部;生成表示与所述消息相关联的时间的时间戳;将所生成的时间戳与所述消息相关联;基于所述目标消息的所述时间戳与所述多个队列中的不包括所述目标队列的其他队列中的每个队列的前部消息的所述时间戳之间的时间差,控制从目标队列的所述前部检索所述目标消息;对于所述其他队列中的每个队列,确定所述目标消息的所述时间戳与所述队列的前部消息之间的时间差;根据所确定的时间差来识别时间差的最大值;接收表示时间对准要求的输入信号;基于所接收的输入信号确定所述阈值;以及响应于所述时间差的最大值小于所述阈值而允许从所述目标队列检索所述目标消息。
114.实施例25如下。一种系统,其包括:处理器;以及计算机可读存储媒体,其通信地耦合到所述处理器且存储程序指令,所述程序指令在由所述处理器执行时经配置以致使所述处理器:获得消息流的消息,每一消息具有相关联的时间戳,其中每一消息与多个主题中的至少一者相关;定义与至少一个主题相关联的多个队列;以及将每个消息存储在与所述至少一个主题相关联的所述多个队列中的至少一个中,每个消息都与所述至少一个主题相关;将每个消息存储在多个队列中的至少一个中,其中,每个队列的所述消息基于其时间戳被排序,使得具有最早时间戳的消息位于所述队列的前部;生成表示与所述消息相关联的时间的时间戳;将所生成的时间戳与所述消息相关联;基于所述目标消息的所述时间戳与所述多个队列中的不包括所述目标队列的其他队列中的每个队列的前部消息的所述时间戳之间的时间差,控制从目标队列的所述前部检索所述目标消息;对于所述其他队列中的每个队列,确定所述目标消息的所述时间戳与所述队列的前部消息之间的时间差;根据所确定的时间差来识别时间差的最大值;接收表示时间对准要求的输入信号;基于所接收的输入信号确定所述阈值;延迟从被拒绝的所述目标队列检索所述消息;确定与所述最大值相关联的所述消息不再在其关联队列中;从所确定的时间差中识别时间差的剩余最大值;以及如果时间差的所述剩余最大值小于所述阈值,则允许从所述目标队列检索所述目标消息。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献