Rabbitmq direct 模式:保证一个队列只对应一个消费者 处理方案

问题描述:当消费者端在断网恢复时,在rabbitmq management后台发现,一个队列对应了两个消费者。当出现两个消费者时,生产者投递消息的消费情况为:第一个消息被断网前的消费者(即:老的消费者或者叫无效消费者)消费;第二个消息被断网后新建的消费者消费;即出现上述情况时,消费者端出现消息丢失情况。

解决方案: 

1、在消费者端与broker连接时,建立心跳或超时连接。即:当消费者连接超时或没有心跳时,断开连接;以下是:Rabbitmq-c客户端解决方法:

2、解决消息不丢失:

2.1、新建消费者和断网前的消费者同名(即:消费者的tag固定,不用随机值)。

2.2、消费者在消费消息时,要通过ack确认(即:消费者没有确认消息消费不返回ack);

申明:以上为个人分析总结;如有不对欢迎拍砖指正;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值