System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及消息处理,具体涉及一种基于kafka消费机制的消息处理方法、装置、计算设备及存储介质。
技术介绍
1、apache kafka是一个分布式流处理平台,被设计为高吞吐、低延迟的消息传递系统,尤其适用于大规模数据处理和实时数据流应用,被广泛应用于日志收集、事件驱动架构、实时分析、流式处理等领域。
2、kafka生产者将消息发送到指定的topic(主题)以及topic指定的分区中,一个分区只能有一个消费者顺序消费,也就是说一个topic最多并发消费数为这个topic的分区数。
3、现有的业务分组消息处理方法中,如果有两组消息分组a和分组b,每组有多条消息放入同一个分区中,分组a和分组b的消息都要保证组内消费的有序性。如果分组a的第一条消息消费失败,那后续分组b的消息也不能消费,影响业务处理效率。
技术实现思路
1、本方案提出了一种基于kafka消费机制的消息处理方法、装置、计算设备及存储介质,一方面,在消息消费异常后进入输入事件表和消费失败消息表,避免阻塞kafka分区中不相关消息;一方面在进入输入事件表处理数据时并发执行主键线程,对于组内数据顺序消费,能够提高业务处理效率,解决某一业务分组消息消费失败后续其他分组消息不能继续消费的问题。
2、根据本专利技术的第一方面,提供一种基于kafka消费机制的消息处理方法,包括:在数据库中创建输入事件表和消费失败消息表,输入事件表和消费失败消息表以主题、消费者组id、业务分组id和分区id四个元组
3、可选地,在本专利技术提供的基于kafka消费机制的消息处理方法中,输入事件表用于存储消费失败的主键信息,消费失败消息表用于存储没有消费的消费失败的主键信息对应的消息数据。
4、可选地,在本专利技术提供的基于kafka消费机制的消息处理方法中,定时查询输入事件表中是否有主键信息记录,如果有主键信息记录则以主键为单位线程并发执行主键线程;根据主键信息查询消费失败消息表,按照时间顺序消费组内数据,如果消费成功则删除消费失败消息表中的数据,否则结束当前线程。
5、可选地,在本专利技术提供的基于kafka消费机制的消息处理方法中,消费者从kafka主题的分区中获取消息,并以主题、消费者组id、业务分组id和分区id四个元组为主键生成对应的键值,生成主键消息;判断输入事件表中是否已经存在与主键消息相同的主键信息记录,如果存在,则该消息数据写入消费失败信息表并添加新的主键信息到输入事件表,否则按照业务代码正常消费当前消息。
6、可选地,在本专利技术提供的基于kafka消费机制的消息处理方法中,按照预设的时间间隔查询输入事件表中是否有新的数据;如果有新数据存在则以主键为单位线程并发执行,根据执行结果更新输入事件表和消费失败消息表;如果没有新的数据则结束当前线程。
7、可选地,在本专利技术提供的基于kafka消费机制的消息处理方法中,根据主键信息使用sql语句查询消费失败消息表中的消息数据;将组内消息数据按照时间戳字段升序排序,以便按照时间顺序消费组内数据;判断数据消费是否成功,如果消费成功则删除消费失败消息表中的数据,否则结束当前线程。
8、可选地,在本专利技术提供的基于kafka消费机制的消息处理方法中,删除消费失败消息表中的数据后,判断消费失败数据表中是否还有没消费的消息数据;如果消费失败消息表中还有没消费的消息数据,则继续按照时间顺序消费组内数据,否则结束当前线程。
9、根据本专利技术的第二方面,提供了一种基于kafka消费机制的消息处理装置,包括:创建模块、第一判断模块和第二判断模块。
10、其中,创建模块,用于在数据库中创建输入事件表和消费失败消息表,输入事件表和消费失败消息表以主题、消费者组id、业务分组id和分区id四个元组为主键;
11、第一判断模块,用于判断输入事件表中是否存在与消费者从kafka主题分区中获取的消息相同的主键,如果存在,则将消息数据写入消费失败信息表并记录主键信息到输入事件表,否则正常消费消息;
12、第二判断模块,用于判断消息是否消费成功,如果消费失败,则将消息数据写入消费失败信息表并记录主键信息到输入事件表。
13、根据本专利技术的第三方面,提供一种计算设备,包括:至少一个处理器;和存储有程序指令的存储器,其中,程序指令被配置为适于由至少一个处理器执行,程序指令包括用于执行上述基于kafka消费机制的消息处理方法的指令。
14、根据本专利技术的第四方面,提供一种存储有程序指令的可读存储介质,当程序指令被计算设备读取并执行时,使得计算设备执行上述的基于kafka消费机制的消息处理方法。
15、根据上述技术方案,将消费异常的消息记录在输入事件表和消费失败消息表,避免阻塞kafka分区中不相关消息,且在进入输入事件表处理数据时并发执行主键线程,对于组内数据顺序消费,能够提高业务处理效率,解决某一业务分组消息消费失败后续其他分组消息不能继续消费的问题。
16、上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。
本文档来自技高网...【技术保护点】
1.一种基于kafka消费机制的消息处理方法,其特征在于,包括:
2.根据权利要求1所述的基于kafka消费机制的消息处理方法,其特征在于,所述输入事件表用于存储消费失败的主键信息,所述消费失败消息表用于存储没有消费的消费失败的主键信息对应的消息数据。
3.根据权利要求2所述的基于kafka消费机制的消息处理方法,其特征在于,所述方法包括:
4.根据权利要求2所述的基于kafka消费机制的消息处理方法,其特征在于,所述判断所述输入事件表中是否存在与消费者从kafka主题分区中获取的消息相同的主键,如果存在,则将所述消息数据写入消费失败信息表并记录主键信息到输入事件表,否则正常消费所述消息的步骤包括:
5.根据权利要求3所述的基于kafka消费机制的消息处理方法,其特征在于,所述定时查询所述输入事件表中是否有主键信息记录,如果有主键信息记录则以主键为单位线程并发执行消息的步骤包括:
6.根据权利要求4所述的基于kafka消费机制的消息处理方法,其特征在于,所述根据所述主键信息查询消费失败消息表,按照时间顺序消费组内数据,如
7.根据权利要求6所述的基于kafka消费机制的消息处理方法,其特征在于,所述判断数据消费是否成功,如果消费成功则删除消费失败消息表中的数据,否则结束当前线程的步骤包括:
8.一种基于kafka消费机制的消息处理装置,其特征在于,包括:
9.一种计算设备,包括:
10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-7任意一项中所述的基于kafka消费机制的消息处理方法。
...【技术特征摘要】
1.一种基于kafka消费机制的消息处理方法,其特征在于,包括:
2.根据权利要求1所述的基于kafka消费机制的消息处理方法,其特征在于,所述输入事件表用于存储消费失败的主键信息,所述消费失败消息表用于存储没有消费的消费失败的主键信息对应的消息数据。
3.根据权利要求2所述的基于kafka消费机制的消息处理方法,其特征在于,所述方法包括:
4.根据权利要求2所述的基于kafka消费机制的消息处理方法,其特征在于,所述判断所述输入事件表中是否存在与消费者从kafka主题分区中获取的消息相同的主键,如果存在,则将所述消息数据写入消费失败信息表并记录主键信息到输入事件表,否则正常消费所述消息的步骤包括:
5.根据权利要求3所述的基于kafka消费机制的消息处理方法,其特征在于,所述定时查询所述输入事件表中是否有主键信息...
【专利技术属性】
技术研发人员:刘利栋,
申请(专利权)人:上海利唐信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。