1. 🔍消息队列如何限流?
消息队列限流是指在服务器面临巨额流量时,为了进行自保,进行的一种救急措施。
因为巨大的流量代表着非常多的消息,这些消息如果多到服务器处理不过来就会造成服务器瘫痪,影响用户体验,造成不良影响。
所以要进行一次降级操作,把处理不了的流量隔绝在系统之外,避免它们打垮系统。
基本上任何一个消息队列都有限流的功能,今天我们就来看看在RabbitMQ
之中进行限流具体应该怎么做?
RabbitMQ提供了一种QOS
(服务质量保证)功能,即在非自动确认消息的前提下,如果一定数目的消息还未被消费确认,则不进行新消息的消费。
spring:
rabbitmq:
addresses: 127.0.0.1
host: 5672
username: guest
password: guest
virtual-host: /
手动确认消息
listener:
simple:
acknowledge-mode: manual
prefetch: 2
我们只需要配置一下rabbitmq.listener.simple
下的prefetch
属性即可,为了演示方便我这里配置为两条,语义即为:如果队列中有两条以上未签收的消息,则不进行新的消息消费。
我往我的队列中发送三条信息,并不进行