[发明专利]一种消息处理方法和装置有效
申请号: | 201910992376.8 | 申请日: | 2019-10-18 |
公开(公告)号: | CN112685191B | 公开(公告)日: | 2023-09-22 |
发明(设计)人: | 杨帆 | 申请(专利权)人: | 北京京东振世信息技术有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F16/22 |
代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 谢安昆;宋志强 |
地址: | 100086 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 消息 处理 方法 装置 | ||
本发明提供了一种基于多个业务条线的数据消息处理方法和装置,应用于数据加工系统,每一业务条线的数据消息中包括目标数据表中的多个字段;该方法包括:预先创建多个消费进程;接收来自每一业务条线的数据消息;根据接收的所述数据消息中包括的多个字段的取值,确定所述数据消息对应的目标数据表中的目标数据;确定所述目标数据对应的消费进程,将接收的所述数据消息发送到所述目标数据对应的消费进程,以使所述消费进程将接收的所述数据消息中包括的多个字段的取值写入所述目标数据表。本发明能够解决高并发下消息乱序消费引起的数据脏读、数据版本冲突和数据丢数问题。
技术领域
本发明涉及计算机技术领域,特别涉及一种消息处理方法和装置。
背景技术
在数据加工过程中,由于业务的多样化,需要将不同业务条线的数据源写入到同一ES类型(即ES宽表)中,每个数据源作为kafka消息进入到数据加工系统都有相应的业务处理逻辑进行消费/处理。然而,由于不能保证每个数据源的kafka消息到达数据加工系统的先后顺序,当某个数据源中无主键时,需要双写才能类似保证消息按序消费,但是在高并发情况下,这种做法可能会引起数据脏读、ES版本冲突、及丢失数据等问题。
发明内容
有鉴于此,本发明的目的在于提供了一种消息处理方法和装置,能够解决高并发下消息乱序消费引起的数据脏读、数据版本冲突和数据丢数问题。
为了达到上述目的,本发明提供了如下技术方案:
一种基于多个业务条线的数据消息处理方法,应用于数据加工系统,每一业务条线的数据消息中包括目标数据表中的多个字段;该方法包括:
预先创建多个消费进程;
接收来自每一业务条线的数据消息;
根据接收的所述数据消息中包括的多个字段的取值,确定所述数据消息对应的目标数据表中的目标数据;
确定所述目标数据对应的消费进程,将接收的所述数据消息发送到所述目标数据对应的消费进程,以使所述消费进程将接收的所述数据消息中包括的多个字段的取值写入所述目标数据表。
一种基于多个业务条线的数据消息处理装置,应用于数据加工系统,每一业务条线的数据消息中包括目标数据表中的多个字段;该装置包括:
创建单元,用于预先创建多个消费进程;
接收单元,接收来自每一业务条线的数据消息;
确定单元,用于根据接收的所述数据消息中包括的多个字段的取值,确定所述数据消息对应的目标数据表中的目标数据;
散列单元,用于确定所述目标数据对应的消费进程,将接收的所述数据消息发送到所述目标数据对应的消费进程,以使所述目标消费进程将接收的所述数据消息中包括的多个字段的取值写入所述目标数据表。
一种电子设备,包括:至少一个处理器,以及与所述至少一个处理器通过总线相连的存储器;所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序;所述至少一个处理器执行所述一个或多个计算机程序时实现上述基于多个业务条线的数据消息处理方法中的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个计算机程序,所述一个或多个计算机程序被处理器执行时实现上述基于多个业务条线的数据消息处理方法。
由上面的技术方案可知,本发明中,预先创建多个消费进程,对于来自不同业务条线的数据消息,根据这些数据消息各自对应的目标数据表中的目标数据,将这些消息划归到不同消费进程,使得对应于同一目标数据的数据消息都被送入同一消费进程进行处理,可以解决高并发下消息乱序消费引起的数据脏读、数据版本冲突和数据丢数问题。
附图说明
图1是现有技术数据加工系统对运单消息和发货消息的双写过程示意图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东振世信息技术有限公司,未经北京京东振世信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910992376.8/2.html,转载请声明来源钻瓜专利网。