消息处理方法及装置制造方法及图纸

技术编号:21167180 阅读:43 留言:0更新日期:2019-05-22 09:41
本发明专利技术提出一种消息处理方法及装置,涉及数据处理领域,通过判断从kafka获取的消息中包含的序列号与第一全局变量的值是否相同的方式,且只有在消息的序列号与第一全局变量的值相同时,消费该消息。本发明专利技术提供的消息处理方法及装置,能够确保消费者按照消息正确的生产顺序进行消费。

Message Processing Method and Device

The invention provides a message processing method and device, which relates to the field of data processing. By judging whether the sequence number contained in the message obtained from Kafka is the same as the value of the first global variable, the message is consumed only when the sequence number of the message is the same as the value of the first global variable. The message processing method and device provided by the invention can ensure that consumers consume according to the correct production sequence of the message.

【技术实现步骤摘要】
消息处理方法及装置
本专利技术涉及数据处理领域,具体而言,涉及一种消息处理方法及装置。
技术介绍
Kafka是一种基于zookeeper协调管理的分布式流平台的消息系统,能够允许发布和订阅流数据,kafka的基本结构中至少包括有产生消息的生产者(producer)和消费消息的消费者(consumer),生产者负责生产消息,并发送给kafka服务器,消费者则从kafka集群中订阅消费主题,以使消费者获得kafka服务器中订阅的主题下的消息进行消费。Kafka服务器在接收到生产者发送的消息时,会将一组消息归纳为一个主题(即Topic),简单的说,主题就是kafka服务器对消息的分类,kafka服务器会将所有相同类别的消息存储在同一主题下,消费者通过订阅主题进行消费,即获得相应的事件消息。
技术实现思路
本专利技术的目的在于提供一种消息处理方法及装置,能够确保消费者按照消息正确的生产顺序进行消费。为了实现上述目的,本专利技术实施例采用的技术方案如下:第一方面,本专利技术实施例提供了一种消息处理方法,所述方法包括:从kafka主题获取消息,其中,所述消息中包含有序列号,所述序列号用于指示消息生产者在生产所述消息时的顺序;若所述消息的序列号与第一全局变量的值相同,消费所述消息,其中,所述第一全局变量的值用于指示待消费的消息在所述kafka主题中的序列号。第二方面,本专利技术实施例提供了一种消息处理装置,所述装置包括:收发模块,用于从kafka主题获取消息,其中,所述消息中包含有序列号,所述序列号用于指示消息生产者在生产所述消息时的顺序;处理模块,用于若所述消息的序列号与第一全局变量的值相同,消费所述消息,其中,所述第一全局变量的值用于指示待消费的消息在所述kafka主题中的序列号。第三方面,本专利技术实施例提供了一种电子设备,包括:存储器,用于存储一个或多个程序;处理器;当所述一个或多个程序被所述处理器执行时,实现本专利技术实施例所提供的消息处理方法。相对于现有技术,本专利技术实施例所提供的一种消息处理方法及装置,通过判断从kafka获取的消息中包含的序列号与第一全局变量的值是否相同的方式,且只有在消息的序列号与第一全局变量的值相同时,消费该消息,相比于现有技术,使消费者在消费所订阅的主题下的消息时,不再依据每条消息产生时的时间戳来判断不同消息间的生产顺序,而是依据获得的消息所包含的序列号与第一全局变量的值是否相同,以确保消费者按照正确的生产顺序消费订阅的主题下的消息。为使本专利技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本专利技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。图1示出了本专利技术实施例的一种示意性应用场景图;图2示出了本专利技术实施例所提供的一种电子设备的一种示意性结构图;图3示出了本专利技术实施例所提供的一种消息处理方法的一种示意性流程图;图4为主题A包含的消息的一种示意图;图5为消费消息时的一种应用场景示意图;图6示出了本专利技术实施例所提供的一种消息处理装置的一种示意性结构图。图中:100-电子设备;101-存储器;102-处理器;103-通信接口;200-消息处理装置;201-收发模块;202-处理模块。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本专利技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本专利技术的实施例的详细描述并非旨在限制要求保护的本专利技术的范围,而是仅仅表示本专利技术的选定实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本专利技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。下面结合附图,对本专利技术的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。请参阅图1,图1示出了本专利技术实施例的一种示意性应用场景图,如图1所示,生产者、kafka及消费者共同构成分布式消息系统。在该分布式消息系统中,生产者将产生的消息发送给kafka,kafka则将接收到的消息,按照消息所属的主题类别进行存储,比如在接收到一条消息,当该消息所属的主题类别为主题A时,kafka则将这条消息存储到主题A对应的存储地址下,进而将所有相同的类别的消息进行统一存储;而当消费者在消费消息时,消费者在kafka订阅消费的主题,比如订阅主题A作为消费的主题,该订阅的主题表征消费者将要消费的消息所属的类别,消费者在消费消息时,kafka将消费者所订阅的主题中的消息发送给消费者,以供消费者消费消息,比如在前述消费者订阅kafka中的主题A作为消费的主题时,kafka则将主题A中的消息发送给消费者。值得说明的是,一般来说,kafka可以与多个生产者建立通信(图1中仅示出一个),而不同的生产者将产生的消息发送给kafka时,kafka可以存储在相同的主题下,也可以存储在不同的主题下,这取决于每个生产者产生的各类消息所预先配置的存储主题;并且,kafka还可以与多个消费者建立通信(图1中仅示出一个),而不同的消费者可以消费相同类别主题下的消息,也可以消费不同类别主题下的消息,这取决于为每个消费者预先配置的消费主题类别。在图1所示的示意图中,虽然采用分布式消息系统具有高效、低延迟等优点,但消息在传输的过程中,可能会发生时序错乱的情况,使得消费者不能按照每条消息实际产生的先后顺序进行处理,导致事件不能完成。比如,在银行办理银行卡密码修改服务时,用户需要依次输入旧密码-新密码-新密码才会被认为修改成功,但若是用户操作的终端作为生产者,依次输入旧密码-新密码-新密码在发送给kafka的过程中,时序发生了错乱,先后顺序变成的新密码-旧密码-新密码,则银行后台的设备作为消费者在消费这三条消息时,依次接收到的消息就变成了新密码-旧密码-新密码,这时,本该正常完成的修改密码的业务变成了由于密码错误而不能被完成。因此,在分布式消本文档来自技高网...

【技术保护点】
1.一种消息处理方法,其特征在于,所述方法包括:从kafka主题获取消息,其中,所述消息中包含有序列号,所述序列号用于指示消息生产者在生产所述消息时的顺序;若所述消息的序列号与第一全局变量的值相同,消费所述消息,其中,所述第一全局变量的值用于指示待消费的消息在所述kafka主题中的序列号。

【技术特征摘要】
1.一种消息处理方法,其特征在于,所述方法包括:从kafka主题获取消息,其中,所述消息中包含有序列号,所述序列号用于指示消息生产者在生产所述消息时的顺序;若所述消息的序列号与第一全局变量的值相同,消费所述消息,其中,所述第一全局变量的值用于指示待消费的消息在所述kafka主题中的序列号。2.如权利要求1所述的方法,其特征在于,若所述消息的序列号与第一全局变量的值相同,所述方法还包括:更新所述第一全局变量的值,且以所述更新后的第一全局变量的值,返回执行所述从kafka主题获取消息的步骤。3.如权利要求1所述的方法,其特征在于,若所述消息的序列号与第一全局变量的值不同,所述方法还包括:将所述消息保存到预设的数据库;在所述预设的数据库中查找序列号与所述第一全局变量的值相同的消息;若查找到,则消费所述查找到的消息,并更新所述第一全局变量的值,且以所述更新后的第一全局变量的值,返回执行在所述预设的数据库中查找序列号与所述第一全局变量的值相同的消息的步骤;若查找不到,则返回执行所述从kafka主题获取消息的步骤。4.如权利要求3所述的方法,其特征在于,所述将所述消息保存到预设的数据库之后,所述方法还包括:比较所述第一全局变量的值和第二全局变量的值,其中,所述第二全局变量的值用于指示所述kafka主题中保存的消息的最大序列号;若所述第一全局变量的值大于所述第二全局变量的值,则更新所述第二全局变量的值,并以所述更新后的第二全局变量的值,返回执行所述比较所述第一全局变量的值和第二全局变量的值的步骤;若所述第一全局变量的值小于或等于所述第二全局变量的值,则执行所述在所述预设的数据库中查找序列号与所述第一全局变量的值相同的消息的步骤。5.如权利要求3所述的方法,其特征在于,若在所述预设的数据库中查找到序列号与所述第一全局变量的值相同的消息,消费所述查找到的消息后,所述方法还包括:从所述预设...

【专利技术属性】
技术研发人员:陈欣欣
申请(专利权)人:新华三大数据技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1