rabbitmq消息保证幂等的消息设计

      在我们的rabbitmq将消息发送给消费者的过程中,很容易出现,消息被消费者消费了,但是当消费者在返回ack之后,rabbitmq没有收到的情况,比如消费者刚好消费之后,在返回ack之前挂掉了,或者返回ack之前,网络坏了。那么,下次启动起来或者网络好的情况下,有可能再一次收到该条消息。

       解决方案

      所以需要去重,保证接口的幂等,需要给每一次的消息带一个全局唯一ID,这样消费者每次接受到消息了之后,可以判断这个消息是否已经消费过,如果消费过就可以丢掉这个消息不予处理,消费者就可以保证幂等了。

建议的信息格式:

{"messageId":消息 id,全局惟一,用于去重

"sendAt":消息发布时间,unix 时间戳

"data":{} //要发送的数据 

} 

全局唯一id可以根据业务id(当然这个id是数据库主键来确保唯一)来,也可以根据uuid来产生。

转载于:https://my.oschina.net/u/1540325/blog/1537228

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值