欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 23.rabbitmq幂等性

23.rabbitmq幂等性

2025/4/26 23:32:34 来源:https://blog.csdn.net/qq_36352889/article/details/140755587  浏览:    关键词:23.rabbitmq幂等性

介绍

用户对同一操作发起的一次请求或多次请求的结果是一致的。

方式用户重复提交。

也就是消息被重复消费了。

消费者在消费mq中的消息时,mq已经把消息发送给消费者,消费者在给mq返回ack时网络中断,故mq未收到确认消息,该条消息会重新发给其他消费者,或者在网络重连后再次发送给该消费者,但实际上该消费者已经成功消费了该条消息,造成消费者消费了重复的消息。

解决思路

一般使用全局id,或者写一个唯一标识比如:时间戳, UUID, 按自己的规则生成一个全局唯一id。每次消费消息时用该id判断该消息是否被消费过。

消费端的幂等性保证

在海量订单生成的业务高峰期,生产端有可能会重复发生了消息,这时候消费端就要实现幂等性,这就意味着我们的消息永远不会被重复消费多次,即使我们收到了一样的消息。

业界主流的幂等性操作有两种:

1.唯一Id+指纹码机制。

指纹码:我们的一些规则或者时间戳加别的服务给到的唯一信息码,它并不一定是我们系统生成的,基本是我们的业务规则拼接而来,但是一定保证唯一性,然后利用查询语句进行判断这个id是否存在于数据库中,优点就是实现简单的一个拼接,然后查询判断是否重复。缺点是在高并发时,如果是单个数据库就会有写入性能瓶颈,当然可以采用分库分表提升性能,但也不是最佳的推荐方式。

2.利用redis的原子性去实现。

利用redis的setnx命令,天然具有幂等性,从而实现不重复消费。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词