一种消息处理的方法、装置和系统制造方法及图纸

技术编号:37083138 阅读:13 留言:0更新日期:2023-03-29 19:58
本发明专利技术公开了一种消息处理的方法、装置和系统,涉及计算机技术领域。该方法的一具体实施方式包括:响应于获取到待处理消息,根据待处理消息所属的分区将待处理消息添加到分区对应的消息队列中,待处理消息具有序号;响应于从消息队列中取出待处理消息,对待处理消息进行处理;响应于待处理消息处理完成,从消息队列中查找可提交的消息的序号中的最大序号,并将最大序号提交给消息系统其中,消息队列中的消息的序号是从队列头部到队列尾部逐步递增的。该实施方式提升了系统进行消息处理的性能,大幅提高了消息处理的并发性,提高了消息处理速度和效率,从而解决了相互关联的消息无法同步处理同时提交的问题。法同步处理同时提交的问题。法同步处理同时提交的问题。

【技术实现步骤摘要】
一种消息处理的方法、装置和系统


[0001]本专利技术涉及计算机
,尤其涉及一种消息处理的方法、装置和系统。

技术介绍

[0002]Kafka是一种高吞吐量的分布式发布订阅消息系统,目前在消费Kafka中存储的消息时,使用最多的方式是:通过一个消息调度者(Message Dispatcher)主线程,每次从Kafka中拉取(Poll)一批消息后,分配给多个消息处理者(Message Handler)消费者线程进行消费或处理,消费者线程的数量不能多于Kafka的分区(Partition)的数量。每个消费者线程负责处理至少一个分区(Partition)的消息。在本次拉取的消息都处理完成并提交(Commit)后,才去拉取下一批消息。
[0003]在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:
[0004]现有的消息处理方式必须在消费完所有当前批次拉取的消息并提交后才能拉取下一批消息,且消费者线程并发量受分区数量限制,影响了消息的处理速度;且由于消息需要分批提交,导致无法支持两个关联消息需要同步处理的情况。

技术实现思路

[0005]有鉴于此,本专利技术实施例提供一种消息处理的方法、装置和系统,能够通过消息系统Kafka的消息处理者为每个数据分区添加一个内存中的消息队列来缓存消息以及消息的序号和处理状态,可以仅通过一个消息处理者来处理所有消息,使得消息处理者的并发线程数可灵活设定,从而解决了由于消息处理者线程受限而带来的消息处理效率低的问题,进而大幅提高了消息处理的并发性,提高了消息处理速度和效率;并且,无需由消息调度者提交消息,故而消息调度者可以在消息队列有空闲的情况下随时从Kafka中拉取消息,从而解决了由于从Kafka中进行消息拉取的条件受限而带来的性能瓶颈问题,提升了系统进行消息处理的性能,提高了消息处理速度和效率;同时,由于消息无需分批提交,从而解决了相互关联的消息无法同步处理同时提交的问题,消息处理更便捷,适用范围更广。
[0006]为实现上述目的,根据本专利技术实施例的一个方面,提供了一种消息处理的方法,包括:
[0007]响应于获取到待处理消息,根据所述待处理消息所属的分区将所述待处理消息添加到所述分区对应的消息队列中,所述待处理消息具有序号;
[0008]响应于从所述消息队列中取出所述待处理消息,对所述待处理消息进行处理;
[0009]响应于所述待处理消息处理完成,从所述消息队列中查找可提交的消息的序号中的最大序号,并将所述最大序号提交给消息系统,其中,所述消息队列中的消息的序号是从队列头部到队列尾部逐步递增的。
[0010]可选地,在根据所述待处理消息所属的分区将所述待处理消息添加到所述分区对应的消息队列中之后,还包括:设置所述待处理消息的处理状态为未处理;在所述待处理消息处理完成之后,还包括:将所述待处理消息的处理状态修改为已处理;从所述消息队列中
查找可提交的消息的序号中的最大序号,包括:根据所述消息队列中每条消息的处理状态,从所述消息队列中查找可提交的消息的序号中的最大序号。
[0011]可选地,从所述消息队列中查找可提交的消息的序号中的最大序号,包括:判断所述消息队列中的第一条消息的处理状态是否是已处理;在所述第一条消息的处理状态是已处理的情况下,从所述第一条消息开始按顺序获取消息,直至获取到处理状态为未处理的消息,将所述消息队列中所述处理状态为未处理的消息的前一条消息的序号作为所述最大序号;在所述第一条消息的处理状态不是已处理的情况下,所述消息队列中没有可提交的消息,无法获取所述最大序号。
[0012]可选地,在将所述最大序号提交给消息系统之前,还包括:确定已获取所述最大序号。
[0013]可选地,将所述消息队列中连续的且处理状态为已处理的多条消息进行压缩存储,仅保留所述多条消息中序号最大的消息。
[0014]可选地,通过多个线程从所述消息队列中取出消息并进行处理。
[0015]可选地,所述待处理消息是由消息调度者从所述消息系统中获取后分配的。
[0016]根据本专利技术实施例的另一方面,提供了一种消息处理的装置,包括:
[0017]消息缓存模块,用于响应于获取到待处理消息,根据所述待处理消息所属的分区将所述待处理消息添加到所述分区对应的消息队列中,所述待处理消息具有序号;
[0018]消息处理模块,用于响应于从所述消息队列中取出所述待处理消息,对所述待处理消息进行处理;
[0019]消息提交模块,用于响应于所述待处理消息处理完成,从所述消息队列中查找可提交的消息的序号中的最大序号,并将所述最大序号提交给消息系统,其中,所述消息队列中的消息的序号是从队列头部到队列尾部逐步递增的。
[0020]根据本专利技术实施例的又一方面,提供了一种消息处理的系统,包括:消息调度者和一个消息处理者,其中,
[0021]所述消息调度者用于:从消息系统中拉取待处理消息,并将所述待处理消息分配给所述消息处理者;
[0022]所述消息处理者用于:响应于获取到所述待处理消息,根据所述待处理消息所属的分区将所述待处理消息添加到所述分区对应的消息队列中,所述待处理消息具有序号;响应于从所述消息队列中取出所述待处理消息,对所述待处理消息进行处理;响应于所述待处理消息处理完成,从所述消息队列中查找可提交的消息的序号中的最大序号,并将所述最大序号提交给所述消息系统。
[0023]可选地,所述消息处理者通过多个线程从所述消息队列中取出消息并进行处理。
[0024]根据本专利技术实施例的又一方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本专利技术实施例所提供的消息处理的方法。
[0025]根据本专利技术实施例的再一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本专利技术实施例所提供的消息处理的方法。
[0026]上述专利技术中的一个实施例具有如下优点或有益效果:通过响应于获取到待处理消息,根据待处理消息所属的分区将待处理消息添加到分区对应的消息队列中,待处理消息
具有序号;响应于从消息队列中取出待处理消息,对待处理消息进行处理;响应于待处理消息处理完成,从消息队列中查找可提交的消息的序号中的最大序号,并将最大序号提交给消息系统的技术方案,实现了通过消息系统Kafka的消息处理者为每个数据分区添加一个内存中的消息队列来缓存消息以及消息的序号和处理状态,可以仅通过一个消息处理者来处理所有消息,使得消息处理者的并发线程数可灵活设定,从而解决了由于消息处理者线程受限而带来的消息处理效率低的问题,进而大幅提高了消息处理的并发性,提高了消息处理速度和效率;并且,无需由消息调度者提交消息,故而消息调度者可以在消息队列有空闲的情况下随时从Kafka中拉取消息,从而解决了由于从Kafka中进行消息拉取的条件受限而带来的性能瓶颈问题,提升了系统进行消本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种消息处理的方法,其特征在于,包括:响应于获取到待处理消息,根据所述待处理消息所属的分区将所述待处理消息添加到所述分区对应的消息队列中,所述待处理消息具有序号;响应于从所述消息队列中取出所述待处理消息,对所述待处理消息进行处理;响应于所述待处理消息处理完成,从所述消息队列中查找可提交的消息的序号中的最大序号,并将所述最大序号提交给消息系统,其中,所述消息队列中的消息的序号是从队列头部到队列尾部逐步递增的。2.根据权利要求1所述的方法,其特征在于,在根据所述待处理消息所属的分区将所述待处理消息添加到所述分区对应的消息队列中之后,还包括:设置所述待处理消息的处理状态为未处理;在所述待处理消息处理完成之后,还包括:将所述待处理消息的处理状态修改为已处理;从所述消息队列中查找可提交的消息的序号中的最大序号,包括:根据所述消息队列中每条消息的处理状态,从所述消息队列中查找可提交的消息的序号中的最大序号。3.根据权利要求2所述的方法,其特征在于,从所述消息队列中查找可提交的消息的序号中的最大序号,包括:判断所述消息队列中的第一条消息的处理状态是否是已处理;在所述第一条消息的处理状态是已处理的情况下,从所述第一条消息开始按顺序获取消息,直至获取到处理状态为未处理的消息,将所述消息队列中所述处理状态为未处理的消息的前一条消息的序号作为所述最大序号;在所述第一条消息的处理状态不是已处理的情况下,所述消息队列中没有可提交的消息,无法获取所述最大序号。4.根据权利要求1

3中任一所述的方法,其特征在于,在将所述最大序号提交给消息系统之前,还包括:确定已获取所述最大序号。5.根据权利要求2或3所述的方法,其特征在于,将所述消息队列中连续的且处理状态为已处理的多条消息进行压缩存储,仅保留所述多条消息中序号最大的消息。6.根据权利要求1所述的方法,其特征在于,通过多个线程从所...

【专利技术属性】
技术研发人员:蔡庆明景磊陈雪江洋吕洋张旭
申请(专利权)人:京东科技信息技术有限公司
类型:发明
国别省市:

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

1