rabbitmq高级特性 消费端限流
作者:互联网
概念
rabbitmq可以做到限流功能 保证程序运行的稳定性 比如限制每秒最大值为1000条数据 那么假设有5000条数据打入
就会每秒执行1000条数据,保证程序的稳定性
简单使用
首先必须是手动确认模式
通过设置prefetch
属性 可以设置消费者一次拉取多少条信息 在确认完毕后才能继续处理下一批
这里设置prefetch为1
spring:
rabbitmq:
host: 192.168.198.129
port: 5672
username: admin
password: admin
virtual-host: /
publisher-confirm-type: correlated
publisher-returns: true
listener:
direct:
acknowledge-mode: manual
prefetch: 1
simple:
acknowledge-mode: manual
prefetch: 1
先发送10条信息在队列等待
@Test void send(){
for (int i = 0; i < 10; i++) {
rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME,"boot.haha","message: "+i);
}
}
编写监听者类 我们不写确认方法 即拿到信息后不确认 根据逻辑就会卡在那
@Component
public class RabbitMQListener {
@RabbitListener(queues = "boot_queue")
public void ListenerQueue(Message message, Channel channel){
System.out.println(new String(message.getBody()));
try {
//确认
//channel.basicAck(message.getMessageProperties().getDeliveryTag(),true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行程序观察可以看到信息被卡住了
通过prefetch属性可以设置消费者一次拉起消息的最大值 起到了限流的作用
标签:确认,特性,限流,rabbitmq,设置,message,prefetch 来源: https://www.cnblogs.com/OfflineBoy/p/15368866.html