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

基于Kafka的消息处理方法、装置、设备及存储介质与流程

2022-06-01 03:07:02 来源:中国专利 TAG:

基于kafka的消息处理方法、装置、设备及存储介质
技术领域
1.本技术涉及消息队列技术领域,尤其涉及一种基于kafka的消息处理方法、装置、设备及存储介质。


背景技术:

2.kafka是一个分布式的基于发布/订阅模式的消息队列系统,它可以处理消费者在网站中的所有动作流数据。kafka常见可以应用于访问日志,消息服务等方面。目前,kafka系统本身只提供基本的消息接收、消息发送功能,并未提供消息消费失败场景下的消息处理功能。
3.因此,如何实现基于kafka对消费失败的消息进行处理,以提高消息消费成功率成为亟需解决的问题。


技术实现要素:

4.本技术提供了一种基于kafka的消息处理方法、装置、设备及存储介质,旨在实现基于kafka对消费失败的消息进行处理,以提高消息消费成功率。
5.为实现上述目的,本技术提供一种基于kafka的消息处理方法,所述基于kafka的消息处理方法包括:
6.当目标消息消费失败时,生成所述目标消息对应的延迟消息,所述延迟消息中包含所述目标消息的消息体内容;
7.将所述延迟消息发送至预配置的目标kafka延迟消息队列;
8.当所述目标kafka延迟消息队列中的所述延迟消息延迟到期时,提取所述延迟消息中的所述消息体内容,并根据所述消息体内容生成所述目标消息对应的重发消息;
9.将所述重发消息发送至kafka消息队列,以供消费端从所述kafka消息队列中获得所述重发消息进行消费。
10.此外,为实现上述目的,本技术还提供一种基于kafka的消息处理装置,所述基于kafka的消息处理装置包括:
11.消息生成模块,用于当目标消息消费失败时,生成所述目标消息对应的延迟消息,所述延迟消息中包含所述目标消息的消息体内容;
12.消息发送模块,用于将所述延迟消息发送至预配置的目标kafka延迟消息队列;
13.消息管理模块,用于当所述目标kafka延迟消息队列中的所述延迟消息延迟到期时,提取所述延迟消息中的所述消息体内容,并根据所述消息体内容生成所述目标消息对应的重发消息;
14.消息消费模块,用于将所述重发消息发送至kafka消息队列,以供消费端从所述kafka消息队列中获得所述重发消息进行消费。
15.此外,为实现上述目的,本技术还提供一种计算机设备,所述计算机设备包括存储器和处理器;
16.所述存储器,用于存储计算机程序;
17.所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如上述的基于kafka的消息处理方法。
18.此外,为实现上述目的,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的基于kafka的消息处理方法的步骤。
19.本技术公开了一种基于kafka的消息处理方法、装置、设备及存储介质,当目标消息消费失败时,生成目标消息对应的延迟消息,延迟消息中包含目标消息的消息体内容,并将延迟消息发送至预配置的目标kafka延迟消息队列,当目标kafka延迟消息队列中的该延迟消息延迟到期时,提取延迟消息中的消息体内容,生成目标消息对应的重发消息,将重发消息发送至kafka消息队列,以供消费端从kafka消息队列中获得重发消息进行消费。通过生成目标消息对应的重发消息,对重发消息进行消费,也即是对目标消息重新进行消费,因而提高了目标消息消费成功率。
附图说明
20.为了更清楚地说明本技术实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1是本技术实施例提供的一种基于kafka的消息处理方法的步骤示意性流程图;
22.图2是本技术实施例提供的一种生成所述目标消息对应的延迟消息的步骤示意性流程图;
23.图3是本技术实施例提供的一种将所述延迟消息发送至预配置的目标kafka延迟消息队列的步骤示意性流程图;
24.图4是本技术实施例提供的一种基于kafka的消息处理流程示意图;
25.图5是本技术实施例提供的一种基于kafka的消息处理装置的示意性框图;
26.图6是本技术实施例提供的一种计算机设备的结构示意性框图。
具体实施方式
27.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
28.附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
29.应当理解,在此本技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本技术。如在本技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
30.还应当理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关
联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
31.本技术的实施例提供了一种基于kafka的消息处理方法、装置、设备及存储介质,用于实现在用户可感知层面对网页进行监控。
32.请参阅图1,图1是本技术一实施例提供的基于kafka的消息处理方法的流程示意图。该方法可以应用于计算机设备中,本技术中对该方法的应用场景不做限定。下面以该基于kafka的消息处理方法应用于计算机设备中为例,对该基于kafka的消息处理方法进行详细介绍。
33.如图1所示,该基于kafka的消息处理方法具体包括步骤s101至步骤s104。
34.s101、当目标消息消费失败时,生成所述目标消息对应的延迟消息,所述延迟消息中包含所述目标消息的消息体内容。
35.示例性的,消息生产端发送待消费的各个消息到kafka消息队列,其中,kafka消息队列包括至少一条。例如,kafka消息队列包括topic a和topic b,每条kafka消息队列中缓存各待消费的消息。
36.消费端从kafka消息队列拉取待消费的目标消息,然后进行业务处理。例如,以topic b中待消费的目标消息c为例,从topic b中拉取目标消息c,将目标消息c发送至消费端,消费端对目标消息c进行消费,以进行相应业务处理。
37.当目标消息消费失败时,则目标消息的处理结束,可继续执行其他相应的业务处理。
38.当目标消息消费失败时,生成目标消息对应的延迟消息,其中,延迟消息中包含目标消息的消息体内容。示例性的,预先配置kafka延迟消息管理器,通过kafka延迟消息管理器生成目标消息对应的延迟消息。
39.在一些实施例中,如图2所示,步骤s101可以包括子步骤s1011和子步骤s1012。
40.s1011、获取所述目标消息对应的延迟信息。
41.示例性的,延迟信息包括目标消息的延迟等级、目标消息的已重发次数中至少一种。
42.其中,不同的延迟等级对应不同的延迟时长。例如,假设预配置3种延迟等级:延迟等级1、延迟等级2和延迟等级3,延迟等级1对应延迟10分钟,延迟等级2对应延迟60分钟,延迟等级3对应延迟24小时等。
43.示例性的,延迟信息还包括目标消息对应的key、目标消息对应的kafka消息队列、延迟消息创建时间戳等信息。
44.s1012、将所述目标消息的所述消息体内容与所述延迟信息按预设的延迟消息格式进行封装,生成所述延迟消息。
45.示例性的,预先配置延迟消息格式为:{"key":"源消息的key","topic":"源消息的topic","value":"{\"_delay_message_parameter_\":{\"createddate\":延迟消息创建时间戳,\"delaytimelevel\":延迟等级,\"retriedcount\":已重发次数},源消息的消息体内容}"}。
46.其中,源消息也即目标消息;"key"与"value"是一对键值对,"key"是关键字,"value"是值;"topic"是kafka消息队列,例如,若目标消息之前缓存于kafka消息队列topic a中,则"源消息的topic"为topic a。
47.通过kafka延迟消息管理器获取目标消息的延迟等级、目标消息的已重发次数、目标消息对应的key、目标消息对应的kafka消息队列、延迟消息创建时间戳等信息,按照上述配置的延迟消息格式,将其与目标消息的消息体内容进行封装,生成目标消息对应的延迟消息。
48.需要说明的是,延迟消息格式除了可以为上述列举的消息格式以外,也可以是其他的消息格式,在此对延迟消息格式不作具体限制。
49.s102、将所述延迟消息发送至预配置的目标kafka延迟消息队列。
50.示例性的,预先配置至少一条kafka延迟消息队列,kafka延迟消息队列用于缓存生成的延迟消息。
51.生成目标消息对应的延迟消息后,通过kafka延迟消息管理器确定该延迟消息对应的目标kafka延迟消息队列,并将延迟消息发送至目标kafka延迟消息队列。
52.示例性的,若kafka延迟消息队列只有一条,则直接将该条kafka延迟消息队列确定为目标kafka延迟消息队列,将延迟消息发送至该目标kafka延迟消息队列。
53.示例性的,若kafka延迟消息队列包括多条,如图3所示,步骤s102可以包括子步骤s1021和子步骤s1022。
54.s1021、从预配置的多条kafka延迟消息队列中,选取与所述延迟信息匹配的kafka延迟消息队列,确定为所述目标kafka延迟消息队列;
55.s1022、将所述延迟消息发送至所述目标kafka延迟消息队列。
56.例如,不同的kafka延迟消息队列对应缓存不同消息类型的延迟消息,基于生成的延迟消息的消息类型,从多条kafka延迟消息队列中,选取与该延迟信息的消息类型对应的kafka延迟消息队列,将该kafka延迟消息队列确定为目标kafka延迟消息队列。
57.确定了目标kafka延迟消息队列后,通过kafka延迟消息管理器将延迟消息发送至目标kafka延迟消息队列,在目标kafka延迟消息队列中缓存该延迟消息。
58.在一些实施例中,从预配置的多条kafka延迟消息队列中,选取与所述延迟信息匹配的kafka延迟消息队列,确定为所述目标kafka延迟消息队列,可以包括:
59.获取每条kafka延迟消息队列对应的消息已重发次数范围及所述目标消息的已重发次数;
60.当所述目标消息的已重发次数在第一kafka延迟消息队列对应的消息已重发次数范围内时,将所述第一kafka延迟消息队列确定为所述目标kafka延迟消息队列。
61.在配置每条kafka延迟消息队列时,配置每条kafka延迟消息队列对应的消息已重发次数范围。其中,不同的kafka延迟消息队列对应不同的消息已重发次数范围。
62.例如,预先配置n条kafka延迟消息队列:delay_topic_1、delay_topic_2、delay_topic_3...,delay_topic_n,其中每条kafka延迟消息队列对应各自的消息已重发次数范围。比如,kafka延迟消息队列delay_topic_1对应的消息已重发次数范围为[0,3],kafka延迟消息队列delay_topic_2对应的消息已重发次数范围为(3,6],kafka延迟消息队列delay_topic_3对应的消息已重发次数范围为(6,10]等等。
[0063]
生成目标消息对应的延迟消息后,获取预先配置的每条kafka延迟消息队列对应的消息已重发次数范围,以及确定目标消息的已重发次数。当目标消息的已重发次数处于kafka延迟消息队列delay_topic_1对应的消息已重发次数范围[0,3]内时,也即目标消息
的已重发次数不超过3次时,将生成的目标消息对应的延迟消息发送至kafka延迟消息队列delay_topic_1。
[0064]
当目标消息的已重发次数处于kafka延迟消息队列delay_topic_2对应的消息已重发次数范围(3,6]内时,也即目标消息的已重发次数超过3次且不超过6次时,将生成的目标消息对应的延迟消息发送至kafka延迟消息队列delay_topic_2。
[0065]
当目标消息的已重发次数处于kafka延迟消息队列delay_topic_3对应的消息已重发次数范围(6,10]内时,也即目标消息的已重发次数超过6次且不超过10次时,将生成的目标消息对应的延迟消息发送至kafka延迟消息队列delay_topic_3。
[0066]
在另一些实施例中,从预配置的多条kafka延迟消息队列中,选取与所述延迟信息匹配的kafka延迟消息队列,确定为所述目标kafka延迟消息队列,可以包括:
[0067]
获取每条kafka延迟消息队列对应的消息延迟等级以及所述目标消息的延迟等级;
[0068]
当所述目标消息的延迟等级与第二kafka延迟消息队列对应的消息延迟等级一致时,将所述第二kafka延迟消息队列确定为所述目标kafka延迟消息队列。
[0069]
在配置每条kafka延迟消息队列时,配置每条kafka延迟消息队列对应的消息延迟等级。其中,不同的kafka延迟消息队列对应不同的消息延迟等级。
[0070]
例如,预先配置kafka延迟消息队列delay_topic_1对应的消息延迟等级为延迟等级1,kafka延迟消息队列delay_topic_2对应的消息延迟等级为延迟等级2,kafka延迟消息队列delay_topic_3对应的消息延迟等级为延迟等级3。
[0071]
生成目标消息对应的延迟消息后,获取预先配置的每条kafka延迟消息队列对应的消息延迟等级,以及确定目标消息的延迟等级。
[0072]
在一些实施例中,所述获取每条kafka延迟消息队列对应的消息延迟等级,可以包括:
[0073]
查询多条kafka延迟消息队列对应的配置信息文件;其中,所述配置信息文件中包含每条kafka延迟消息队列对应的配置信息;
[0074]
从每条kafka延迟消息队列对应的所述配置信息中提取每条kafka延迟消息队列对应的消息延迟等级。
[0075]
示例性的,在配置kafka延迟消息队列时,配置每条kafka延迟消息队列对应的配置信息。其中,kafka延迟消息队列对应的配置信息包括kafka延迟消息队列对应的消息已重发次数范围、kafka延迟消息队列对应的消息延迟等级中至少一种。将每条kafka延迟消息队列对应的配置信息汇总,生成相应的配置信息文件并保存。
[0076]
生成目标消息对应的延迟消息后,查询保存的配置信息文件,获取每条kafka延迟消息队列对应的配置信息,从每条kafka延迟消息队列对应的配置信息中提取每条kafka延迟消息队列对应的消息已重发次数范围、每条kafka延迟消息队列对应的消息延迟等级等信息。
[0077]
示例性的,预先设置消息的已重发次数范围与延迟等级的映射关系,例如,设置已重发次数范围[0,3]对应延迟等级1,已重发次数范围(3,6]对应延迟等级2,已重发次数范围(6,10]对应延迟等级3。
[0078]
获取目标消息的已重发次数后,基于消息的已重发次数范围与延迟等级的映射关
系,确定目标消息的已重发次数所在的已重发次数范围,将该已重发次数范围对应的延迟等级确定为目标消息的延迟等级。
[0079]
例如,若目标消息的已重发次数在已重发次数范围[0,3]内,则确定目标消息的延迟等级为延迟等级1。若目标消息的已重发次数在已重发次数范围(3,6]内,则确定目标消息的延迟等级为延迟等级2。若目标消息的已重发次数在已重发次数范围(6,10]内,则确定目标消息的延迟等级为延迟等级3。
[0080]
当目标消息的延迟等级为延迟等级1时,将生成的目标消息对应的延迟消息发送至kafka延迟消息队列delay_topic_1。
[0081]
当目标消息的延迟等级为延迟等级2时,将生成的目标消息对应的延迟消息发送至kafka延迟消息队列delay_topic_2。
[0082]
当目标消息的延迟等级为延迟等级3时,将生成的目标消息对应的延迟消息发送至kafka延迟消息队列delay_topic_3。
[0083]
s103、当所述目标kafka延迟消息队列中的所述延迟消息延迟到期时,提取所述延迟消息中的所述消息体内容,并根据所述消息体内容生成所述目标消息对应的重发消息。
[0084]
示例性的,通过kafka延迟消息管理器对每条kafka延迟消息队列中的各延迟消息进行管理,判断各延迟消息是否延迟到期。例如,kafka延迟消息管理器当前拉取到目标kafka延迟消息队列中的目标消息对应的延迟消息时,判断该延迟消息是否延迟到期。
[0085]
在一些实施例中,当所述目标kafka延迟消息队列中的所述延迟消息延迟到期时,提取所述延迟消息中的所述消息体内容之前,可以包括:
[0086]
将所述延迟消息创建时间戳加上所述延迟等级对应的延迟时长,确定所述延迟消息对应的延迟到期时间;
[0087]
若当前时间未到达所述延迟到期时间,则确定所述延迟消息还未延迟到期;
[0088]
若当前时间到达所述延迟到期时间,则确定所述延迟消息延迟到期。
[0089]
示例性的,通过kafka延迟消息管理器提取延迟消息中的延迟消息创建时间戳、延迟等级等信息,然后基于该延迟等级对应的延迟时长,将延迟消息创建时间戳加上延迟等级对应的延迟时长,确定该延迟消息对应的延迟到期时间。
[0090]
例如,若延迟消息对应的延迟等级为延迟等级1,延迟等级1对应的延迟时长为10分钟,则确定该延迟消息对应的延迟到期时间为延迟消息创建时间戳加上10分钟所对应的时间。
[0091]
又如,若延迟消息对应的延迟等级为延迟等级2,延迟等级2对应的延迟时长为60分钟,则确定该延迟消息对应的延迟到期时间为延迟消息创建时间戳加上60分钟所对应的时间。
[0092]
又如,若延迟消息对应的延迟等级为延迟等级3,延迟等级3对应的延迟时长为24小时,则确定该延迟消息对应的延迟到期时间为延迟消息创建时间戳加上24小时所对应的时间。
[0093]
若当前时间未到达该延迟消息对应的延迟到期时间,则确定该延迟消息还未延迟到期。
[0094]
示例性的,若确定该延迟消息还未延迟到期,则按预设的周期时间间隔循环判断该延迟消息是否延迟到期。例如,预设周期时间为1秒,每间隔1秒循环判断延迟消息是否延
迟到期。
[0095]
可以理解的是,预设的周期时间可根据实际情况进行灵活设置,在此不做具体限制。
[0096]
若当前时间到达该延迟消息对应的延迟到期时间,则确定该延迟消息延迟到期。此时,通过kafka延迟消息管理器提取延迟消息中的消息体内容,并根据消息体内容生成目标消息对应的重发消息。
[0097]
在一些实施例中,按预设的重发消息格式将获得的消息体内容进行封装,生成目标消息对应的重发消息。
[0098]
示例性的,预先配置重发消息格式为:
[0099]
{"_delay_message_parameter_":{"createddate":延迟消息创建时间戳,"delaytimelevel":延迟等级,"retriedcount":已重发次数},源消息的消息体内容}
[0100]
通过kafka延迟消息管理器获取目标消息的延迟等级、目标消息的已重发次数、延迟消息创建时间戳、目标消息的消息体内容等信息,按照上述配置的重发消息格式进行封装,生成目标消息对应的重发消息。
[0101]
需要说明的是,重发消息格式除了可以为上述列举的消息格式以外,也可以是其他的消息格式,在此对重发消息格式不作具体限制。
[0102]
s104、将所述重发消息发送至kafka消息队列,以供消费端从所述kafka消息队列中获得所述重发消息进行消费。
[0103]
生成目标消息对应的重发消息后,通过kafka延迟消息管理器将重发消息发送至kafka消息队列。示例性的,将重发消息发送至目标消息对应的kafka消息队列,例如,若目标消息原来缓存于kafka消息队列topic a中,则将重发消息发送至kafka消息队列topic a。
[0104]
需要说明的是,也可以将重发消息发送至目标消息对应的kafka消息队列以外的其他kafka消息队列,例如,若目标消息原来缓存于kafka消息队列topic a中,将重发消息发送至kafka消息队列topic b。
[0105]
消费端从kafka消息队列topic a或topic b拉取该重发消息,然后进行相应的业务处理。若重发消息消费成功,则目标消息的处理结束,可继续执行其他相应的业务处理。若重发消息消费失败,则继续循环上述实施例中针对目标消息的消息处理过程,故不再赘述。
[0106]
通过生成目标消息对应的重发消息,对重发消息进行消费,也即是对之前的目标消息重新进行消费,因而提高了目标消息消费成功率。
[0107]
示例性的,如图4所示,基于kafka的消息处理流程如下:
[0108]

、消息生产者(生产端)发送消息a到kafka消息队列topic a或topic b;
[0109]

、消息消费者(消费端)从topic a或topic b拉取消息a,然后进行业务处理。若消息a消费失败,则执行步骤

;若消息a消费成功,则执行步骤


[0110]

、kafka延迟消息管理器把消息a包装成延迟消息,发送到相应的kafka延迟消息队列delay_topic_1、

、...、delay_topic_n中一个。例如,若消息a已重发次数不超过3次,则把延迟消息发送到delay_topic_1中;若消息a已重发次数超过3次且不超过6次,则把延迟消息发送到delay_topic_2中;
[0111]

、kafka延迟消息管理器消费kafka延迟消息队列的消息,判断延迟消息是否延迟到期;
[0112]

、如果没有到期,间隔1秒间隔时间循环判断延迟消息是否延迟到期;如果到期,则从kafka延迟消息队列中拉取延迟消息,提取出消息体内容发送到kafka消息队列topic a或topic b;
[0113]

、消费成功,流程结束。
[0114]
上述实施例中,当目标消息消费失败时,生成目标消息对应的延迟消息,延迟消息中包含目标消息的消息体内容,并将延迟消息发送至预配置的目标kafka延迟消息队列,当目标kafka延迟消息队列中的该延迟消息延迟到期时,提取延迟消息中的消息体内容,生成目标消息对应的重发消息,将重发消息发送至kafka消息队列,以供消费端从kafka消息队列中获得重发消息进行消费。通过生成目标消息对应的重发消息,对重发消息进行消费,也即是对目标消息重新进行消费,因而提高了目标消息消费成功率。
[0115]
请参阅图5,图5是本技术的实施例提供的一种基于kafka的消息处理装置的示意性框图,该基于kafka的消息处理装置可以配置于计算机设备中,用于执行前述的基于kafka的消息处理方法。
[0116]
如图5所示,该基于kafka的消息处理装置1000,包括:消息生成模块1001、消息发送模块1002、消息管理模块1003、以及消息消费模块1004。
[0117]
消息生成模块1001,用于当目标消息消费失败时,生成所述目标消息对应的延迟消息,所述延迟消息中包含所述目标消息的消息体内容;
[0118]
消息发送模块1002,用于将所述延迟消息发送至预配置的目标kafka延迟消息队列;
[0119]
消息管理模块1003,用于当所述目标kafka延迟消息队列中的所述延迟消息延迟到期时,提取所述延迟消息中的所述消息体内容,并根据所述消息体内容生成所述目标消息对应的重发消息;
[0120]
消息消费模块1004,用于将所述重发消息发送至kafka消息队列,以供消费端从所述kafka消息队列中获得所述重发消息进行消费。
[0121]
在一个实施例中,所述消息生成模块1001还用于:
[0122]
获取所述目标消息对应的延迟信息;
[0123]
将所述目标消息的所述消息体内容与所述延迟信息按预设的延迟消息格式进行封装,生成所述延迟消息。
[0124]
在一个实施例中,所述消息发送模块1002还用于:
[0125]
从预配置的多条kafka延迟消息队列中,选取与所述延迟信息匹配的kafka延迟消息队列,确定为所述目标kafka延迟消息队列;
[0126]
将所述延迟消息发送至所述目标kafka延迟消息队列。
[0127]
在一个实施例中,所述延迟信息包括所述目标消息的已重发次数,所述消息发送模块1002还用于:
[0128]
获取每条kafka延迟消息队列对应的消息已重发次数范围及所述目标消息的已重发次数;
[0129]
当所述目标消息的已重发次数在第一kafka延迟消息队列对应的消息已重发次数
范围内时,将所述第一kafka延迟消息队列确定为所述目标kafka延迟消息队列。
[0130]
在一个实施例中,所述延迟信息包括所述目标消息的延迟等级,所述消息发送模块1002还用于:
[0131]
获取每条kafka延迟消息队列对应的消息延迟等级以及所述目标消息的延迟等级;
[0132]
当所述目标消息的延迟等级与第二kafka延迟消息队列对应的消息延迟等级一致时,将所述第二kafka延迟消息队列确定为所述目标kafka延迟消息队列。
[0133]
在一个实施例中,所述消息发送模块1002还用于:
[0134]
查询多条kafka延迟消息队列对应的配置信息文件;其中,所述配置信息文件中包含每条kafka延迟消息队列对应的配置信息;
[0135]
从每条kafka延迟消息队列对应的所述配置信息中提取每条kafka延迟消息队列对应的消息延迟等级。
[0136]
在一个实施例中,所述延迟消息中包含延迟等级、延迟消息创建时间戳,其中,不同的延迟等级对应不同的延迟时长;所述消息管理模块1003还用于:
[0137]
将所述延迟消息创建时间戳加上所述延迟等级对应的延迟时长,确定所述延迟消息对应的延迟到期时间;
[0138]
若当前时间未到达所述延迟到期时间,则确定所述延迟消息还未延迟到期;
[0139]
若当前时间到达所述延迟到期时间,则确定所述延迟消息延迟到期。
[0140]
其中,上述基于kafka的消息处理装置1000中各个模块与上述基于kafka的消息处理方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
[0141]
本技术的方法、装置可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本技术可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本技术,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0142]
示例性的,上述的方法、装置可以实现为一种计算机程序的形式,该计算机程序可以在如图6所示的计算机设备上运行。
[0143]
请参阅图6,图6是本技术实施例提供的一种计算机设备的结构示意性框图。
[0144]
请参阅图6,该计算机设备包括通过系统总线连接的处理器和存储器,其中,存储器可以包括非易失性存储介质和内存储器。
[0145]
处理器用于提供计算和控制能力,支撑整个计算机设备的运行。
[0146]
内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种基于kafka的消息处理方法。
[0147]
应当理解的是,处理器可以是中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列
(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0148]
其中,在一个实施例中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:
[0149]
当目标消息消费失败时,生成所述目标消息对应的延迟消息,所述延迟消息中包含所述目标消息的消息体内容;
[0150]
将所述延迟消息发送至预配置的目标kafka延迟消息队列;
[0151]
当所述目标kafka延迟消息队列中的所述延迟消息延迟到期时,提取所述延迟消息中的所述消息体内容,并根据所述消息体内容生成所述目标消息对应的重发消息;
[0152]
将所述重发消息发送至kafka消息队列,以供消费端从所述kafka消息队列中获得所述重发消息进行消费。
[0153]
在一个实施例中,所述处理器在实现所述生成所述目标消息对应的延迟消息时,用于实现:
[0154]
获取所述目标消息对应的延迟信息;
[0155]
将所述目标消息的所述消息体内容与所述延迟信息按预设的延迟消息格式进行封装,生成所述延迟消息。
[0156]
在一个实施例中,所述处理器在实现所述将所述延迟消息发送至预配置的目标kafka延迟消息队列时,用于实现:
[0157]
从预配置的多条kafka延迟消息队列中,选取与所述延迟信息匹配的kafka延迟消息队列,确定为所述目标kafka延迟消息队列;
[0158]
将所述延迟消息发送至所述目标kafka延迟消息队列。
[0159]
在一个实施例中,所述延迟信息包括所述目标消息的已重发次数,所述处理器在实现所述从预配置的多条kafka延迟消息队列中,选取与所述延迟信息匹配的kafka延迟消息队列,确定为所述目标kafka延迟消息队列时,用于实现:
[0160]
获取每条kafka延迟消息队列对应的消息已重发次数范围及所述目标消息的已重发次数;
[0161]
当所述目标消息的已重发次数在第一kafka延迟消息队列对应的消息已重发次数范围内时,将所述第一kafka延迟消息队列确定为所述目标kafka延迟消息队列。
[0162]
在一个实施例中,所述延迟信息包括所述目标消息的延迟等级,所述处理器在实现所述从预配置的多条kafka延迟消息队列中,选取与所述延迟信息匹配的kafka延迟消息队列,确定为所述目标kafka延迟消息队列时,用于实现:
[0163]
获取每条kafka延迟消息队列对应的消息延迟等级以及所述目标消息的延迟等级;
[0164]
当所述目标消息的延迟等级与第二kafka延迟消息队列对应的消息延迟等级一致时,将所述第二kafka延迟消息队列确定为所述目标kafka延迟消息队列。
[0165]
在一个实施例中,所述处理器在实现所述获取每条kafka延迟消息队列对应的消息延迟等级时,用于实现:
[0166]
查询多条kafka延迟消息队列对应的配置信息文件;其中,所述配置信息文件中包
含每条kafka延迟消息队列对应的配置信息;
[0167]
从每条kafka延迟消息队列对应的所述配置信息中提取每条kafka延迟消息队列对应的消息延迟等级。
[0168]
在一个实施例中,所述延迟消息中包含延迟等级、延迟消息创建时间戳,其中,不同的延迟等级对应不同的延迟时长;
[0169]
所述处理器在实现所述当所述目标kafka延迟消息队列中的所述延迟消息延迟到期时,提取所述延迟消息中的所述消息体内容之前,用于实现:
[0170]
将所述延迟消息创建时间戳加上所述延迟等级对应的延迟时长,确定所述延迟消息对应的延迟到期时间;
[0171]
若当前时间未到达所述延迟到期时间,则确定所述延迟消息还未延迟到期;
[0172]
若当前时间到达所述延迟到期时间,则确定所述延迟消息延迟到期。
[0173]
本技术实施例还提供一种计算机可读存储介质。
[0174]
本技术计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的基于kafka的消息处理方法的步骤。
[0175]
其中,所述计算机可读存储介质可以是前述实施例所述的基于kafka的消息处理装置或计算机设备的内部存储单元,例如所述基于kafka的消息处理装置或计算机设备的硬盘或内存。所述计算机可读存储介质也可以是所述基于kafka的消息处理装置或计算机设备的外部存储设备,例如所述基于kafka的消息处理装置或计算机设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字卡(secure digital card,sd card),闪存卡(flash card)等。
[0176]
进一步地,所述计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
[0177]
本技术所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
[0178]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0179]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本技术的保护范围之内。
再多了解一些

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

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

相关文献