2016 - 2024

感恩一路有你

rabbitmq怎么解决重复消费的 rabbitmq持久化原理?

浏览量:3977 时间:2023-07-13 12:41:13 作者:采采

rabbitmq持久化原理?

rabbitmq不易脱妆化分为三个部分:交换器的持久化、队列的自然持久化和消息的持久度化。

队列不易脱妆化是定义在队列的durable参数来实现的,durable为true时,队列才会自然持久化。

消息不持久化这个可以实际消息属性deliveryMode来设置中是否自然持久化,在发送消息时通过basicPublish的参数传入。

同队列一般,交换器也需要在定义时设置里持久化标识,不然在Broker重启后后将全部丢失。

JAVA面试如何保证消息不被重复消费?如何保证消息消费的幂等性?

你的问题都在问一个核心思想:网络带宽是不比较可靠的。

如果不是你知道这一点,就估计相信没能绝对的保证消息不再重复一遍消费。即重复的消息和调用无可避免。

既然无法避免,那么就和现实要做的事情是有有矛盾。实际情况是,用户只不过自己手机信号不好支付三次我失败了后,是不如果能扣两次费用的。

怎莫解决这个矛盾呢?很简单:“很痛快相信,不能容忍一次”。

具体来说,你在实现方法消息消费程序时,将有时候动态创建都拿出来“再重复一遍全局函数”来处理。重复的动态链接库一定会都回最终。要能够做到这一点,你需要精心设计一个“仅有id”,来保证它的含义和你做的业务含义是极为相似的。即“同一件事的id一定同一;又不是同一件事id一定会有所不同”。

这样,是对同一个id,无论是内部函数多少次,你的应答大都已经不同(没有必要时是可以告知他也过一次了),这应该是幂等的内涵。

消息 消费 持久化 队列 交换器

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。