[发明专利]一种处理消息的方法及装置在审
申请号: | 202210459808.0 | 申请日: | 2022-04-24 |
公开(公告)号: | CN114706700A | 公开(公告)日: | 2022-07-05 |
发明(设计)人: | 郭方宇 | 申请(专利权)人: | 京东科技信息技术有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 杨倩;郝红玉 |
地址: | 100176 北京市北京经济技*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 处理 消息 方法 装置 | ||
本发明公开了一种处理消息的方法及装置,涉及计算机技术领域。该方法的一具体实施方式包括:获取消息消费请求,所述消息消费请求指示了待消费主题;根据所述消息消费请求,从所述待消费主题对应的一个或多个分区中拉取待消费的消息;将所述待消费的消息存储至所述分区对应的消息链表中;对所述待消费的消息进行处理,并将所述消息链表中已处理的所述消息标记为已完成状态;在所述消息链表中确定连续被标记为已完成状态的多个消息中的最后一个目标消息,将所述目标消息的标识提交给服务端。该实施方式能够避免消息丢失,并且能够满足高并发场景下的高吞吐量处理。
技术领域
本发明涉及计算机技术领域,尤其涉及一种处理消息的方法及装置。
背景技术
客户端从Kafka集群中某主题(Topic)对应的消息集合中消费消息时,在Topic中每个分区会记录客户端当前消费的位置,即消息的offset。在客户端的应用程序重启后,会从上一次标记的offset继续消费消息。
由于目前消息的offset为客户端自动管理,在客户端出现异常时,可能会导致已经提交了offset的消息,实际并没有被处理,从而导致消息丢失。
发明内容
有鉴于此,本发明实施例提供一种处理消息的方法及装置,通过将从分区中拉取出的待消费消息存储至对应的消息链表中,并将消息链表中已处理的消息标记为已完成状态,然后将消息链表中连续被标记为已完成状态的多个消息中的最后一个目标消息提交给服务端。由此,消息链表中处于目标消息之前的消息一定已处理完成,在客户端异常后,可以根据服务端存储的目标消息的标识继续处理消息,从而避免消息丢失。
为实现上述目的,根据本发明实施例的一个方面,提供了一种处理消息的方法。
本发明实施例的一种处理消息的方法包括:获取消息消费请求,所述消息消费请求指示了待消费主题;
根据所述消息消费请求,从所述待消费主题对应的一个或多个分区中拉取待消费的消息;
将所述待消费的消息存储至所述分区对应的消息链表中;
对所述待消费的消息进行处理,并将所述消息链表中已处理的所述消息标记为已完成状态;
在所述消息链表中确定连续被标记为已完成状态的多个消息中的最后一个目标消息,将所述目标消息的标识提交给服务端。
可选地,所述对所述待消费的消息进行处理,包括:
将所述待消费的消息放入协程池,以使所述协程池中的多个协程对所述待消费的消息进行异步处理。
可选地,在对所述待消费的消息进行处理之前,还包括:
将所述消息链表中待消费的消息标记为未完成状态;
所述将所述消息链表中已处理完成的所述消息标记为已完成状态,包括:
在所述协程将所述消息处理完成后,将所述消息由未完成状态更新为已完成状态。
可选地,该方法还包括:确定所述协程是否在预设时长内将所述消息处理完成;
如果否,终止所述协程对所述消息的处理。
可选地,所述消息链表与所述分区一一对应;所述将所述待消费的消息存储至所述分区对应的消息链表中,包括:
针对每个所述分区:根据所述待消费的消息在所述分区的顺序,将所述待消费的消息存储至所述分区对应的消息链表中。
可选地,该方法还包括:
关闭发送所述消息消费请求的客户端中的自动标识处理服务。
可选地,在所述确定所述消息链表中连续被标记为已完成状态的多个消息中的最后一个目标消息之后,还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于京东科技信息技术有限公司,未经京东科技信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210459808.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种建筑工程用抬升式路灯起吊装置
- 下一篇:一种单运放恒压均流控制电路