RabbitMQ高级特性-消费端流控服务和ACK重回队列

一:消费端限流【流控】

1.1 什么是消费端的限流

假设一个场景,首先,Rabbitmq服务器有上万条未处理的消息,我们随便打开一个消费者客户端,就会出现:

巨大的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多数据!

 

1.2 如何做流控

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

 

1.3参数解释

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

prefetchSize:0,与报文的大小有关

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

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

注意:

二:消费端-ACK与重回队列【生产上不使用重回队列】

代码测试,包名:com.bfxy.rabbitmq.api.requeue

 

2.1 消费端的手动分ACK和NACK两种【工作中使用收到ACK和NACK】

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

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

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值