RabbitMQ-业务的幂等性

这篇具有很好参考价值的文章主要介绍了RabbitMQ-业务的幂等性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、幂等性处理方式

1、使用唯一id

生产者和消费者都需要添加配置类:

    @Bean
    public MessageConverter jsonMessageConverter() {
        Jackson2JsonMessageConverter jackson2JsonMessageConverter = new Jackson2JsonMessageConverter();
        jackson2JsonMessageConverter.setCreateMessageIds(true);
        return jackson2JsonMessageConverter;
    }

消费者拿到id之后,保存到数据库,后续消费时,需要查数据库进行比较,因此这种方案的缺点就是有业务的入侵,对性有一定的影响。

2、业务的幂等性

(1)查询和删除操作本身就是幂等性操作。

(2)可以使用分布式锁,对单据id锁定,防止多次提交,但是需要设置过去时间,只是避免短期重复提交,后续单据可能退回。

3、案例优化

案例:订单支付完成之后需要修改订单状态,此时需要通过支付服务调用订单服务修改订单状态。

解决:可以在订单服务中增加一个对订单状态的判断,如果订单状态不为未支付,则不能改动订单的状态,大概逻辑如下:

  • 查询订单信息
  • 判断订单状态
  • 修改订单状态

这个案例比较特殊,是典型的比较交换逻辑,属于乐观锁,因此可以优化成为一个sql:

update order set oderStatus = 2 where id = ? and oderStatus = 1

当状态为1时才去修改为2,完美~文章来源地址https://www.toymoban.com/news/detail-810712.html

到了这里,关于RabbitMQ-业务的幂等性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RabbitMQ如何保证幂等性

    一、简介 幂等性是分布式中比较重要的一个概念,是指在多作业操作时候避免造成重复影响,其实就是保证同一个消息不被消费者重复消费两次,但是可能存在网络波动等问题,生产者无法接受消费者发送的ack信息,因此这条消息将会被重复发送给其他消费者进行消费,实际

    2024年02月15日
    浏览(34)
  • 【RabbitMQ教程】第八章 —— RabbitMQ - 幂等性、优先级、惰性

                                                                       💧 【 R a b b i t M Q 教程】第八章—— R a b b i t M Q − 幂等性、优先级、惰性 color{#FF1493}{【RabbitMQ教程】第八章 —— RabbitMQ - 幂等性、优先级、惰性} 【 R abbi tMQ 教程】第八章

    2024年02月09日
    浏览(29)
  • 【分布式】: 幂等性和实现方式

    幂等(idempotent、idempotence)是一个数学与计算机学概念, 常见于抽象代数中。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统

    2024年02月08日
    浏览(32)
  • 分布式接口幂等性设计实现

    面对分布式架构和微服务复杂的系统架构和网络超时服务器异常等带来的系统稳定性问题,分布式接口的幂等性设计显得尤为重要。本文简要介绍了几种分布式接口幂等性设计实现,包括Token去重机制、乐观锁机制、数据库主键和状态机实现等,以加深理解。 1、分布式接口幂

    2024年02月05日
    浏览(29)
  • rabbitmq+springboot实现幂等性操作

    文章目录 1.场景描述 1.1 场景1 1.2 场景2 2.原理 3.实战开发 3.1 建表 3.2 集成mybatis-plus 3.3 集成RabbitMq 3.3.1 安装mq 3.3.2 springBoot集成mq 3.4 具体实现 3.4.1 mq配置类 3.4.2 生产者 3.4.3 消费者 消息中间件是分布式系统常用的组件,无论是异步化、解耦、削峰等都有广泛的应用价值。我们

    2024年02月10日
    浏览(31)
  • 如何保证接口的幂等性?

    作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功、源码解析、科技故事、项目实战、面试八股等更多硬核文章,首发于公众号「小牛呼噜噜」 目录 什么是幂等性? 为什么需要保证幂等性? 接口幂等设计和防止重复提交可以等同吗? 常用保证幂等性的措施 先select再inse

    2024年02月08日
    浏览(28)
  • Springboot 定时任务,分布式下幂等性如何解决

    在分布式环境下,定时任务的幂等性问题需要考虑多个节点之间的数据一致性和事务处理。 一种解决方法是使用分布式锁来保证同一时间只有一个节点能够执行该任务。具体实现可以使用Redis或Zookeeper等分布式协调工具提供的分布式锁功能。 另一种解决方法是使用消息队列来

    2024年02月11日
    浏览(24)
  • 谈谈 Kafka 的幂等性 Producer

    使用消息队列,我们肯定希望不丢消息,也就是消息队列组件,需要保证消息的可靠交付。消息交付的可靠性保障,有以下三种承诺: 最多一次(at most once):消息可能会丢失,但绝不会被重复发送。 至少一次(at least once):消息不会丢失,但有可能被重复发送。 精确一次

    2024年02月14日
    浏览(26)
  • redis如何保证接口的幂等性

    背景 如何防止接口中同样的数据提交,以及如何保证消息不被重复消费,这些都是 shigen 在学习的过程中遇到的问题。今天,趁着在学习 redis 的间隙,我写了一篇文章进行简单的实现。 注意:仅使用于单机的场景,对于分布式、高并发场景,还是建议使用分布式锁。 首先我

    2024年02月09日
    浏览(31)
  • RabbitMq(七) -- 常见问题:幂等性问题(消息重复消费)、消息丢失

    用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。 举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常, 此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返

    2024年02月05日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包