一种消息队列集群迁移方法及装置制造方法及图纸

技术编号:32347108 阅读:64 留言:0更新日期:2022-02-20 02:07
本申请提供了一种消息队列集群迁移方法及装置,该方案为系统中的所有生产侧业务创建一个第二消息队列集群,且只配置一个消息主题。每个生产侧业务生成携带消息标签的消息。而且,预先设置了消息标签与第一消息队列集群中消息队列之间的映射关系,基于该映射关系将第二消息队列集群中的消息转发至第一消息队列集群中的相应消息队列中。该方案不需要针对不同的生产侧业务创建不同的第二消息队列集群和Topic,减少了的配置工作量,提高了迁移效率。而且,无需分别配置不同的Topic与第一消息队列集群中消息队列之间的映射关系,从而进一步减少了配置工作量,提高了迁移效率。提高了迁移效率。提高了迁移效率。

【技术实现步骤摘要】
一种消息队列集群迁移方法及装置


[0001]本专利技术属于计算机
,尤其涉及一种消息队列集群迁移方法及装置。

技术介绍

[0002]消息队列(Message Queue,MQ)中间件,是指在消息的传输中保存消息的容器或服务,是分布式系统实现高性能、高可用性、高伸缩等高级特效的重要组件,适用各种场景,如,消息通讯、异步处理、应用解耦、流量削峰等等。
[0003]比如,目前比较主流的两种消息队列中间件包括ActiveMQ和RocketMQ。ActiveMQ是一种开源的基于JMS(Java Message Service)规范的一种开源消息队列中间件,其吞吐量为万级,可用性高。RocketMQ是阿里巴巴的开源消息队列,采用Java语言开发,具有高吞吐量(10万级)、可用性非常高、适合大规模分布式系统应用的特点。
[0004]但是,考虑到不同消息队列集群的性能不同,有时需要将基于一种消息队列中间件的消息队列集群迁移至基于另一种消息队列中间件上,通常需要大量配置工作,迁移效率低且出错率高。例如,考虑到RocketMQ比ActiveMQ的性能更高,则需要将原本基于ActiveMQ集群的业务系统迁移至RocketMQ集群,以提高整个业务系统的性能。

技术实现思路

[0005]有鉴于此,本专利技术的目的在于提供一种消息队列集群迁移方法及装置,以解决消息队列集群迁移过程存在的效率低、易出错等问题,其具体的技术方案如下:
[0006]第一方面,本申请提供了一种消息队列集群迁移方法,应用于消息系统中,所述消息系统包括多个生产侧业务和多个消费侧业务,其中,所述消费侧业务的消息队列集群为第一消息队列集群,所述方法包括:
[0007]为所述多个生产侧业务创建一个第二消息队列集群,且所述第二消息队列集群配置有一个消息主题;
[0008]每个所述生产侧业务生成携带消息标签的消息,并将所述消息发布至所述消息主题中,其中,不同消息类型的消息携带的所述消息标签不同;
[0009]根据预置的所述消息标签与所述第一消息队列集群中的消息队列之间的映射关系,将所述第二消息队列集群中的每个消息发送至所述第一消息队列集群中与所述消息的所述消息标签相匹配的消息队列。
[0010]在第一方面的一种可能的实现方式中,所述根据预置的所述消息标签与所述第一消息队列集群中的消息队列之间的映射关系,将所述第二消息队列集群中的每个消息发送至所述第一消息队列集群中与所述消息的消息标签相匹配的消息队列,包括:
[0011]解析所述消息主题中的消息,获得所述消息携带的目标消息标签;
[0012]查询所述消息标签与所述第一消息队列集群中的消息队列之间的映射关系,获得与所述目标消息标签相匹配的第一消息队列集群的目标消息队列;
[0013]将所述消息发送至所述目标消息队列。
[0014]在第一方面的另一种可能的实现方式中,所述消息系统包括一公共生产者模块;
[0015]所述生产侧业务将所述消息发布至所述消息主题中的过程,包括:
[0016]任一所述生产侧业务生成所述消息后,调用公共生产者模块将所述消息发送至所述第二消息队列集群的所述消息主题中。
[0017]在第一方面的又一种可能的实现方式中,所述第一消息队列集群为ActiveMQ集群,所述第二消息队列集群为RocketMQ集群。
[0018]第二方面,本申请还提供了一种消息系统,包括多个生产侧业务、多个消费侧业务、消息同步模块,所述消费侧业务对应的第一消息队列集群,为所述多个生产侧业务创建一个第二消息队列集群,且所述第二消息队列集群配置一个消息主题;
[0019]各个所述生产侧业务生成携带消息标签的消息,并将所述消息发布至所述消息主题中,其中,不同消息类型的消息携带的消息标签不同;
[0020]所述消息同步模块,用于根据预置的所述消息标签与所述第一消息队列集群中的消息队列之间的映射关系,将所述第二消息队列集群中的每个消息发送至所述第一消息队列集群中与所述消息的消息标签相匹配的消息队列。
[0021]在第二方面的一种可能的实现方式中,所述消息同步模块包括虚拟消费者和虚拟生产者;
[0022]所述虚拟消费者读取所述第二消息队列集群中的消息,并发送给所述虚拟生产者;
[0023]所述虚拟生产者解析所述消息获得所述消息携带的目标消息标签,查询预置的所述消息标签与所述第一消息队列集群中的消息队列之间的映射关系,获得与所述目标消息标签相匹配的第一消息队列集群中的目标消息队列,并将所述消息发布至所述目标消息队列。
[0024]在第二方面的另一种可能的实现方式中,各个所述生产侧业务对应一个公共生产者模块;
[0025]各个所述生产侧业务生产的消息,调用所述公共生产者模块发布至所述第二消息队列集群的所述消息主题中。
[0026]在第二方面的又一种可能的实现方式中,所述第一消息队列集群为ActiveMQ集群,所述第二消息队列集群为RocketMQ集群。
[0027]第三方面,本申请还提供了一种设备,包括:存储器和处理器,其中,所述存储器中存储有指令,所述处理器执行所述指令以使所述设备执行第一方面任一项所述的消息队列集群迁移方法。
[0028]第四方面,本申请还提供了一种计算机可读存储介质,其特征在于,其上存储有计算机可执行的指令,所述计算机可执行指令被处理器加载并执行时,实现如上第一方面任一项所述的消息队列集群迁移方法。
[0029]第五方面,本申请还提供了一种计算机程序产品,当其在电子设备上执行时,适于执行初始化有如上第一方面任一种消息队列集群迁移方法的程序。
[0030]本申请提供的消息队列集群迁移方法,消费侧业务使用第一消息队列集群,将各个生产侧业务对应的消息队列集群从第一消息队列集群迁移至第二消息队列集群,各个生产侧业务生成的消息都发布至该第二消息队列集群的同一个消息主题(即Topic)中。而且,
各个生产侧业务生成的消息中携带有消息标签。根据预置的消息标签与第一消息队列集群中的消息队列之间的映射关系,将生产侧业务发布的消息发送至与消息标签相匹配的消息队列中,以便消费侧业务基于第一消息队列集群消费消息。由上述内容可知,该方案中所有生产侧业务共用一个第二消息队列集群,且配置一个消息主题,不需要针对不同的生产侧业务创建不同的第二消息队列集群和Topic,极大地减少了的配置工作量,提高了迁移效率。而且,生产侧业务生成的消息携带消息标签,根据消息标签与第一消息队列集群中的不同消息队列之间的映射关系,将各个消息转发至第一消息队列集群中对应的消息队列中,无需分别配置不同的Topic与第一消息队列集群中消息队列之间的映射关系,从而进一步减少了配置工作量,提高了迁移效率。
附图说明
[0031]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种消息队列集群迁移方法,其特征在于,应用于消息系统中,所述消息系统包括多个生产侧业务和多个消费侧业务,其中,所述消费侧业务的消息队列集群为第一消息队列集群,所述方法包括:为所述多个生产侧业务创建一个第二消息队列集群,且所述第二消息队列集群配置有一个消息主题;每个所述生产侧业务生成携带消息标签的消息,并将所述消息发布至所述消息主题中,其中,不同消息类型的消息携带的所述消息标签不同;根据预置的所述消息标签与所述第一消息队列集群中的消息队列之间的映射关系,将所述第二消息队列集群中的每个消息发送至所述第一消息队列集群中与所述消息的所述消息标签相匹配的消息队列。2.根据权利要求1所述的方法,其特征在于,所述根据预置的所述消息标签与所述第一消息队列集群中的消息队列之间的映射关系,将所述第二消息队列集群中的每个消息发送至所述第一消息队列集群中与所述消息的消息标签相匹配的消息队列,包括:解析所述消息主题中的消息,获得所述消息携带的目标消息标签;查询所述消息标签与所述第一消息队列集群中的消息队列之间的映射关系,获得与所述目标消息标签相匹配的第一消息队列集群的目标消息队列;将所述消息发送至所述目标消息队列。3.根据权利要求1所述的方法,其特征在于,所述消息系统包括一公共生产者模块;所述生产侧业务将所述消息发布至所述消息主题中的过程,包括:任一所述生产侧业务生成所述消息后,调用公共生产者模块将所述消息发送至所述第二消息队列集群的所述消息主题中。4.根据权利要求1

3任一项所述的方法,其特征在于,所述第一消息队列集群为ActiveMQ集群,所述第二消息队列集群为RocketMQ集群。5.一种消息系统,其特征在于,包括多个生产侧业务、多个消费侧业务、消息同步模块,所述消费侧业务对应的第一消息队列集群...

【专利技术属性】
技术研发人员:艾国信郑雨卿宋超
申请(专利权)人:北京奇艺世纪科技有限公司
类型:发明
国别省市:

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

1