rabbitMQ 队列过多导致性能问题解决思路

面对RabbitMQ因过多队列导致的性能问题,本文提出了两种解决方案。一种是通过messageheader关键字段实现多类型消息在一个队列中处理,消费者根据字段进行逻辑分支。另一种是借鉴Netty的selector设计,使用一个listenerendpoint监听队列,再由独立线程池按关心字段分类处理,提高扩展性和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rabbitMQ 队列过多导致性能问题解决思路

最近在使用 事件驱动(eventdrive)的方式架构一个新的实验项目,发现在这样的方式下逻辑稍微复杂会需要创建不少的 queue,几乎是每一个消息都需要新增一个queue,AMQP协议本身 是exchange对应queue,消费者消费queue,而queue的数量过多会直接影响 rabbit 本身的性能,rabbit本身不能帮我们解决这样的问题,因此我们需要自己从设计方面来解决这个问题。

第一种方式:
一个队列接受多种类似的消息,message header存放定的关键字段,监听方通过message header 关键字段进行不同的逻辑分支处理。

第二种方式:
这种方式其实还是第一种的设计优化后的处理方式:我们都知道netty 的性能非常好,这与它的设计模式分不开:selector轮询和reactor的设计模式,这里不详细展开,读者可自行查阅相关问题。
这里我们可以借鉴netty的设计,把一个 listener endpoint 当做一个selector,listener endpoint 只负责监听队列的消息,然后将消息交由单独的线程根据关心字段信息处理分类,然后再交由对应的Handel线程池处理。这样的处理方式相对第一种会有更好的扩展性和直观的性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值