软件交付问题之为什么在监听MQ消息后去反查单据有时能查到有时查不到,如何解决

简介: 软件交付问题之为什么在监听MQ消息后去反查单据有时能查到有时查不到,如何解决

问题一:在更新多个单据时,为什么需要开启事务?


在更新多个单据时,为什么需要开启事务?


参考回答:

在更新多个单据时,务必开启事务,以确保数据的一致性。事务能够确保一系列数据库操作的原子性,即要么全部成功,要么全部失败。如果不使用事务,当其中一个更新操作失败时,其他已经成功的更新可能会导致数据不一致。通过开启事务,可以确保在出现任何错误时所有更新都被回滚,从而保持数据的完整性。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/621607



问题二:为什么不建议通过注解的方式开启事务?


为什么不建议通过注解的方式开启事务?


参考回答:

因为通过代码显式地开启和提交/回滚事务更加直观和可控。注解方式虽然简洁,但可能隐藏了事务的边界和控制逻辑,使得在复杂业务场景下难以追踪和理解事务的具体行为。而通过代码方式,开发人员可以清晰地看到事务的开始、提交和回滚过程,更容易进行调试和错误排查。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/621608



问题三:为什么事务中不应包含远程调用?


为什么事务中不应包含远程调用?


参考回答:

首先,远程调用的响应时间(RT)可能过长,导致事务长时间无法提交,进而长时间占用数据库连接资源。其次,如果本地事务回滚,但远程调用已经成功执行,那么跨系统的数据不一致性就可能产生。这种不一致性很难追踪和修复,因此最好在事务中避免包含远程调用。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/621609



问题四:为什么在监听MQ消息后去反查单据有时能查到有时查不到?


为什么在监听MQ消息后去反查单据有时能查到有时查不到?


参考回答:

在监听MQ消息后去反查单据时,有时能查到有时查不到的问题可能是由于上游的MQ消息是在事务中发送的,而单据是在同一个事务中创建的。当MQ消息投递后,如果事务已经提交,那么单据就可以被查到;但如果MQ消息投递时事务尚未提交,那么此时是查不到单据的。因此,为了确保数据的可见性和一致性,需要谨慎处理涉及事务和消息队列的交互逻辑。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/621610



问题五:什么是幂等重试?为什么它在分布式系统中非常关键?


什么是幂等重试?为什么它在分布式系统中非常关键?


参考回答:

幂等重试是指在执行远程调用或本地业务逻辑时,无论执行多少次,结果都是相同的,并且不会因为多次执行而产生副作用。在分布式系统中,幂等重试非常关键,因为系统可能会遇到宕机、网络问题等导致逻辑执行中断,当系统恢复时,需要能够安全地重试这些逻辑,而不会导致数据不一致或其他问题。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/621611

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
支付系统35-----支付成功异步通知----数据锁,微信那边是有一个服务器集群的,不单单是有一个通知发送过来,有可能有两台更多台的服务器发送过来,把锁加到我们处理通知里面,在对业务数据进行状态检查和
支付系统35-----支付成功异步通知----数据锁,微信那边是有一个服务器集群的,不单单是有一个通知发送过来,有可能有两台更多台的服务器发送过来,把锁加到我们处理通知里面,在对业务数据进行状态检查和
|
5月前
|
存储 消息中间件 小程序
从数据同步到异步通知:用户分群功能全揭秘
小米分享了开发用户分群功能的经验。面对数据同步问题,他们选择新建用户分群服务而非多数据源配置,以遵循微服务原则。为解决大规模通知发送导致的卡死,采用了异步处理,包括任务创建、数据查询和通知发送。在用户标签查询方面,通过精确存储和查询方法解决了标签重叠的误差。总结经验:合理拆分微服务,利用异步处理提升性能,确保精确查询。关注“软件求生”获取更多内容。
71 3
|
5月前
|
消息中间件 Java Unix
MQ产品使用合集之消费订单状态,订单消费待支付消息失败,是否会导致其他订单也没法消费
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
5月前
|
消息中间件 存储 缓存
中间件数据丢失与重复消费
中间件数据丢失与重复消费
43 1
|
负载均衡 网络性能优化
EMQ如何保证消息不重复消费?
EMQ(Erlang MQTT Broker)通过以下机制来保证消息不重复消费
727 2
|
消息中间件 存储 资源调度
订单超时怎么处理?我们用这种方案
在电商业务下,许多订单超时场景都在24小时以上,对于超时精度没有那么敏感,并且有海量订单需要批处理,推荐使用基于定时任务的跑批解决方案。
1486 1
订单超时怎么处理?我们用这种方案
|
消息中间件 存储 网络协议
多类型业务消息专题-事务消息 | 学习笔记
快速学习多类型业务消息专题-事务消息
136 0
多类型业务消息专题-事务消息 | 学习笔记
|
消息中间件 关系型数据库 MySQL
|
消息中间件 NoSQL Kafka

相关产品

  • 云消息队列 MQ