一种消息队列集群迁移方法及装置与流程

文档序号:28955465发布日期:2022-02-19 11:40阅读:114来源:国知局
一种消息队列集群迁移方法及装置与流程

1.本发明属于计算机技术领域,尤其涉及一种消息队列集群迁移方法及装置。


背景技术:

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


技术实现要素:

5.有鉴于此,本发明的目的在于提供一种消息队列集群迁移方法及装置,以解决消息队列集群迁移过程存在的效率低、易出错等问题,其具体的技术方案如下:
6.第一方面,本技术提供了一种消息队列集群迁移方法,应用于消息系统中,所述消息系统包括多个生产侧业务和多个消费侧业务,其中,所述消费侧业务的消息队列集群为第一消息队列集群,所述方法包括:
7.为所述多个生产侧业务创建一个第二消息队列集群,且所述第二消息队列集群配置有一个消息主题;
8.每个所述生产侧业务生成携带消息标签的消息,并将所述消息发布至所述消息主题中,其中,不同消息类型的消息携带的所述消息标签不同;
9.根据预置的所述消息标签与所述第一消息队列集群中的消息队列之间的映射关系,将所述第二消息队列集群中的每个消息发送至所述第一消息队列集群中与所述消息的所述消息标签相匹配的消息队列。
10.在第一方面的一种可能的实现方式中,所述根据预置的所述消息标签与所述第一消息队列集群中的消息队列之间的映射关系,将所述第二消息队列集群中的每个消息发送至所述第一消息队列集群中与所述消息的消息标签相匹配的消息队列,包括:
11.解析所述消息主题中的消息,获得所述消息携带的目标消息标签;
12.查询所述消息标签与所述第一消息队列集群中的消息队列之间的映射关系,获得与所述目标消息标签相匹配的第一消息队列集群的目标消息队列;
13.将所述消息发送至所述目标消息队列。
14.在第一方面的另一种可能的实现方式中,所述消息系统包括一公共生产者模块;
15.所述生产侧业务将所述消息发布至所述消息主题中的过程,包括:
16.任一所述生产侧业务生成所述消息后,调用公共生产者模块将所述消息发送至所述第二消息队列集群的所述消息主题中。
17.在第一方面的又一种可能的实现方式中,所述第一消息队列集群为activemq集群,所述第二消息队列集群为rocketmq集群。
18.第二方面,本技术还提供了一种消息系统,包括多个生产侧业务、多个消费侧业务、消息同步模块,所述消费侧业务对应的第一消息队列集群,为所述多个生产侧业务创建一个第二消息队列集群,且所述第二消息队列集群配置一个消息主题;
19.各个所述生产侧业务生成携带消息标签的消息,并将所述消息发布至所述消息主题中,其中,不同消息类型的消息携带的消息标签不同;
20.所述消息同步模块,用于根据预置的所述消息标签与所述第一消息队列集群中的消息队列之间的映射关系,将所述第二消息队列集群中的每个消息发送至所述第一消息队列集群中与所述消息的消息标签相匹配的消息队列。
21.在第二方面的一种可能的实现方式中,所述消息同步模块包括虚拟消费者和虚拟生产者;
22.所述虚拟消费者读取所述第二消息队列集群中的消息,并发送给所述虚拟生产者;
23.所述虚拟生产者解析所述消息获得所述消息携带的目标消息标签,查询预置的所述消息标签与所述第一消息队列集群中的消息队列之间的映射关系,获得与所述目标消息标签相匹配的第一消息队列集群中的目标消息队列,并将所述消息发布至所述目标消息队列。
24.在第二方面的另一种可能的实现方式中,各个所述生产侧业务对应一个公共生产者模块;
25.各个所述生产侧业务生产的消息,调用所述公共生产者模块发布至所述第二消息队列集群的所述消息主题中。
26.在第二方面的又一种可能的实现方式中,所述第一消息队列集群为activemq集群,所述第二消息队列集群为rocketmq集群。
27.第三方面,本技术还提供了一种设备,包括:存储器和处理器,其中,所述存储器中存储有指令,所述处理器执行所述指令以使所述设备执行第一方面任一项所述的消息队列集群迁移方法。
28.第四方面,本技术还提供了一种计算机可读存储介质,其特征在于,其上存储有计算机可执行的指令,所述计算机可执行指令被处理器加载并执行时,实现如上第一方面任一项所述的消息队列集群迁移方法。
29.第五方面,本技术还提供了一种计算机程序产品,当其在电子设备上执行时,适于执行初始化有如上第一方面任一种消息队列集群迁移方法的程序。
30.本技术提供的消息队列集群迁移方法,消费侧业务使用第一消息队列集群,将各个生产侧业务对应的消息队列集群从第一消息队列集群迁移至第二消息队列集群,各个生产侧业务生成的消息都发布至该第二消息队列集群的同一个消息主题(即topic)中。而且,
各个生产侧业务生成的消息中携带有消息标签。根据预置的消息标签与第一消息队列集群中的消息队列之间的映射关系,将生产侧业务发布的消息发送至与消息标签相匹配的消息队列中,以便消费侧业务基于第一消息队列集群消费消息。由上述内容可知,该方案中所有生产侧业务共用一个第二消息队列集群,且配置一个消息主题,不需要针对不同的生产侧业务创建不同的第二消息队列集群和topic,极大地减少了的配置工作量,提高了迁移效率。而且,生产侧业务生成的消息携带消息标签,根据消息标签与第一消息队列集群中的不同消息队列之间的映射关系,将各个消息转发至第一消息队列集群中对应的消息队列中,无需分别配置不同的topic与第一消息队列集群中消息队列之间的映射关系,从而进一步减少了配置工作量,提高了迁移效率。
附图说明
31.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
32.图1是一种基于activemq集群的系统结构示意图;
33.图2是本技术实施例提供的一种消息系统的结构示意图;
34.图3是本技术实施例提供的一种消息队列集群迁移方法的流程图;
35.图4是本技术实施例提供的一种消息转发过程的流程图;
36.图5是本技术实施例提供的另一种消息队列集群迁移方法的信令图。
具体实施方式
37.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
38.在对本技术提供的方法进行详细介绍之前,先将本技术涉及的技术术语或相关技术进行说明:
39.producer(消息生产者),负责产生消息,一般业务系统负责产生消息。
40.consumer(消息消费者),负责消费消息,一般服务负责消费消息。
41.message(消息),就是要传输的信息,如本技术中生产侧业务生成的消息。
42.topic(消息主题)消息传递模型,在该消息传递模型下,一个消息发布者向一个特定的topic发布消息,0个或多个对此消息主题感兴趣的订阅者可以接收到所发布的消息。
43.queue消息传递模型,通过该消息传递模型,消息生产者可以向消息消费者发送消息,在该传递模型中,消息目的地类型是队列(queue),消息首先被传送至消息服务器端特定的队列中,然后从此队列中将消息传送至对此队列进行监听的某个消费者。
44.在一种应用场景中,同一系统平台包括多个不同的业务子系统,每个业务子系统可以生成不同类型的消息,而且,不同生产者产生的消息发布到不同的消息队列集群中。如果将各个生产者使用的第一消息队列集群迁移至第二消息队列集群。由于消费侧业务众
多,消费者侧仍使用第一消息队列集群。其中,第一消息队列集群与第二消息队列集群的消息传递模型不同,例如,第一消息队列集群采用基于queue消息传递模型的activemq集群,第二消息队列集群采用基于topic消息传递模型的rocketmq集群。
45.此种场景下,既需要针对每个生产者创建第二消息队列集群,同时为了保证第二消息队列集群中的消息能够被使用第一消息队列集群的消费者消费,还需要配置每个第二消息队列集群中的每种类型的消息与第一消息队列集群中的各个消息队列之间的映射关系,这样,第二消息队列集群中的各类消息才能转发至消费侧的第一消息队列集群中的相应消息队列中,以便消费者消费。但是,将生产者侧的各个第一消息队列集群迁移至第二消息队列集群,需要针对每个生产者创建一个第二消息队列集群,人工配置工作量大,导致迁移消息低且易出错。同时,第二消息队列集群中每类消息与第一消息队列集群中消息队列之间的映射关系的配置工作量大,进一步导致迁移消息低。
46.下面以第一消息队列集群为activemq集群为例进行说明,请参见图1,示出了基于activemq集群的消息系统的结构示意图。
47.如图1所示,该消息系统包括n个生产者、多个activemq集群、多个消费者。其中,每个activemq集群包括至少一个virtualtopic,每个virtualtopic包括多个消息队列(queue)。
48.virtualtopic对于生产者而言是topic,对于消费者而言是queue,内部的处理机制就是将接收到的消息二次分发给每一个queue,不同的消费者只关心并连接到自己的queue接收消息即可。
49.鉴于activemq集群的性能低于rocketmq集群,需要将业务平台的activemq集群迁移至rocketmq集群。而该业务平台包括多个activemq集群或多个virtualtopic,将activemq集群迁移至rocketmq集群时,需要创建多个rocketmq集群,或者配置多个topic,配置工作量大、而且容易出问题。此外,在消费端无感知(即,消费端仍使用activemq集群消费消息)的前提下,将生产者的activemq集群迁移至rocketmq集群,还需要配置各个rocketmq集群或各个topic与activemq集群中的queue之间的对应关系,配置工作量大且易出错。
50.针对上述集群迁移场景存在的问题,本技术提供了一种消息队列集群迁移方法,该方法为系统中的所有生产侧业务创建一个第二消息队列集群,且该第二消息队列集群只配置一个消息主题。每个生产侧业务生成携带消息标签的消息,不同类型的消息对应的消息标签不同。而且,预先设置了消息标签与第一消息队列集群中的消息队列之间的映射关系,基于该映射关系即可将第二消息队列集群中的消息转发至第一消息队列集群中的相应消息队列中。可见,该方案不需要针对不同的生产侧业务创建不同的第二消息队列集群和topic,极大地减少了的配置工作量,提高了迁移效率。而且,生产侧业务生成的消息携带消息标签,根据消息标签与第一消息队列集群中的不同消息队列之间的映射关系,将各个消息转发至第一消息队列集群中对应的消息队列中,无需分别配置不同的topic与第一消息队列集群中消息队列之间的映射关系,从而进一步减少了配置工作量,提高了迁移效率。
51.请参见图2,示出了本技术实施例提供的一种消息系统的结构示意图,该系统包括:n个消息生产者,一个第二消息队列集群、消息同步模块、第一消息队列集群。
52.例如,在一个包括多种不同业务的业务系统中,生产者是产生消息的各个业务,消
费者是该业务系统中接收各个业务产生的消息的服务。
53.本实施例中以第一消息队列集群为activemq集群、第二消息队列集群为rocketmq集群为例进行说明,在其他实施例中,第一消息队列集群和第二消息队列集群分别可以采用其他消息队列集群,本技术不做限制。
54.生产者侧的业务从activemq集群迁移至rocketmq集群,其中,该rocketmq集群中配置有一个topic,每个生产者发布的消息均发布至该topic中,且生产者发布的消息携带消息标签tag。
55.tag(消息标签),用于为用户提供额外的灵活性。同一业务模块产生的不同类型的消息,可以用不同的tag来标识。消费者可以通过topic和tag订阅消息并消费消息。
56.消息同步模块可以单独部署,用于将rocketmq集群中的消息转发至rocketmq集群中相应的队列中,以便消费者消费activemq集群中的消息,从activemq集群中的消息队列中读取自己订阅的消息进行消费,即生产者侧的消息集群迁移至rocketmq集群对消费者而言无感知。
57.在一示例性实施例中,消息同步模块包括虚拟消费者(即rocketmq消费者)和虚拟生产者(即activemq生产者)。
58.虚拟消费者作为第二消息队列集群的消费者,读取第二消息队列集群的topic中的消息,并转发至与该虚拟消费者关联的虚拟生产者。
59.虚拟生产者作为第一消息队列集群的生产者,用于将消息发布至第一消息队列集群的queue中,其中,虚拟生产者根据tag与queue之间的映射关系,将接收到的消息发布至与该消息携带的tag相匹配的queue中。
60.在一种可能的实现方式中,为了加快消息转发速度,同时启动多个虚拟消费者和多个虚拟生产者。
61.多个虚拟消费者可以同时消费rocketmq集群的topic中的消息,加快了消息转发速度。
62.在另一种可能的实现方式中,每个虚拟消费者对应多个虚拟生产者,多个虚拟生产者可以同时处理接收到的消息,即,根据tag与queue之间的映射关系,将接收到的消息发送至对应的queue中。发布速度最快的虚拟生产者将消息转发至与该消息相匹配的queue中,其他虚拟生产者无需继续处理该消息,因此,配置多个虚拟生产者能够加快消息转发速率。
63.本实施例提供的消息系统,所有生产侧业务创建一个第二消息队列集群,且该第二消息队列集群只配置一个消息主题。每个生产侧业务生成携带消息标签的消息,不同类型的消息对应的消息标签不同。而且,预先设置了消息标签与第一消息队列集群中的消息队列之间的映射关系,基于该映射关系即可将第二消息队列集群中的消息转发至第一消息队列集群中的相应消息队列中。不需要针对不同的生产侧业务创建不同的第二消息队列集群和topic,极大地减少了的配置工作量,提高了迁移效率。而且,根据消息标签与第一消息队列集群中的不同消息队列之间的映射关系,将各个消息转发至第一消息队列集群中对应的消息队列中,无需配置不同的topic与第一消息队列集群中消息队列之间的映射关系,进一步减少了配置工作量,提高了迁移效率。
64.下面将结合消息同步方法的流程图详细介绍消息队列集群迁移过程:
65.请参见图3,示出了本技术实施例一种消息队列集群迁移方法的流程图,应用于图2所示的消息系统中,即生产者从第一消息队列集群迁移至第二消息队列集群,消费者仍采用第一消息队列集群,其中,第一消息队列集群采用queue消息传递模型,第二消息队列集群采用topic消息传递模型。
66.如图3所示,该方法可以包括如下步骤:
67.s110,创建一个第二消息队列集群,且该第二消息队列集群配置有一个topic。
68.本实施例仅需创建一个第二消息队列集群,而且,第二消息队列集群仅配置一个消息主题,即topic,消息系统中的所有生产者都将消息发布至该topic中。
69.所有生产者都将消息发布至同一个topic中,因此,所有生产者可以共用同一个生产者发送模块,从而避免重复编写不同生产者发送模块的代码,因此降低了迁移工作量。
70.s120,每个生产者生成携带tag的消息,并将该消息发布至该topic中。
71.其中,tag表示消息类型,即不同消息类型的消息中的tag不同。
72.不同生产者产生的消息中的tag不同,而且,同一生产者产生的不同消息类型的消息中的tag不同。
73.例如,视频业务平台中的影视业务产生的悬疑影视剧对应的tag与动漫的tag不同。
74.tag是消息的一部分,生产者在产生消息时可以根据消息的类型生成不同的tag,不需要人工额外创建或配置。
75.s130,根据预置的tag与第一消息队列集群中的消息队列之间的映射关系,将各个消息发送至第一消息队列集群中与该消息的tag相匹配的消息队列中。
76.tag与第一消息队列集群中的消息队列之间的映射关系需要人工预先配置。工作人员可以根据消息集群迁移之前,消费端的第一消息队列集群中各个queue关联的生产者侧的第一消息队列集群中的queue,以及生产者与生产者侧的第一消息队列集群中的queue之间的映射关系,配置tag与消费端的第一消息队列集群中的queue之间的映射关系。该映射关系写入配置文件中,消息系统初始化时读取该配置文件即可获得该映射关系。
77.例如,某一业务系统中包括不同类型的业务1与业务2,这两个业务产生的消息类型不同,业务1产生的消息需要转发至activemq集群的队列queue1中,而业务2产生的消息需要转发至queue2中,此种情况下,tag与queue之间的映射关系为:tag1与queue1对应,tag2与queue2对应。当需要将生产者产生的消息转发至消费者侧时,根据该映射关系将包含tag1的消息转发至queue1,包含tag2的消息转发至queue2中。
78.在一示例性实施例中,如图4所示,s130所示的过程可以包括如下步骤:
79.s131,解析消息主题中的消息,获得该消息携带的目标消息标签。
80.读取第二消息队列集群的topic中的消息,并解析该消息中携带的tag,即目标消息标签。
81.s132,查询消息标签与第一消息队列集群中的消息队列之间的映射关系,获得与目标消息标签相匹配的第一消息队列集群的目标消息队列。
82.查询tag与queue的映射关系,获得第一消息队列集群中与目标消息标签相匹配的queue,即目标消息队列。
83.s133,将该消息发送至目标消息队列。
84.最后,将从第二消息队列集群的topic中读取的消息,发送至第一消息队列集群中的目标消息队列中,最终实现第二消息队列集群中的消息转发至第一消息队列集群中,以便消费者按照queue消息消费模式消费消息。
85.在本技术的一个实施例中,可以由图2所示的消息系统中的消息同步模块执行s130,该消息同步模块包括虚拟消费者和虚拟生产者,其中,每个虚拟消费者都关联至少一个虚拟生产者。
86.虚拟消费者作为第二消息队列集群的消费者,读取第二消息队列集群的topic中的消息,并转发至与该虚拟消费者关联的虚拟生产者。
87.虚拟生产者作为第一消息队列集群的生产者,用于将消息发布至第一消息队列集群的queue中,其中,虚拟生产者根据tag与queue之间的映射关系,将接收到的消息发布至与该消息携带的tag相匹配的queue中。
88.本实施例只需配置各个tag与queue之间的映射关系,无需在生产者侧配置分别与消费者侧的queue一一对应的topic,因此,进一步降低了人工配置工作量。
89.本实施例提供的消息队列集群迁移方法,为系统中的所有生产侧业务创建一个第二消息队列集群,且该第二消息队列集群只配置一个消息主题。每个生产侧业务生成携带消息标签的消息,不同类型的消息对应的消息标签不同。而且,预先设置了消息标签与第一消息队列集群中的消息队列之间的映射关系,基于该映射关系即可将第二消息队列集群中的消息转发至第一消息队列集群中的相应消息队列中。可见,该方案不需要针对不同的生产侧业务创建不同的第二消息队列集群和topic,极大地减少了的配置工作量,提高了迁移效率。而且,生产侧业务生成的消息携带消息标签,根据消息标签与第一消息队列集群中的不同消息队列之间的映射关系,将各个消息转发至第一消息队列集群中对应的消息队列中,无需配置不同的topic与第一消息队列集群中消息队列之间的映射关系,从而进一步减少了配置工作量,提高了迁移效率。
90.请参见图5,示出了本技术实施例提供的另一种消息队列集群迁移方法的流程图,本实施例中的第一消息队列集群为基于topic消息传递模型的activemq集群,第二消息队列集群为基于queue消息传递模型的rocketmq集群。
91.如图5所示,该方法可以包括以下步骤:
92.s210,创建一个rocketmq集群,且该rocketmq集群配置有一个topic。
93.如图2所示的消息系统包括n个消息生产者(即产生消息的业务方),这n个生产者产生的消息都发布至该topic中。这n个生产者的发送模块执行的逻辑相同都是将消息发送至同一个topic中,因此,n个生产者共用一个公共生产者模块,任一生产者产生消息后,调用该公共生产者模块将该消息发送至同一topic中。这样,能够避免重复编写生产者模块的代码,降低了开发人员的工作量。
94.在一示例性实施例中,可以各个生产侧业务模块化动态加载rocketmq集群的生产者模块,即判断相应配置信息是否配置了实例化生产者的配置信息,如果配置了实例化生产者的配置信息,才需要实例化生产者,不需要每个生产侧业务都实例化生产者,因此降低了系统资源开销。
95.换言之,不需要为每个生产侧业务配置生产者程序,只需为其中的任一个生产侧业务开发生产者程序,避免重复开发生产者程序,降低了开发人员的工作量。
96.s220,生产侧业务生成携带tag的消息,不同消息类型的消息对应的tag不同。
97.在一示例性实施例中,可以为整个业务系统中的消息类型配置相应的tag,不同消息类型对应的tag不同,例如,a类型的消息对应的消息标签为tag1,b类型的消息对应的消息标签为tag2。
98.当生产侧业务生成某一类型的消息时,在该消息中携带与该类型对应的tag。
99.进一步,配置tag与activemq集群中的queue之间的映射关系,并将该映射关系写入配置文件中。
100.s230,生产侧业务利用公共生产者模块,将消息发布至rocketmq集群的topic中。
101.任一生产侧业务产生消息后,启动公共生产者模块,通过该公共生产者模块将该消息发布至topic中。
102.s240,消息同步模块中的虚拟消费者从topic中读取消息,并转发至与该虚拟消费者关联的虚拟生产者。
103.消息同步模块包括虚拟消费者和虚拟生产者,其中,虚拟消费者是rocketmq集群的消费者,用于读取rocketmq集群中的消息。虚拟生产者是activemq集群的生产者,用于将消息发布至activemq集群的queue中。
104.在本技术的一个实施例中,为了加快消息转发速度,同时启动多个虚拟消费者和多个虚拟生产者。
105.多个虚拟消费者可以同时消费rocketmq集群的topic中的消息,加快了消息转发速度。
106.在一示例性实施例中,根据配置文件中tag与queue之间的映射关系,为每一组映射关系启动一个虚拟消费者和n个虚拟生产者,n≥1。
107.每个虚拟消费者都将读取的消息发送至与自身关联的所有虚拟生产者,这样,多个虚拟生产者可以同时处理接收到的消息,即,根据tag与queue之间的映射关系,将接收到的消息发送至对应的queue中。
108.发布速度最快的虚拟生产者将消息转发至与该消息相匹配的queue中,其他虚拟生产者无需继续处理该消息,因此,配置多个虚拟生产者能够加快消息转发速率。
109.s250,虚拟生产者解析得到该消息携带的目标消息标签,并根据tag与queue之间的映射关系,确定与该目标消息标签相匹配的目标消息队列。
110.消息同步模块初始化时,读取配置文件中tag与queue之间的映射关系,虚拟生产者接收到消息后,解析该消息获得该消息中的目标消息标签,并基于该映射关系查询与该目标标签相匹配的目标消息队列。
111.s260,虚拟生产者将接收到的消息发布至目标消息队列中。
112.虚拟生产者基于tag与queue之间的映射关系将接收到的消息发布至activemq集群的目标消息队列中。
113.例如,taga与queue1相对应,则虚拟生产者接收到包含taga的消息后,将该消息发送至activemq集群的queue1中。又如,tagb与queue2相对应,当虚拟生产者接收到包含tagb的消息后,将该消息转发至queue2中。
114.s270,消费侧业务从activemq集群的queue中读取订阅的消息。
115.消费侧业务可以直接按照activemq集群的消息消费方式消费消息,例如,消费者1
订阅了queue1中的消息,消费者1监听queue1,当监听到queue1中有消息时,消费者1直接从该queue1中读取消息。
116.本实施例提供的消息队列集群迁移方法,该方案不需要针对不同的生产侧业务创建不同的rocketmq集群和topic,极大地减少了的配置工作量,提高了迁移效率。而且,根据消息标签与第一消息队列集群中的不同消息队列之间的映射关系,将各个消息转发至第一消息队列集群中对应的消息队列中,无需配置不同的topic与第一消息队列集群中消息队列之间的映射关系,从而进一步减少了配置工作量,提高了迁移效率。而且,本实施例中的消息同步模块中配置有多个rocketmq消费者(即,虚拟消费者)和多个activemq生产者(即虚拟生产者),多个虚拟消费者将topic中的同一消息转发至相应的虚拟生产者,各个虚拟生产者基于tag与queue之间的映射关系将该消息发布至activemq集群中的queue中,多个虚拟消费者和虚拟生产者同时处理一个消息,加快了消息转发速率,提高了消息转发效率。
117.本技术还提供了一种计算设备可执行的存储介质,该存储介质中存储有程序,该程序由计算设备执行时实现上述的消息队列集群迁移方法。
118.本技术还提供了一种计算机程序产品,当其在电子设备上执行时,适于执行初始化有上述的任一种消息队列集群迁移方法步骤的程序。
119.对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
120.需要说明的是,本说明书中的各个实施例记载的技术特征可以相互替代或组合,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
121.本技术各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
122.本技术各实施例中的装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。
123.本技术所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
124.作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。
125.另外,在本技术各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功
能模块或子模块的形式实现。
126.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
127.对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
128.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1