CN116866279A - 一种基于Shovel的RabbitMQ队列水平扩展方法及系统 - Google Patents

一种基于Shovel的RabbitMQ队列水平扩展方法及系统 Download PDF

Info

Publication number
CN116866279A
CN116866279A CN202310789288.4A CN202310789288A CN116866279A CN 116866279 A CN116866279 A CN 116866279A CN 202310789288 A CN202310789288 A CN 202310789288A CN 116866279 A CN116866279 A CN 116866279A
Authority
CN
China
Prior art keywords
queue
component
server
information
exchanger
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310789288.4A
Other languages
English (en)
Inventor
张超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Citic Bank Corp Ltd
Original Assignee
China Citic Bank Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Citic Bank Corp Ltd filed Critical China Citic Bank Corp Ltd
Priority to CN202310789288.4A priority Critical patent/CN116866279A/zh
Publication of CN116866279A publication Critical patent/CN116866279A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明涉及一种基于Shovel的RabbitMQ队列水平扩展方法及系统,包括三个组件,分别是监控器组件、构建组件以及连接器组件。监控器组件可存储RabbitMQ地址信息,监控RabbitMQ队列信息和容量信息,并根据设置的容量阈值对构建组件发送构建Shovel连接和目的端交换器及目的队列的指令。构建组件可依据预设规则构建Shovel连接和目的端交换器及目的队列的指令,同时将生成的目的端交换器名称、队列名称、服务端地址发送给连接器,并存储至监控器组件。连接器组件接收构建组件发送的由构建组件自动构建的Shovel关联的目的端交换器和队列信息;并连接至队列进行生产和消费消息。本发明所述方法及系统使队列具备自动动态水平扩展且用户无感知的能力,提升了队列的吞吐能力和消息积压能力,且无需停止RabbitMQ服务和业务应用服务。

Description

一种基于Shovel的RabbitMQ队列水平扩展方法及系统
技术领域
本发明涉及消息队列水平扩展技术领域,尤其涉及一种基于Shovel的RabbitMQ队列水平扩展方法及系统。
背景技术
在RabbitMQ集群中使用Shovel插件处理集群数据迁移问题,主要是用来解决消息堆积问题并设计的一种数据迁移方法。使用HA和监控来弹性的自动的扩展RabbitMQ集群服务节点,主要为了解决RabbitMQ集群的弹性节点伸缩问题。但存在如下问题:通过使用Shovel插件处理集群数据迁移,主要是解决消息堆积问题,未实现队列的动态自动水平扩展,并且未能有效提高队列吞吐,无法自动均衡原队列和目标队列的容量。通过增加RabbiMQ的服务节点,可以增加RabbitMQ集群整体的容量,无法对原有的单队列实现水平扩展,也无法解决原有的单队列的消息堆积问题。
发明内容
为解决现有技术的不足,本发明提出一种基于Shovel的RabbitMQ队列水平扩展方法及系统,可基于Shovel的RabbitMQ方法使得队列具备自动动态水平扩展且用户无感知的能力,提升了队列的吞吐能力和消息积压能力,且无需停止RabbitMQ服务和业务应用服务。
为实现以上目的,本发明所采用的技术方案包括:
一种基于Shovel的RabbitMQ队列水平扩展方法,其特征在于,包括:
S1、客户端发送生产消息请求,连接器组件读取监控器组件的服务端信息,若服务端信息中未包含队列信息,则在空余容量最高的服务端中创建第一交换器和第一队列,将所述生产消息请求发送至第一队列中;
S2、监控器组件监控服务端中的队列,当队列容量达到所述服务端的队列容量阈值时,监控器组件将服务端信息和构建扩展队列的请求发送至构建组件;
S3、构建组件与shovel建立连接,并构建第二交换器和第二队列;
S4、若监控器组件监控到第二队列的容量达到所述服务端的队列容量阈值;则监控器组件发送命令至构建组件,构建组件断开第一队列与第二交换器的连接;创建第二队列与第一交换器的连接,使第二队列的数据转移至第一队列中;实现自动均衡队列容量;
S5、若监控器组件监控到第一队列以及第二队列的容量均达到所述服务端的队列容量阈值;则监控器发送命令至构建组件,构建组件断开第二队列与第一交换器的连接;在服务端列表中寻找空余容量最高的服务端,在空余容量最高的服务端上创建第二队列与第三交换器的连接,将数据转移至第三队列;连接器组件读取监控器组件存储的第三交换器的信息以及第三队列的信息;与第三交换器建立连接,连接器组件将接收的生产消息请求基于负载均衡策略发送至第一交换器、第二交换器以及第三交换器;使RabbitMQ队列具备自动动态水平扩展且用户无感知的能力。
进一步地,所述服务端信息包括服务端地址;所述连接信息包括:用户名和密码。
进一步地,所述第一交换器与所述第一队列通过第一路由关键字建立连接;所述第二交换器与所述第二队列通过第二路由关键字建立连接。
进一步地,所述on-confirm为shovel的生产者确认机制,在收到目的第二交换器的消息确认后向目的第二队列发送消息确认。
进一步地,所述步骤S1之前还包括步骤:
Sa、获取RabbitMQ的服务端信息及连接信息,将所述服务端信息及连接信息在监控器组件中进行注册;设置服务端的队列容量阈值。
7、如权利要求1所述的方法,其特征在于,所述步骤S3与步骤S4之间还包括步骤:
Sb、监控器存储第二交换器和第二队列的信息,将第一队列的消息转移至第二队列,使RabbitMQ队列动态扩容;
Sc、连接器组件读取第二交换器和第二队列的信息,与第二交换器建立连接,连接器组件将收到的生产消息请求基于负载均衡策略发送至第一交换器和第二交换器,提高RabbitMQ队列吞吐能力。
本发明还涉及一种基于Shovel的RabbitMQ队列水平扩展系统,其特征在于,包括三个组件分别是:监控器组件、构建组件以及连接器组件;
监控器组件,用于监控服务端中的队列,当队列容量达到所述服务端的队列容量阈值时,监控器组件将服务端信息和构建扩展队列的请求发送至构建组件;
构建组件,用于与shovel建立连接,并构建第二交换器和第二队列,将shovel的构建参数ack-mode设置为on-confirm;构建组件断开第一队列与第二交换器的连接;创建第二队列与第一交换器的连接,使第二队列的数据转移至第一队列中;实现自动均衡队列容量;构建组件断开第二队列与第一交换器的连接;在服务端列表中寻找空余容量最高的服务端,在空余容量最高的服务端上创建第二队列与第三交换器的连接,将数据转移至第三队列;
连接器组件,用于读取监控器组件的服务端信息,若服务端信息中未包含队列信息,则在空余容量最高的服务端中创建第一交换器和第一队列,将所述生产消息请求发送至第一队列中;连接器组件读取监控器组件存储的第三交换器的信息以及第三队列的信息;与第三交换器建立连接,连接器组件将接收的生产消息请求基于负载均衡策略发送至第一交换器、第二交换器以及第三交换器;使RabbitMQ队列具备自动动态水平扩展且用户无感知的能力。
本发明还涉及一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的基于Shovel的RabbitMQ队列水平扩展方法。
本发明还涉及一种电子设备,其特征在于,包括处理器和存储器;
所述存储器,用于存储监控器组件、构建组件以及连接器组件;
所述处理器,用于通过调用监控器组件、构建组件以及连接器组件,执行上述的基于Shovel的RabbitMQ队列水平扩展方法。
本发明还涉及一种计算机程序产品,包括计算机程序和/或指令,其特征在于,该计算机程序和/或指令被处理器执行时实现上述基于Shovel的RabbitMQ队列水平扩展方法的步骤。
本发明的有益效果为:
采用本发明所述一种基于Shovel的RabbitMQ队列水平扩展方法及系统,包括三个组件,分别是监控器组件、构建组件以及连接器组件。监控器组件可存储RabbitMQ地址信息,监控RabbitMQ队列信息和容量信息,并根据设置的容量阈值对构建组件发送构建Shovel连接和目的端交换器及目的队列的指令。构建组件可依据预设规则构建Shovel连接和目的端交换器及目的队列的指令,同时将生成的目的端交换器名称、队列名称、服务端地址发送给连接器,并存储至监控器组件。连接器组件可接收生产\消费客户端的生产消费请求;接收构建组件发送的由构建组件自动构建的Shovel关联的目的端交换器和队列信息;并连接至队列进行生产和消费消息。本发明一种基于Shovel的RabbitMQ队列水平扩展方法及系统可基于Shovel的RabbitMQ方法使得队列具备自动动态水平扩展且用户无感知的能力,提升了队列的吞吐能力和消息积压能力,且无需停止RabbitMQ服务和业务应用服务。
附图说明
图1为本发明一种基于Shovel的RabbitMQ队列水平扩展方法流程示意图。
图2为本发明一种基于Shovel的RabbitMQ队列水平扩展系统结构示意图。
具体实施方式
为了更清楚的理解本发明的内容,将结合附图和实施例详细说明。
本发明第一方面涉及一种基于Shovel的RabbitMQ队列水平扩展方法步骤流程如图1所示的方法,包括:
Shovel是RabbitMQ的一个插件,可以持续从一个服务端中的队列(源端)将数据转发至另一个服务端中的交换器(目的端),源端的队列和目的端的交换器可以位于同一个服务端上,也可以位于不同的服务端上。
QueueAgent是本发明设计的一个代理组件,它是位于生产\消费客户端(Produce\Consume client)和RabbitMQ之间的中间层。其内部包含三个子组件分别是:监控器、构建组件和连接器。
监控器组件负责存储RabbitMQ地址信息,监控RabbitMQ队列信息和容量信息,并根据设置的容量阈值对构建组件发送构建Shovel连接和目的端交换器及目的队列的指令。
构建组件负责依据预设规则构建Shovel连接和目的端交换器及目的队列的指令,同时将生成的目的端交换器名称、队列名称、服务端地址发送给连接器,并存储至监控器组件。
连接器组件负责:1、接收生产\消费客户端的生产消费请求;2、接收构建组件发送的由构建组件自动构建的Shovel关联的目的端交换器和队列信息;3、连接至队列进行生产和消费消息。
将所有可用的服务端地址及连接信息注册存储至监控器中保存为信息列表,服务端地址及连接信息包含服务端地址和连接所需的用户名和密码以及服务端队列阈值配置信息(如5GB)。
注册完毕后监控器会监控所有服务端节点上的队列信息,包括队列名称、容量信息等,监控器的监控能力主要通过封装RabbitMQ对外提供的队列接口实现,如/api/queues/vhost/name接口可获取队列的消息占用大小。
当生产\消费客户端发送生产消息请求时,连接器会读取到监控器里的服务端信息,如果所有服务端中均无此队列信息,则在空余容量最高的服务端中创建第一交换器和第一队列(交换器和队列通过第一路由关键字连接),并与之建立连接,开始将生产\消费客户端中发送的信息发送至第一队列中。
当监控到第一队列的容量达到预设的容量阈值(如5GB)时,会寻找目前服务端列表中空余容量最高的服务端,将服务端信息和构建扩展队列的请求发送给构建组件。
构建组件自动构建目的第二交换器和目的第二队列(交换器和队列通过第二路由关键字连接),构建组件的创建能力主要通过封装Shovel对外提供的动态创建接口,HTTP调用方式下:
curl-i-u root:abc321-XPUT-d
‘{“value”:{“src-uri”:”amqp://root:abc321@196.1.1.1:5672”,”src-queue”:”第一队列”,”dest-uri”:”amqp://root:abc321@196.1.1.2:5672”,”dest-queue”:”第二队列”,”ack-mode”:”on-confirm”}}’http://196.1.1.1:15672/api/parameters/shovel/%2f/hidden_shovel
其中ack-mode取值为on-confirm表示Shovel会使用生产者确认机制,即在收到目的端的消息确认之后再向源端发送消息确认,以此可保障RabbitMQ队列水平扩展的可靠性。
创建完毕后,监控器会存储第二交换器和第二队列信息,第一队列的消息会自动转移至第二队列,以此可使RabbitMQ队列动态扩容,增加消息积压能力。连接器在读取到存储的第二交换器和第二队列信息后会自动执行图2中的②操作,与第二交换器建立连接,将连接器收到的生产消息以负载均衡策略发送给第一交换器和第二交换器,生产/消费客户端也是通过连接器连接至各队列进行消费,这就提高了RabbitMQ队列吞吐能力。
当监控器监控到第二队列的容量达到预设的容量阈值(如5GB)时,而此时第一队列的容量已经低于容量阈值的一定百分比时(如30%,可预设),监控器会发送命令使构建组件断开原来的第一队列与第二交换器的Shovel连接,创建第二队列与与第一交换器的Shovel连接,使第二队列的数据可以转移至第一队列中,这样可以实现自动均衡队列容量。
当监控器监控到第一队列和第二队列均达到队列容量阈值时,监控器会发送命令使构建组件断开原来的第二队列与与第一交换器的Shovel连接,并在服务端列表中寻找当前空余容量最高的服务端创建第二队列与第三交换器的Shovel连接,将数据转移至第三队列,连接器在读取到存储的第三交换器和第三队列信息后,与第三交换器建立连接,将连接器收到的生产消息以负载均衡策略发送、第二交换器和第三交换器。以上使得RabbitMQ队列具备自动动态水平扩展且用户无感知的能力。
作为本申请的一个实施例,包括以下步骤:
1、使用RabbitMQ提供命令开启RabbitMQ的Shovel插件功能。
2、启动本发明设计的QueueAgent代理组件,它是位于生产\消费客户端(Produce\Consume client)和RabbitMQ之间的中间层。其内部包含三个子组件分别是:监控器、构建组件和连接器。监控器组件负责存储RabbitMQ地址信息,监控RabbitMQ队列信息和容量信息,并根据设置的容量阈值对构建组件发送构建Shovel连接和目的端交换器及目的队列的指令。构建组件负责依据预设规则构建Shovel连接和目的端交换器及目的队列的指令,同时将生成的目的端交换器名称、队列名称、服务端地址发送给连接器,并存储至监控器组件。连接器组件负责接收生产\消费客户端的生产消费请求、接收构建组件发送的由构建组件自动构建的Shovel关联的目的端交换器和队列信息、连接至队列进行生产和消费消息。
3、将所有可用的RabbitMQ的服务端信息包括地址和连接所需的用户名和密码在监控器中进行注册,同时设置各服务端的队列容量阈值(如5GB)
4、客户端发送消息生产消息请求,连接器会读取到监控器里的服务端信息,如果所有服务端中均无此队列信息,则在当前空余容量最高的服务端中创建第一交换器和第一队列(交换器和队列通过第一路由关键字连接),并与之建立连接,开始将生产\消费客户端中发送的信息发送至第一队列中,消费者同样通过连接器进行消息消费。
5、在客户端进行生产、消费消息的过程中,监控器会对服务端中的队列进行持续监控,达队列容量达到到阈值(如5GB)时,监控器会将服务端信息和构建构建扩展队列的请求发送给构建组件。构建组件则会根据信息自动建立shovel连接,并建立目的第二交换器和目的第二队列(交换器和队列通过第二路由关键字连接),shovel连接的构建参数中的ack-mode参数取值为on-confirm表示Shovel会使用生产者确认机制,即在收到目的端的消息确认之后再向源端发送消息确认,以此可保障RabbitMQ队列水平扩展的高可靠性。
6、创建完毕后,监控器会存储第二交换器和第二队列信息,第一队列的消息会自动转移至第二队列,以此可使RabbitMQ队列动态扩容,增加消息积压能力。连接器在读取到存储的第二交换器和第二队列信息后会自动与第二交换器建立连接,将连接器收到的生产消息以负载均衡策略发送给第一交换器和第二交换器,这就提高了RabbitMQ队列吞吐能力。
7、当监控器监控到第二队列的容量达到预设的容量阈值(如5GB)时,而此时第一队列的容量已经低于容量阈值的一定百分比时(如30%,可预设),监控器会发送命令使构建组件会断开原来的第一队列与第二交换器的Shovel连接,并发送命令给构建组件,构建组件会创建第二队列与与第一交换器的Shovel连接,使第二队列的数据可以转移至第一队列中,这样可以实现自动均衡队列容量。
8、当监控器监控到第一队列和第二队列均达到队列容量阈值时,监控器会发送命令使构建组件会断开原来的第二队列与与第一交换器的Shovel连接,并在服务端列表中寻找当前空余容量最高的服务端并在上面创建第二队列与第三交换器的Shovel连接,将数据转移至第三队列,连接器在读取到监控器存储的第三交换器和第三队列信息后同样会自动与第三交换器建立连接,将连接器收到的生产消息以负载均衡策略发送给第一交换器、第二交换器和第三交换器。以上使得RabbitMQ队列具备自动动态水平扩展且用户无感知的能力。
本发明另一方面还涉及一种基于Shovel的RabbitMQ队列水平扩展系统,其结构如图2所示,包括:
包括三个组件分别是:监控器组件、构建组件以及连接器组件;
监控器组件,用于监控服务端中的队列,当队列容量达到所述服务端的队列容量阈值时,监控器组件将服务端信息和构建扩展队列的请求发送至构建组件;
构建组件,用于与shovel建立连接,并构建第二交换器和第二队列,将shovel的构建参数ack-mode设置为on-confirm;构建组件断开第一队列与第二交换器的连接;创建第二队列与第一交换器的连接,使第二队列的数据转移至第一队列中;实现自动均衡队列容量;构建组件断开第二队列与第一交换器的连接;在服务端列表中寻找空余容量最高的服务端,在空余容量最高的服务端上创建第二队列与第三交换器的连接,将数据转移至第三队列;
连接器组件,用于读取监控器组件的服务端信息,若服务端信息中未包含队列信息,则在空余容量最高的服务端中创建第一交换器和第一队列,将所述生产消息请求发送至第一队列中;连接器组件读取监控器组件存储的第三交换器的信息以及第三队列的信息;与第三交换器建立连接,连接器组件将接收的生产消息请求基于负载均衡策略发送至第一交换器、第二交换器以及第三交换器;使RabbitMQ队列具备自动动态水平扩展且用户无感知的能力。
通过使用该系统,能够执行上述的运算处理方法并实现对应的技术效果。
本发明的实施例还提供能够实现上述实施例中的方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的方法的全部步骤。
本发明的实施例还提供一种用于执行上述方法的电子设备,作为该方法的实现装置,所述电子设备至少具备有处理器和存储器,特别是该存储器上存储有执行方法所需的数据和相关的计算机程序,例如监控器组件、构建组件以及连接器组件等,并通过由处理器调用存储器中的数据、程序执行实现方法的全部步骤,并获得对应的技术效果。
优选的,该电子设备可以包含有总线架构,总线可以包括任意数量的互联的总线和桥,总线将包括由一个或多个处理器和存储器的各种电路链接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和接收器和发送器之间提供接口。接收器和发送器可以是同一个元件,即收发机,提供用于在传输介质上与各种其他系统通信的单元。处理器负责管理总线和通常的处理,而存储器可以被用于存储处理器在执行操作时所使用的数据。
额外的,所述电子设备还可以进一步包括通信模块、输入单元、音频处理器、显示器、电源等部件。其所采用的处理器(或称为控制器、操作控件)可以包括微处理器或其他处理器装置和/或逻辑装置,该处理器接收输入并控制电子设备的各个部件的操作;存储器可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种,可储存上述有关的数据信息,此外还可存储执行有关信息的程序,并且处理器可执行该存储器存储的该程序,以实现信息存储或处理等;输入单元用于向处理器提供输入,例如可以为按键或触摸输入装置;电源用于向电子设备提供电力;显示器用于进行图像和文字等显示对象的显示,例如可为LCD显示器。通信模块即为经由天线发送和接收信号的发送机/接收机。通信模块(发送机/接收机)耦合到处理器,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)还经由音频处理器耦合到扬声器和麦克风,以经由扬声器提供音频输出,并接收来自麦克风的音频输入,从而实现通常的电信功能。音频处理器可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器还耦合到中央处理器,从而使得可以通过麦克风能够在本机上录音,且使得可以通过扬声器来播放本机上存储的声音。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的系统。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令系统的制造品,该指令系统实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
以上所述仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换等都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

Claims (10)

1.一种基于Shovel的RabbitMQ队列水平扩展方法,其特征在于,包括:
S1、客户端发送生产消息请求,连接器组件读取监控器组件的服务端信息,若服务端信息中未包含队列信息,则在空余容量最高的服务端中创建第一交换器和第一队列,将所述生产消息请求发送至第一队列中;
S2、监控器组件监控服务端中的队列,当队列容量达到所述服务端的队列容量阈值时,监控器组件将服务端信息和构建扩展队列的请求发送至构建组件;
S3、构建组件与shovel建立连接,并构建第二交换器和第二队列;
S4、若监控器组件监控到第二队列的容量达到所述服务端的队列容量阈值;则监控器组件发送命令至构建组件,构建组件断开第一队列与第二交换器的连接;创建第二队列与第一交换器的连接,使第二队列的数据转移至第一队列中;
S5、若监控器组件监控到第一队列以及第二队列的容量均达到所述服务端的队列容量阈值;则监控器发送命令至构建组件,构建组件断开第二队列与第一交换器的连接;在服务端列表中寻找空余容量最高的服务端,在空余容量最高的服务端上创建第二队列与第三交换器的连接,将数据转移至第三队列;连接器组件读取监控器组件存储的第三交换器的信息以及第三队列的信息;与第三交换器建立连接,连接器组件将接收的生产消息请求基于负载均衡策略发送至第一交换器、第二交换器以及第三交换器。
2.如权利要求1所述的方法,其特征在于,所述服务端信息包括服务端地址;所述连接信息包括:用户名和密码。
3.如权利要求1所述的方法,其特征在于,所述第一交换器与所述第一队列通过第一路由关键字建立连接;所述第二交换器与所述第二队列通过第二路由关键字建立连接。
4.如权利要求1所述的方法,其特征在于,所述步骤S3还包括,在收到目的第二交换器的消息确认后向目的第二队列发送消息确认。
5.如权利要求1所述的方法,其特征在于,所述步骤S1之前还包括步骤:
Sa、获取RabbitMQ的服务端信息及连接信息,将所述服务端信息及连接信息在监控器组件中进行注册;设置服务端的队列容量阈值。
6.如权利要求1所述的方法,其特征在于,所述步骤S3与步骤S4之间还包括步骤:
Sb、监控器存储第二交换器和第二队列的信息,将第一队列的消息转移至第二队列;
Sc、连接器组件读取第二交换器和第二队列的信息,与第二交换器建立连接,连接器组件将收到的生产消息请求基于负载均衡策略发送至第一交换器和第二交换器。
7.一种基于Shovel的RabbitMQ队列水平扩展系统,其特征在于,包括三个组件分别是:监控器组件、构建组件以及连接器组件;
监控器组件,用于监控服务端中的队列,当队列容量达到所述服务端的队列容量阈值时,监控器组件将服务端信息和构建扩展队列的请求发送至构建组件;
构建组件,用于与shovel建立连接,并构建第二交换器和第二队列;构建组件断开第一队列与第二交换器的连接;创建第二队列与第一交换器的连接,使第二队列的数据转移至第一队列中;实现自动均衡队列容量;构建组件断开第二队列与第一交换器的连接;在服务端列表中寻找空余容量最高的服务端,在空余容量最高的服务端上创建第二队列与第三交换器的连接,将数据转移至第三队列;
连接器组件,用于读取监控器组件的服务端信息,若服务端信息中未包含队列信息,则在空余容量最高的服务端中创建第一交换器和第一队列,将所述生产消息请求发送至第一队列中;连接器组件读取监控器组件存储的第三交换器的信息以及第三队列的信息;与第三交换器建立连接,连接器组件将接收的生产消息请求基于负载均衡策略发送至第一交换器、第二交换器以及第三交换器。
8.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的基于Shovel的RabbitMQ队列水平扩展方法。
9.一种电子设备,其特征在于,包括处理器和存储器;
所述存储器,用于存储监控器组件、构建组件以及连接器组件;
所述处理器,用于通过调用监控器组件、构建组件以及连接器组件,执行权利要求1至6中任一项所述的基于Shovel的RabbitMQ队列水平扩展方法。
10.一种计算机程序产品,包括计算机程序和/或指令,其特征在于,该计算机程序和/或指令被处理器执行时实现权利要求1至6中任一项所述基于Shovel的RabbitMQ队列水平扩展方法的步骤。
CN202310789288.4A 2023-06-30 2023-06-30 一种基于Shovel的RabbitMQ队列水平扩展方法及系统 Pending CN116866279A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310789288.4A CN116866279A (zh) 2023-06-30 2023-06-30 一种基于Shovel的RabbitMQ队列水平扩展方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310789288.4A CN116866279A (zh) 2023-06-30 2023-06-30 一种基于Shovel的RabbitMQ队列水平扩展方法及系统

Publications (1)

Publication Number Publication Date
CN116866279A true CN116866279A (zh) 2023-10-10

Family

ID=88224446

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310789288.4A Pending CN116866279A (zh) 2023-06-30 2023-06-30 一种基于Shovel的RabbitMQ队列水平扩展方法及系统

Country Status (1)

Country Link
CN (1) CN116866279A (zh)

Similar Documents

Publication Publication Date Title
US8903972B2 (en) Method and apparatus for sharing contents using information of group change in content oriented network environment
CN102291465B (zh) 负载均衡方法、装置和系统
CN109995839B (zh) 一种负载均衡方法、系统及负载均衡器
CN111338806B (zh) 一种业务控制方法及装置
KR20150111952A (ko) 계층적 데이터 구조의 노드 상에서 재귀적 이벤트 리스너를 사용하기 위한 방법 및 시스템
EP2597818A1 (en) Cluster management system and method
CN110740162A (zh) 通信链路建立方法、装置、电子设备及介质
CN102137104B (zh) 一种传输控制协议tcp长连接接入控制方法和装置
CN111510493B (zh) 分布式数据传输方法及装置
CN114025002A (zh) 一种基于mqtt信息传输的方法、系统及通信设备
CN113612825B (zh) 物联网消息中间件服务器集群扩展方法及系统
WO2016095510A1 (zh) 一种路径选择方法、设备及系统
CN112714146B (zh) 一种资源调度方法、装置、设备及计算机可读存储介质
CN105451367A (zh) 一种无线网络连接方法、设备及系统
CN109831467B (zh) 数据传输方法、设备及系统
CN116866279A (zh) 一种基于Shovel的RabbitMQ队列水平扩展方法及系统
CN114697339A (zh) 集中式架构下的负载均衡方法及装置
CN113612811B (zh) 一种在多通道中客户端挂载的方法、系统、设备及介质
CN114422427A (zh) 一种流量均衡方法、装置、电子设备和存储介质
CN114286039A (zh) 一种音视频通话方法及系统
CN110198269B (zh) 分布式机群的路由同步系统、方法及相关装置
CN110474781B (zh) 一种组播数据转发的方法及装置
CN111083182B (zh) 分布式物联网设备管理方法及装置
CN108848156B (zh) 接入网关处理方法、装置及存储介质
US20200341968A1 (en) Differential Update of Local Cache from Central Database

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination