本发明专利技术实施例提供一种消息处理方法及消息处理系统。其中,消息处理方法应用于分布式消息系统中,包括:第一备代理服务端在第一主代理服务端故障的情况下,扫描第一主代理服务端中满足投放要求的目标消息;将目标消息发送至第二主代理服务端;目标消息用以存储至第二主代理服务端的消息队列中,以供消费者消费目标消息。本发明专利技术实施例提供的技术方案实现了在无需进行主备代理服务端切换的情况下,保证目标消息的正常消费的技术效果。标消息的正常消费的技术效果。标消息的正常消费的技术效果。
【技术实现步骤摘要】
消息处理方法、系统、计算设备及计算机存储介质
[0001]本专利技术实施例涉及云计算领域,尤其涉及一种消息处理方法、系统、计算设备及计算机存储介质。
技术介绍
[0002]RocketMQ系统是一种分布式、开源的分布式消息系统,在消息处理领域被广泛使用。
[0003]相关技术中,RocketMQ系统的服务端通常采用分区域部署方式,在每个区域中均部署Name server(路由发现服务端)及Brokersever(代理服务端),并采用主从冷备方案以提高容灾能力。主从冷备方案是指部署主代理服务端以及备代理服务端,在分区域部署方式中,主代理服务端以及其对应的备代理服务端部署在不同区域,也即同一个区域中主备混合部署,既有主代理服务端又有备代理服务端。其中,主代理服务端可读可写,备代理服务端作为主代理服务端的副本,拥有主代理服务端上的全量数据,只能接收主代理服务端同步过来的数据,可读不可写。
[0004]由于RocketMQ支持一些特殊类型的目标消息,如定时消息、事务消息、延时消息等,目标消息会首先存储在特殊Topic(主题)中,在满足投放条件时,主服务端再将目标消息投放至消息队列,消费者才可以消费。在开源主从冷备方案的部署方式中,若一个区域的代理服务端出现问题,例如第一区域中的主代理服务端掉线,由于备代理服务端无法维护目标消息,为了保证目标消息的正常消费,则需要重新将第一区域中的主代理服务端拉起。在该主备切换的过程中可能会导致目标消息的消费延迟或丢失。
技术实现思路
[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]图1示出了本专利技术提供的消息队列系统的结构示意图;
[0034]图2为本专利技术实施例提供的一种消息处理方法一个实施例的流程图;
[0035]图3示意性示出了目标消息的接收和第一主代理服务端故障的时间线示意图;
[0036]图4为本专利技术另一实施例提供的一种消息处理方法一个实施例的流程图;
[0037]图5示意性示出了在第一主代理服务端恢复工作的情况下,消息处理方法的示意图;
[0038]图6为本专利技术另一实施例还提供一种消息处理方法一个实施例的流程图;
[0039]图7为本专利技术实本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种消息处理方法,其特征在于,应用于分布式消息系统中,所述方法包括:第一备代理服务端在第一主代理服务端故障的情况下,扫描所述第一主代理服务端中满足投放要求的目标消息;将所述目标消息发送至第二主代理服务端;所述目标消息用以存储至所述第二主代理服务端的消息队列中,以供消费者消费所述目标消息。2.根据权利要求1所述的方法,其特征在于,所述第一备代理服务端在第一主代理服务端故障的情况下,扫描所述第一主代理服务端中满足投放要求的目标消息包括:在监测到所述第一主代理服务端故障的情况下,启动与所述第一主代理服务端相对应的扫描线程;利用所述扫描线程扫描所述第一主代理服务端的消息存储组件,以便从所述消息存储组件中获取所述目标消息。3.根据权利要求1或2所述的方法,其特征在于,第一备代理服务端通过以下操作对所述第一主代理服务端的故障情况进行监测:从路由发现服务端获取路由表,其中,所述路由表用于记录所述第一主代理服务端的心跳信息,并在预设时间内未接收到来自所述第一主代理服务端的心跳后,将所述第一主代理服务端的心跳信息从所述路由表中删除;在所述路由表中不存在所述第一主代理服务端的心跳信息的情况下,确定所述第一主代理服务端故障。4.根据权利要求3所述的方法,其特征在于,所述路由表还用于记录所述第二主代理服务端的心跳信息;所述将所述目标消息发送至与所述第一备代理服务端部署在同一物理机器中的第二主代理服务端包括:确定所述路由表中是否存在所述第二主代理服务端的心跳信息;在所述路由表中存在所述第二主代理服务端的心跳信息的情况下,将所述目标消息发送至所述第二主代理服务端。5.根据权利要求1所述的方法,其特征在于,所述第二主代理服务端与所述第一备代理服务端部署在同一物理机器中。6.根据权利要求5所述的方法,其特征在于,在所述待处理消息包括定时消息的情况下,所述投放要求包括:所述定时消...
【专利技术属性】
技术研发人员:金融通,杜恒,
申请(专利权)人:阿里巴巴中国有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。