一种RabbitMQ队列水平扩展方法及系统与流程

文档序号:33725651发布日期:2023-04-06 00:25阅读:62来源:国知局
一种RabbitMQ队列水平扩展方法及系统与流程

本发明涉及计算机,尤其涉及一种rabbitmq队列水平扩展方法及系统。


背景技术:

1、在互联网架构中,消息中间件是一种常用的流量消峰,应用解耦和异步通讯的服务,消息中间件作为中间服务,使消息传输系统的上下游进行解耦,互不依赖。

2、rabbitmq是一个基于amqp(高级消息队列协议)的消息系统,是当前最主流的消息中间件之一。rabbitmq生产和发送消息均通过制定队列名称实现,当一个队列满足不了发送消息吞吐量的需求时,需要新增队列来实现消息的分流。然而,新增队列时,需要将队列名称同步通知生产者和消费者,生产者和消费者修改对应的生产和消费代码后才能实现消息分流。这种增加队列的方式增加了用户使用rabbitmq的复杂度,无法做到动态新增队列和使用户无感知。

3、目前rabbitmq的水平扩展主要是对服务节点的扩展,通过监控服务节点的阈值来实现动态新增服务节点,这种方式可以实现rabbitmq集群的性能扩展,但对于单个队列来讲,并不能提升单个队列的吞吐量或无法解决单个队列的消息堆积问题。对于rabbitmq队列的扩展,目前主要是使用shovel插件,将队列里的消息转移到另一个队列,这种方式可以适当提高队列的吞吐量,但该方式主要是解决队列消息堆积问题,不能从根本上解决队列高吞吐量需求的问题。


技术实现思路

1、为解决现有技术的不足,本发明提出一种rabbitmq队列水平扩展方法及系统,通过设计一种动态新增队列的方法,使类型为direct的交换器所关联的队列可以进行水平扩展,实现rabbitmq根据队列的消息积压动态新增队列,且使生产者和消费者使用时无感知。

2、为实现以上目的,本发明所采用的技术方案包括:

3、一种rabbitmq队列水平扩展方法,包括:

4、封装amqp协议,将amqp协议中的生产者和消费者进行封装;

5、所述生产者包括生产者软件开发工具包sdk接口,所述消费者包括消费者软件开发工具包sdk接口;

6、所述生产者生产消息,创建分片队列,设置消息堆积阈值,当第一消息队列的消息数量大于所述消息堆积阈值时,创建第二消息队列;

7、所述生产者调用生产者软件开发工具包sdk接口,获取所有消息队列,并发送消息;

8、所述消费者调用消费者软件开发工具包sdk接口,获取所有消息队列,并消费消息。

9、进一步地,所述生产者调用生产者软件开发工具包sdk接口,获取所有消息队列,并发送消息包括:

10、选择消息积压最小的消息队列发送消息;

11、或者设置第一定时轮询任务,定时轮询所述消息队列发送消息。

12、进一步地,所述消费者调用消费者软件开发工具包sdk接口,获取所有消息队列,并消费消息包括:

13、设置第二定时轮询任务,轮流监听所述消息队列;

14、或者使用线程池读取消息,将所述消息发布到对应的分片队列,所述消费者消费所述分片队列上的消息。

15、本发明还涉及一种rabbitmq队列水平扩展系统,包括:

16、封装模块,用于封装amqp协议,将amqp协议中的生产者和消费者进行封装;

17、生产模块,用于生产者生产消息,创建分片队列,设置消息堆积阈值,当第一消息队列的消息数量大于所述消息堆积阈值时,创建第二消息队列;

18、发送模块,用于生产者调用生产者软件开发工具包sdk接口,获取所有消息队列,并发送消息;

19、消费模块,用于消费者调用消费者软件开发工具包sdk接口,获取所有消息队列,并消费消息。

20、本发明还涉及一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。

21、本发明还涉及一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器,用于执行存储器中存储的计算机程序,执行上述的方法。

22、本发明的有益效果为:

23、本发明通过设计一种动态新增队列的方法,使类型为direct的交换器所关联的队列可以进行水平扩展,实现rabbitmq根据队列的消息积压动态新增队列,且使生产者和消费者使用时无感知,同时提高了生产者吞吐量。



技术特征:

1.一种rabbitmq队列水平扩展方法,其特征在于,包括:

2.如权利要求1所述的方法,其特征在于,所述生产者调用生产者软件开发工具包sdk接口,获取所有消息队列,并发送消息包括:

3.如权利要求2所述的方法,其特征在于,所述消费者调用消费者软件开发工具包sdk接口,获取所有消息队列,并消费消息包括:

4.一种rabbitmq队列水平扩展系统,其特征在于,包括:

5.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至3中任一项所述的方法。

6.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器,用于执行存储器中存储的计算机程序,执行权利要求1至3中任一项所述的方法。


技术总结
本发明涉及一种RabbitMQ队列水平扩展方法及系统,包括封装AMQP协议,将AMQP协议中的生产者和消费者进行封装;所述生产者包括生产者软件开发工具包SDK接口,所述消费者包括消费者软件开发工具包SDK接口;所述生产者生产消息,创建分片队列,设置消息堆积阈值,当第一消息队列的消息数量大于所述消息堆积阈值时,创建第二消息队列;所述生产者调用生产者软件开发工具包SDK接口,获取所有消息队列,并发送消息;所述消费者调用消费者软件开发工具包SDK接口,获取所有消息队列,并消费消息。本发明可以使RabbitMQ队列可动态扩展,且对使用者无感知,同时可以提高生产者吞吐量。

技术研发人员:多朵
受保护的技术使用者:中信银行股份有限公司
技术研发日:
技术公布日:2024/1/12
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1