一种动态切换消息队列的方法技术

技术编号:30145648 阅读:14 留言:0更新日期:2021-09-23 15:19
本发明专利技术涉及消息通讯技术领域,具体地说,涉及一种动态切换消息队列的方法。其包括以下步骤:S1、消息生产者和消息订阅者相互确定消息队列服务器的相关信息,搭建统一的消息队列服务器;S2、消息生产者的业务方,通过消息队列的消息发送服务,统一消息发送API服务;S3、消息订阅者的业务方,通过消息队列的消息订阅服务,统一消息订阅API服务;S4、消息队列服务器变更时,消息生产者和消息订阅者根据配置文件,对消息队列服务器的相关信息进行动态切换。本发明专利技术中通过消息队列进行统一API服务来进行消息的发布与订阅,在切换到不同消息队列组件时将该消息的队列信息进行动态配置,实现使用的消息队列组件的接收和切换,免去了修改业务代码的麻烦。业务代码的麻烦。业务代码的麻烦。

【技术实现步骤摘要】
一种动态切换消息队列的方法


[0001]本专利技术涉及消息通讯
,具体地说,涉及一种动态切换消息队列的方法。

技术介绍

[0002]消息队列是一个具有普适性质的消息队列组件,它不需要考虑上层的业务模型,只做好消息的分发就可以,上层业务的不同模块反而需要依赖消息队列所定义的规范进行通信。消息队列分为消息和队列两个部分,消息就是要传输的数据,它可以是简单的文本字符串,也可以是自定义的复杂格式。队列就是一种先进先出的数据结构,它是存放消息的容器,消息从队尾入队,从队头出队,入队即发送消息的过程,出队即接收消息的过程。
[0003]消息队列的使用者有两种角色,即消息生产者和消息订阅者。消息生产者在发送消息的时候,通过消息队列服务器提供的客户端API来完成向消息队列服务器发送消息的功能,消息订阅者在监听消息的时候也通过消息队列服务器提供的客户端API来从消息队列服务器中获取订阅的消息进行处理。目前市场上主流的消息队列产品既有ActiveMQ、RabbitMQ,RocketMQ等开源消息队列组件,也有ONSMQ等云环境特有的消息队列组件,一般在使用这些消息队列产品时,需要根据不同的消息队列服务器来使用不同的消息队列客户端来做相应的适配开发。
[0004]在实际项目开发过程中,项目在使用不同的消息队列服务时需要集成相应的消息队列服务器的客户端,当切换使用另外一种消息队列服务的时候,又需要集成另外一种消息队列的客户端来接收信息,业务代码和消息队列服务的客户端产生比较紧的耦合,在进行不同消息队列切换的时候需要大量修改与消息队列服务器通讯的业务代码,切换队列麻烦,且在修改业务代码时,会浪费一定的时间,从而减缓队列切换的速度。

技术实现思路

[0005]本专利技术的目的在于提供一种动态切换消息队列的方法,以解决上述
技术介绍
中提出的问题。
[0006]为实现上述目的,本专利技术提供一种动态切换消息队列的方法,包括以下步骤:S1、消息生产者和消息订阅者相互确定要使用的消息队列服务器的相关信息,并在两方正常访问的服务器上搭建统一的消息队列服务器;S2、消息生产者的业务方,通过消息队列的消息发送服务,配置消息队列服务器的相关信息,并统一对消息生产者的消息发送API服务;S3、消息订阅者的业务方,通过消息队列的消息订阅服务,配置消息队列服务器的相关信息,并统一对消费订阅者的消息订阅API服务;S4、消息队列服务器发生变更时,消息生产者和消息订阅者根据消息队列的配置文件,对消息队列服务器的相关信息进行动态切换。
[0007]作为本技术方案的进一步改进,在步骤S2中,统一对消息生产者的消息发送API服务步骤如下:
S1.1、消息生产者在发送普通消息及顺序消息时,调用消息队列的消息队列发送服务;S1.2、服务分析消息生产者配置的消息队列服务器的相关信息;S1.3、根据消息队列服务器的相关信息建立消息队列服务器的客户端;S1.4、将消息队列服务器的客户端和消息队列服务器的连接并将消息发送到消息队列服务器中;S1.5、消息队列服务器对接收到信息进行统一的消息入队操作。
[0008]作为本技术方案的进一步改进,所述消息队列服务器的相关信息包括连接地址、用户名、密码、使用模式。
[0009]作为本技术方案的进一步改进,在步骤S3中,统一对消息订阅者的消息订阅API服务步骤如下:S2.1、消息订阅者启动消息队列的消息队列订阅服务;S2.2、消息队列根据消息队列服务器中订阅者配置的相关信息与相应的消息队列服务器建立连接;S2.3、消息订阅者选取消息订阅模式;S2.4、根据消息订阅的模式从消息队列服务器进行出队操作来获取订阅的消息;S2.5、将订阅的消息交由订阅者进行处理。
[0010]作为本技术方案的进一步改进,所述消息订阅者和消息生产者接入的消息队列为同一队列。
[0011]作为本技术方案的进一步改进,所述消息队列服务器中的动态切换均在消息队列中进行切换,且在动态切换的同时,消息队列服务器对消息订阅服务、消息发送服务进行实时更新。
[0012]作为本技术方案的进一步改进,在步骤S1.5中,所述消息入队操作的公式包括置空函数、入队函数、出队函数和判空函数,其入队的步骤如下:置空:将队列置成空队列;根据函数的形参,即传递进来的队列指针,调用它的首指针和尾指针让两个指针相等,就把队列中的元素全部清空。
[0013]入队:将元素插入到队列的尾部;判断数据元素队列是否排满;如果队列已满,就退出操作,否则执行入队操作的语句,由于是循环队列所以在移动尾指针时,要把尾指针的位置取余运算,然后把数据元素赋给尾指针;出队:删除队列的队头元素,并将队列删除的元素进行传输;当有数据元素要出队时,首先判断该队列是否为空,如果为空时,元素出队列失败。否则,当队列不为空时,执行出队操作,返回数值1, 说明出队成功;判空:判断队列是否为空;判断为空的条件是:如果为空返回值为1,否则返回值为0。
[0014]作为本技术方案的进一步改进,所述消息入队的方法如下:置空:调用函数把队列的顶端指针和低端指针指向同一块地址,将队列置空,当队列中的数据元素不用或者必须要清楚时,调用该函数把队列中的数据清空,再插入新的数据供用户操作使用;入队:通过移动首指针找到要入队的数据,直到把队列的空间占满,有数据要进入
队列时,调用该函数把数据元素x插入到队列中,先判断队列是否己满让后才能把数据元素插入到队尾;出队:通过移动首指针把队首的指针往下移动一个地址,把一个元素数据出队,当要出队时,队列是从头指针开始一系列操作,先判断该队列是否为空队列;如果不是的话,在进行出队操作把头指针往上移一个地址,将数据出队。
[0015]判空:如果为空返回数值1否则返回0。当出队操作时,需要判断队列是否为空,调用该函数。
[0016]与现有技术相比,本专利技术的有益效果:1、该动态切换消息队列的方法中,通过消息队列进行统一API服务来进行消息的发布与订阅,在切换到不同消息队列组件时无需修改任何业务代码,只需要将该消息的队列信息进行动态配置,实现使用的消息队列组件的接收和切换,从而实现不同消息队列的切换,让业务系统在进行消息的发送与订阅时,不去关心消息通讯使用的是哪种消息队列服务,免去了修改业务代码的麻烦。
[0017]2、该动态切换消息队列的方法中,通过消息队列的组件,让业务系统在进行服务间消息通讯时,通过统一的API服务来进行消息的发送与订阅,并可通过配置的方式动态切换使用不同的消息队列组件,让上层业务代码不需做任何改动,实现业务与中间件的无关性,加快队列切换的速度。
附图说明
[0018]图1为本专利技术实施例1的结构示意框图;图2为本专利技术实施例1的整体流程示意框图;图3为本专利技术实施例1的消息发送服务流程框图;图4为本专利技术实施例1的消息订阅服流程框图。
具体实施方式
[0019]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种动态切换消息队列的方法,其特征在于:包括以下步骤:S1、消息生产者和消息订阅者相互确定要使用的消息队列服务器的相关信息,并在两方正常访问的服务器上搭建统一的消息队列服务器;S2、消息生产者的业务方,通过消息队列的消息发送服务,配置消息队列服务器的相关信息,并统一对消息生产者的消息发送API服务;S3、消息订阅者的业务方,通过消息队列的消息订阅服务,配置消息队列服务器的相关信息,并统一对消息订阅者的消息订阅API服务;S4、消息队列服务器发生变更时,消息生产者和消息订阅者根据消息队列的配置文件,对消息队列服务器的相关信息进行动态切换。2.根据权利要求1所述的动态切换消息队列的方法,其特征在于:在步骤S2中,统一对消息生产者的消息发送API服务步骤如下:S1.1、消息生产者在发送普通消息及顺序消息时,调用消息队列的消息队列发送服务;S1.2、服务分析消息生产者配置的消息队列服务器的相关信息;S1.3、根据消息队列服务器的相关信息建立消息队列服务器的客户端;S1.4、将消息队列服务器的客户端和消息队列服务器的连接并将消息发送到消息队列服务器中;S1.5、消息队列服务器对接收到信息进行统一的消息入队操作。3.根据权利要求2所述的动态切换消息队列的方法,其特征在于:所述消息队列服务器的相关信息包括连接地址、用户名、密码、使用模式。4.权利要求1所述的动态切换消息队列的方法,其特征在于:在步骤S3中,统一对消息订阅者的消息订阅API服务步骤如下:S2.1、消息订阅者启动消息队列的消息队列订阅服务;S2.2、消息队列根据消息队列服务器中订阅者配置的相关信息与相应的消息队列服务器建立连接;S2.3...

【专利技术属性】
技术研发人员:邱擘施俊付志成吴鹏飞谢文锋
申请(专利权)人:成都特维思科技有限公司
类型:发明
国别省市:

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

1