rabbitmq能处理多大的数据

rabbitmq能处理多大的数据,第1张

rabbitmq 单条消息最大支持支持2G,因此支持大于4M的文件传输。

并发请求增大,传输文件过大的时候,会出现远程MQ服务中断异常,这时也会导致消费者(我们的业务处理端出现异常)。

并发量不大的业务场景,可以传输4M以上文件,发送前不做文件大小校验处理,并发量大的情况下,不建议用队列传输发送超过4M以上文件。

Linux、1G、1核、1M带宽

处理器名称: Intel Core i7

处理器速度: 22 GHz

处理器数目: 1

核总数: 4

内存: 16 GB

事务提交的方式下,每次发送1kb的内容

现象:开启一个线程时,income:40 50/s,开启6个线程时,income:240 250/s

结论:开启事务的提交方式,压力在生产者端

去掉事务后,每次发送1kb的内容

现象:开启一个线程时,income:500 800/s,开启6个线程时,income:400 700/s

结论:无事务时,效率是事务提交方式的10+倍。

事务提交的方式下,每次发送内容为: 这是一个生产的消息QAQ

现象:开启一个线程时,income:20 50/s,开启6个线程时,income:80 230/s

结论:无事务时,压力在生产者端

去掉事务后,每次发送内容为: 这是一个生产的消息QAQ

现象:开启一个线程时,income:3000 5000/s,开启6个线程时,income:3000 9000/s

结论:无事务时,效率大大提升,远远的超越事务方式,1000倍有余

推荐文章: RabbitMQ不同Confirm模式下的性能对比

一、消费端限流

1什么是消费端的限流

假设一个场景,首先,Rabbitmq服务器有上万条未处理的消息,我们随便打开一个消费者客户端,就会出现:巨大的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多数据!

2RabbitMQ提供了一种Qos(服务质量控制)功能,即在非自动确认消息的前提下,如果一定数目的消息(通过基于consume或者channel设置Qos的值)未被确认前,不进行消费新的消息。

void BasicQos(uint prefetchSize,ushort prefetchCount,bool global);

prefetchCount:会告诉RabbitMQ不要同时给一个消费者推送多于N个消息,即一旦有N个消息还没有ACK,则该comsumer将block掉,直到有消息ack

global:true/false 是否将上面的设置应用于channel,就是限制是channel级别还是consumer级别

二、消费端的手动ACK和NACK

消费端进行消费的时候,如果由于业务异常我们可以进行日志的记录,然后进行补偿!

如果由于服务器宕机等严重问题,那我们就需要手动进行ACK保障消费端消费成功!

三、消费端的重回队列

1消费端重回队列是为了对没有处理成功的消息,把消息重新会递给Broker

2一般我们在实际应用中,都会关闭重回队列,也就是设置为false

四、TTL队列/消息

1TTL

TTL:time  to live 的缩写,也就是生存时间

RabbitMQ支持消息的过期时间,在消息发送时可以进行指定

RabbitMQ支持队列的过去时间,从消息入队列开始计算,只要超过了队列的超时时间配置,那么消息会自动删除

2DLX

DLX:Dead-Letter-Exchange,死信队列

利用DLX,当消息在一个队列中变成死信(dead message)之后,它能被重新publish到另一个Exchange,这个Exchange就是DLX

DLX也是一个正常的Exchange,和一般的Exchange没有区别,它能在任何的队列上被指定,实际上就是设置某个队列的属性

当一个队列中有死信时,RabbitMQ就会自动的将这个消息重新发布到设置的Exchange上去,进而被路由到另一个队列

可以监听DLX这个队列中的消息做相应的处理,这个特性可以弥补RabbitMQ30以前支持的immediate参数的功能

3消息变成死信的情况

消息被拒绝(basicreject/basicnack),并且requeue=false

消息TTL过期

队列达到最大长度

4DLX死信队列设置

首先需要设置死信队列的exchange(dlxexchange)、queue(dlxqueue)和路由规则(RoutingKey:#),然后进行绑定

然后进行正常交换机、队列、绑定,只不过我们需要在队列上加上一个参数即可:argumentsput("x-dead-letter-exchange","dlxexchange");

以上就是关于rabbitmq能处理多大的数据全部的内容,包括:rabbitmq能处理多大的数据、RabbitMQ 性能、压力测试数据、RabbitMQ高级特性(2)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/9605584.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存