RabbitMQ 公平分发 解决消费者宕机消息丢失问题

本文介绍了RabbitMQ如何通过公平分发策略解决消费者宕机导致的消息丢失问题。通过关闭自动应答、手动确认消息以及限制每次分发数量,确保处理能力强的消费者获取更多任务,同时在消费者宕机时,消息不会丢失。总结中提到,使用channel.basicQos(n)设置每次分发消息的数量,消费者处理并确认消息后,RabbitMQ才会继续发送,实现能者多劳的效果。

工作队列-公平分发
3.1模型
生产者将消息放入消息队列,有两个以上的消费者进行消费。
和轮训分发一样的是依旧拥有两个或两个以上的消费者,但是会根据消费者的处理消息能力分发任务
假设C1的处理能力强,那么C1将会处理更多的任务,而C2会处理更少的任务。
在这里插入图片描述
第一步:消费者关闭自动应答

channel.basicConsume(QUEUE_NAME,false ,consumer);

第二部:改成手动反馈处理完成的消息。即处理一次消息反馈一个回应

channel.basicAck(envelope.getDeliveryTag(),false);

第三部:限制每次发生数量,这样rabbitmq就不会一股脑的将数据全部分配好再发送了

channel.basicQos(1);

在消费者C1下添加以上代码

public class RecvC1 {
   
   
    private final static String QUEUE_NAME 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值