一种消息处理系统和消息处理方法技术方案

技术编号:32859916 阅读:14 留言:0更新日期:2022-03-30 19:37
本发明专利技术提供一种消息处理系统和消息处理方法,系统包括:消息生产端,向消息代理发送处于预发送状态的消息,执行本地业务操作并持久化到第一数据库,向消息代理发送业务操作结果;消息代理,包括:接收模块,接收处于预发送状态的消息;第二数据库,存储处于预发送状态的消息;处理模块,包括:预发送消息处理子模块,当确认信息指示业务操作成功时,则将消息的状态修改为发送中状态,并且向消息队列发送消息;反之删除处于预发送状态的消息;消息队列,对消息进行缓存;消息消费端,接收消息并处理本地业务;消息状态监控系统,对消息状态进行监控,当消息状态异常时,触发消息代理对状态异常的消息进行处理。该系统可确保消息的一致性。致性。致性。

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


[0001]本专利技术涉及异步消息处理的技术,主要应用于消费金融领域,具体涉及一种消息处理系统和消息处理方法。

技术介绍

[0002]在为用户提供基于分布式消息的发布/订阅场景的产品时,需要采用某种消息队列中间件产品(市面上比较流行的有ActiveMQ、RocketMQ、RabbitMQ、Kafka等)作为基础架构的一部分,来支持业务的需要。
[0003]在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:
[0004]但现状是,由于用户对消息中间件产品的选型各不相同,且在技术团队能力上参差不齐、部署实施的约束条件差异明显等问题,导致缺乏一种通用的技术屏障,以及为了满足不同消息中间件需要而额外付出的巨大研发成本。

技术实现思路

[0005]有鉴于此,本专利技术实施例的目的在于提供一种消息处理系统和消息处理方法,以屏蔽不同消息队列技术栈,实现消息分发一致性,保障消息不丢失、不重复消费等特性。
[0006]第一方面,本专利技术实施例提供了一种消息处理系统,所述消息处理系统包括:
[0007]消息生产端,用于向消息代理发送处于预发送状态的消息,执行本地业务操作并将业务操作结果持久化到第一数据库,向所述消息代理发送业务操作结果;
[0008]消息代理,所述消息代理包括:接收模块,用于接收处于预发送状态的消息;第二数据库,用于存储所述处于预发送状态的消息;处理模块,其包括:预发送消息处理子模块,用于当所述消息生产端发送的与所述业务操作结果相关联的确认信息指示业务操作成功时,则将所述消息的状态修改为发送中状态,并且控制发送模块向所述消息队列发送消息;如果所述确认信息指示业务操作失败时,则删除所述处于预发送状态的消息;发送模块,用于在所述处理模块的控制下向所述消息队列发送消息;
[0009]消息队列,用于对所述消息代理发送的消息进行缓存;
[0010]消息消费端,用于接收消息并处理本地业务;
[0011]消息状态监控系统,用于在所述消息的全生命周期中对所述消息的状态进行监控,并且当所述消息的状态异常时,触发所述消息代理对状态异常的消息进行处理。
[0012]第二方面,本专利技术实施例提供了一种消息处理方法,所述方法包括:
[0013]消息生产端向消息代理发送处于预发送状态的消息,执行本地业务操作并将业务操作结果持久化到第一数据库,向所述消息代理发送业务操作结果;
[0014]消息代理接收处于预发送状态的消息,存储所述处于预发送状态的消息到第二数据库,当所述消息生产端发送的与所述业务操作结果相关联的确认信息指示业务操作成功时,则将所述消息的状态修改为发送中状态,并且向所述消息队列发送消息,如果所述确认信息指示业务操作失败时,则删除所述处于预发送状态的消息;
[0015]消息队列对所述消息代理发送的消息进行缓存;
[0016]消息消费端接收消息并处理本地业务;
[0017]消息状态监控系统在所述消息的全生命周期中对所述消息的状态进行监控,并且当所述消息的状态异常时,触发所述消息代理对状态异常的消息进行处理。
[0018]第三方面,本专利技术实施例提供一种消息处理方法,所述方法包括:
[0019]在消息的全生命周期中对所述消息的状态进行监控;
[0020]当监控到所述消息的状态异常时,触发消息代理对状态异常的消息进行处理。
[0021]可选地,所述的当监控到所述消息的状态异常时,触发消息代理对状态异常的消息进行处理,具体包括如下中的任意一项或多项:
[0022]当监控到处于异常发送状态的消息,触发所述消息代理对处于异常发送状态的消息进行处理;
[0023]当监控到已死亡的消息,触发所述消息代理对所述已死亡的消息进行删除或者重新发送;
[0024]当监控到未得到确认的消息,触发所述消息代理对所述未得到确认的消息进行重新发送,记录发送次数,如果所述发送次数超过预设的重试次数,则将所述未得到确认的消息转为死亡状态;
[0025]当监控到待清理或者待备份的消息,触发所述消息代理对待清理的消息进行清理或者对待备份的消息进行备份。
[0026]可选地,所述的当监控到处于异常发送状态的消息,触发所述消息代理对处于异常发送状态的消息进行处理,具体包括:
[0027]监听所述消息代理中的异常预发送状态消息,所述异常预发送状态消息是指处于预发送状态的持续时长超过预设的第一时间阈值的消息,将所述异常预发送状态消息删除;和/或,
[0028]监控所述消息代理中的异常发送中状态消息,所述异常发送中状态消息是指处于发送中状态的持续时长超过预设的第二时间阈值的消息,触发所述消息代理对所述异常发送中状态消息进行重新发送。
[0029]第四方面,本专利技术实施例提供一种消息状态监控系统,其包括:
[0030]消息状态监控模块,用于在消息的全生命周期中对所述消息的状态进行监控;
[0031]消息异常处理模块,用于当监控到所述消息的状态异常时,触发消息代理对状态异常的消息进行处理。
[0032]在一些可能的实施方式中,所述消息异常处理模块,具体用于执行如下中的任意一项或多项:
[0033]当监控到处于异常发送状态的消息,触发所述消息代理对处于异常发送状态的消息进行处理;
[0034]当监控到已死亡的消息,触发所述消息代理对所述已死亡的消息进行删除或者重新发送;
[0035]当监控到未得到确认的消息,触发所述消息代理对所述未得到确认的消息进行重新发送,记录发送次数,如果所述发送次数超过预设的重试次数,则将所述未得到确认的消息转为死亡状态;
[0036]当监控到待清理或者待备份的消息,触发所述消息代理对待清理的消息进行清理或者对待备份的消息进行备份。
[0037]在一些可能的实施方式中,所述消息异常处理模块,具体用于:
[0038]监听所述消息代理中的异常预发送状态消息,所述异常预发送状态消息是指处于预发送状态的持续时长超过预设的第一时间阈值的消息,将所述异常预发送状态消息删除;和/或,
[0039]监控所述消息代理中的异常发送中状态消息,所述异常发送中状态消息是指处于发送中状态的持续时长超过预设的第二时间阈值的消息,触发所述消息代理对所述异常发送中状态消息进行重新发送。
[0040]第五方面,还提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,该计算机程序被处理器执行时实现上述任意一种消息处理方法的各步骤。
[0041]第六方面,还提供一种计算机设备,其包括:
[0042]一个或多个处理器;
[0043]存储装置,用于存储一个或多个程序;
[0044]当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的任意一种消息处理方法的各步骤。
[0045]上述技术方案具有如下有益效果:本专利技术实施例能够解决本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种消息处理系统,其特征在于,所述消息处理系统包括:消息生产端,用于向消息代理发送处于预发送状态的消息,执行本地业务操作并将业务操作结果持久化到第一数据库,向所述消息代理发送业务操作结果;消息代理,所述消息代理包括:接收模块,用于接收处于预发送状态的消息;第二数据库,用于存储所述处于预发送状态的消息;处理模块,其包括:预发送消息处理子模块,用于当所述消息生产端发送的与所述业务操作结果相关联的确认信息指示业务操作成功时,则将所述处于预发送状态的消息的状态修改为发送中状态,并且控制发送模块向所述消息队列发送消息;如果所述确认信息指示业务操作失败时,则删除所述处于预发送状态的消息;发送模块,用于在所述处理模块的控制下向所述消息队列发送消息;消息队列,用于对所述消息代理发送的消息进行缓存;消息消费端,用于接收消息并处理本地业务;消息状态监控系统,用于在所述消息的全生命周期中对所述消息的状态进行监控,并且当所述消息的状态异常时,触发所述消息代理对状态异常的消息进行处理。2.根据权利要求1所述的系统,其特征在于,所述处理模块还包括:消息状态监测及处理子模块,用于执行如下任意一种或多种操作:定时清理消息或者定时备份消息;删除已死亡的消息;发起对已死亡消息的重新发送;查询已超时的消息,对所述已超时的消息进行重新发送;查询已超时并且超过预设发送次数的消息,触发人工处理。3.根据权利要求1所述的系统,其特征在于,所述消息消费端,具体用于监听所述消息队列中的消息,所述消息由所述消息代理负责投递;当所述消息队列中消息被成功地投递到消息消费端后,接收所述消息并根据接收到的消息来处理本地业务;在处理完本地业务后,将处理结果存入所述消息消费端的业务数据库,并向所述消息代理发布通知,所述通知指示所述消息已被成功消费。4.根据权利要求1所述的系统,其特征在于,所述消息状态监控系统,用于执行如下中的任意一项或多项;监控处于异常发送状态的消息,触发所述消息代理对处于异常发送状态的消息进行处理;监控已死亡的消息,触发所述消息代理对所述已死亡的消息进行删除或者重新发送;监控未得到确认的消息,触发所述消息代理对所述未得到确认的消息进行重新发送,记录发送次数,如果所述发送次数超过预设的重发次数,则将所述未得到确认的消息转为死亡状态;监控待清理或者待备份的消息,触发所述消息代理对待清理的消息进行删除或者对待备份的消息进行备份。5.根据权利要求4所述的系统,其特征在于,所述消息状态监控系统,具体用于:监听所述消息代理中的异常预发送状态消息,所述异常预发送状态消息是指处于预发送状态的持续时长超过预设的第一时间阈值的消息,将所述异常预发送状态消息删除;和/或,
监控所述消息代理中的异常发送中状态消息,所述异常发送中状态消息是指处于发送中状态的持续时长超过预设的第二时间阈值的消息,触发所述消息代理对所述异常发送中状态消息进行重新发送。6.根据权利要求5所述的系统,其特征在于,所述消息状态监控系统,具体用于:监测所述异常发送中状态消息的重新发送次数,当所述重新发送次数超出预设的重发次数阈值时,将所述异常发送中状态消息标记为已死亡的消息,并且发出指示进行人工处理的通知。7.根据权利要求4所述的系统,其特征在于,所述消息状态监控系统,还用于:定期查询所述消息生产端的业务操作结果,如果所述业务执行结果为业务操作已成功,则触发所述消息代理将消息发送至所述消息队列。8.根据权利要求4所述的系统,其特征在于,所述消息状态监控系统,还用于:当所述消息生产端和所述消息消费端的数据是一致的,触发所述消息代理更新消息的状态为已消费。9.根据权利要求3所述的系统,其特征在于,所述消息消费端包括:收发模块,用于监听所述消息队列中的消息,当所述消息到达后,接收所述消息;幂等检查模块,用于对接收的消息进行幂等检查;业务操作模块,用于对通过幂等检查的消息进行业务操作,并且将业务操作的处理结果存储至第三数据库;第三数据库,用于存储业务操作的处理结果;通知模块,用于向所述消息代理发布通知,所述通知...

【专利技术属性】
技术研发人员:叶刚
申请(专利权)人:北京宇信科技集团股份有限公司
类型:发明
国别省市:

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

1