本申请属于数据处理领域,尤其涉及一种消息中间件管理方法及相关设备。
背景技术:
1、消息中间件(message queue),是分布式系统中重要的组件,其通用的使用场景可以简单地描述为:当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候。消息队列主要解决了应用耦合、异步处理、流量削锋等问题。
2、rocketmq作为一款纯java、分布式、队列模型的开源消息中间件具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。但由于rocketmq本身消费队列设计分配机制的原因,在每次重新对消费队列进行rebalance(再平衡)过程中,rocketmq会根据消费者总数与队列总数进行队列的重新分配(默认策略是平均分配),当rocketmq服务重新启动(异常),都会发生队列的重新分配,在重新分配的过程中,如果队列数据已经消费,但offset(消费偏移,表示消费的具体位置)没有及时更新至服务端,重新分配的队列会从上一次offset处消费数据进而导至数据的重复。
3、这一问题导致用户可能接收到重复的消费资源,对于非幂等性的资源而言用户体验影响不大,但对于幂等性资源而言,可能会造成如重复等较为严重的问题,此外对于其他类型的消息中间件也可能存在类似的问题。
技术实现思路
1、本发明的目的在于提供一种消息中间件管理方法,旨在解决现有的幂等性资源处理不当的问题,本申请提供的消息中间件管理方法包括:
2、本申请实施例第一方面提供了一种消息中间件管理方法,包括:
3、接收消费请求,所述消费请求用于获取目标资源;
4、判断所述资源类型是否为幂等类型;
5、若所述资源类型为幂等类型,则查询消费偏移记录,所述消费偏移记录由消费偏移管理服务记录;
6、基于所述消费偏移记录从消息中间件中获得所述目标资源;
7、发送所述目标资源。
8、基于本申请实施例第一方面所提供的消息中间件管理方法,可选的,所述方法还包括:
9、更新所述消费偏移管理服务;
10、基于本申请实施例第一方面所提供的消息中间件管理方法,可选的,所述更新所述消费偏移管理服务,包括:
11、判断所述目标资源是否被消费;
12、若所述目标资源被消费,则向所述消费偏移管理服务递交更新请求,以使得所述消费偏移管理服务对消费偏移记录进行更新。
13、若所述目标资源息未被消费,则不更新所述消费偏移管理服务。
14、基于本申请实施例第一方面所提供的消息中间件管理方法,可选的,所述所述消费偏移管理服务对消息偏移记录进行更新过程中,所述目标资源所属的消息队列为锁定状态。
15、基于本申请实施例第一方面所提供的消息中间件管理方法,可选的,所述方法应用于采用远程过程调用框架及rocketmq消息中间件的消息队列接入平台中。
16、基于本申请实施例第一方面所提供的消息中间件管理方法,可选的,所述消费偏移管理服务基于远程字典服务,并采用lua脚本实现。
17、本申请实施例第二方面提供了一种消息中间件管理设备,包括:
18、接收单元,用于接收消费请求,所述消费请求用于获取目标资源;
19、判断单元,用于判断所述资源类型是否为幂等类型;
20、查询单元,用于若所述资源类型为幂等类型,则查询消费偏移记录,所述消费偏移记录由消费偏移管理服务记录;
21、获取单元,用于基于所述消费偏移记录从消息中间件中获取所述目标资源;
22、发送单元,用于发送所述目标资源。
23、基于本申请实施例第二方面所提供的消息中间件管理设备,可选的,所述设备还包括:
24、更新单元,用于更新所述消费偏移管理服务。
25、基于本申请实施例第二方面所提供的消息中间件管理设备,可选的,所述更新单元具体用于:
26、判断所述目标资源是否被消费;
27、若所述目标资源被消费,则向所述消费偏移管理服务递交更新请求,以使得所述消费偏移管理服务对消费偏移记录进行更新;
28、若所述目标资源息未被消费,则不更新所述消费偏移管理服务。
29、基于本申请实施例第二方面所提供的消息中间件管理设备,可选的,所述所述消费偏移管理服务对消息偏移记录进行更新过程中,所述目标资源所属的消息队列为锁定状态。
30、基于本申请实施例第二方面所提供的消息中间件管理设备,可选的,所述设备应用于采用远程过程调用框架及rocketmq消息中间件的消息队列接入平台。
31、基于本申请实施例第二方面所提供的消息中间件管理设备,可选的,所述消费偏移管理服务基于远程字典服务,并采用lua脚本实现。
32、本申请实施例第三方面提供了一种中间件管理设备,包括:
33、中央处理器,存储器,输入输出接口,有线或无线网络接口以及电源;
34、所述存储器为短暂存储存储器或持久存储存储器;
35、所述中央处理器配置为与所述存储器通信,在所述设备上执行所述存储器中的指令操作以执行本申请实施例第一方面中任意一项所述的方法。
36、本申请实施例第四方面提供了一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得计算机执行如本申请实施例第一方面中任意一项所述的方法。
37、本申请实施例第五方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如本申请实施例第一方面中任意一项所述的方法。
38、从以上技术方案可以看出,本申请实施例具有以下优点:本申请提供了一种消息中间件管理方法,包括:接收消费请求,所述消费请求用于获取目标资源;判断所述资源类型是否为幂等类型;若所述资源类型为幂等类型,则查询消费偏移记录,所述消费偏移记录由消费偏移管理服务记录;基于所述消费偏移记录从消息中间件中获得所述目标资源;发送所述目标资源。基于上述方法可知,本申请所提供的消息中间件管理方法通过对消费者所请求的目标资源的类型进行判断,若资源为幂等类型,则基于消费偏移记录查询得到目标资源,进而确定幂等类型资源的消费情况,基消费情况向消费者提供准确的非重复的消费资源,从而解决了由于消息中间件或消费端重启导致的消费重复问题,提高了用户的使用体验,保证了消息中间件的稳定性和使用效果。
1.一种消息中间件管理方法,其特征在于,包括:
2.根据权利要求1所述的消息中间件管理方法,其特征在于,所述方法还包括:
3.根据权利要求2所述的消息中间件管理方法,其特征在于,所述更新所述消费偏移管理服务,包括:
4.根据权利要求3所述的消息中间件管理方法,其特征在于,所述所述消费偏移管理服务对消息偏移记录进行更新过程中,所述目标资源所属的消息队列为锁定状态。
5.根据权利要求1所述的消息中间件管理方法,其特征在于,所述方法应用于采用远程过程调用框架及rocketmq消息中间件的消息队列接入平台中。
6.根据权利要求1所述的消息中间件管理方法,其特征在于,所述消费偏移管理服务基于远程字典服务,并采用lua脚本实现。
7.一种消息中间件管理设备,其特征在于,包括:
8.一种消息中间件管理设备,其特征在于,包括:
9.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1至6中任意一项所述的方法。
10.一种包含指令的计算机程序产品,其特征在于,当其在计算机上运行时,使得计算机执行如权利要求1至6中任意一项所述的方法。