社区
C#
帖子详情
跨业务事务应该如何控制?
yzy8788
2015-08-21 05:33:16
业务场景:调用短信接口,发送成功后扣除用户账户余额0.1元
if(短信发送成功)
{
user.money=user.money-0.1;
}
这个该如何控制事务呢?短信发送成功后,钱没扣成功咋整?
...全文
226
8
打赏
收藏
跨业务事务应该如何控制?
业务场景:调用短信接口,发送成功后扣除用户账户余额0.1元 if(短信发送成功) { user.money=user.money-0.1; } 这个该如何控制事务呢?短信发送成功后,钱没扣成功咋整?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jetable
2015-08-21
打赏
举报
回复
你调用的外部短信发送接口的话,是否发送成功不知道的,可能第三方会有个回调接口通知你或之后你调他的接口去查询是否发送成功了。这里我觉得没必要做事务,只要没有异常,发送给了第三方短信发送接口,正常扣款就行了。
以专业开发人员为伍
2015-08-21
打赏
举报
回复
更具体地说吧。比如如果我的下属跟我解释说”短信供应商那边一定有日志的“,那么我就会觉得这个项目可能没有找对人来做。实际,一个软件对程序设计师的要求是:“如果短信供应商那里发送失败,怎样确保找其它方式发送”,而不是要一个人人皆知的技术上的解释。
以专业开发人员为伍
2015-08-21
打赏
举报
回复
不是说仅仅靠随便几个日志,也不是说数据库事务概念。你可以想象一下,如果你找出任何技术的借口(比如你跟用户说“我记日记了啊?!),用户会用脚投票的。 你如果是经过10万次测试的,就往往比仅仅经过100次测试的东西,有不同的内涵。如过你不在一个皮包公司,那么你们就会对这种问题绝非这么简单地提出问题。
以专业开发人员为伍
2015-08-21
打赏
举报
回复
基本上,任何单纯说技术术语的做法,都不能解决业务设计问题。业务流程往往需要重构几十遍,除了有产品经理会帮你优化这个操作流程,还有测试人员,更主要地还有许多用户会逼着你重构流程。所以面对这种问题,就看一个人的素质有没有到那种可以随机应变地重构系统(但是不自相矛盾)的程序。没有一定的什么技术可抄。原则上,就是遵守业务的要求,最终会达到结果一致性、令人满意,而不是纠结暂时的技术。
该对象不能为空
2015-08-21
打赏
举报
回复
短信供应商那边一定有日志的。 你这边也要有个扣款日志。 对比一下就能发现哪些是没扣款的。 然后定时处理这些异常数据。
以专业开发人员为伍
2015-08-21
打赏
举报
回复
这是两码事,首先记住不要很悲哀地套用数据库的事务概念就行了。数据库事务是个纯粹数据库读写磁盘数据的概念,这千万不要随便套用在业务上。 有了基本的立场,其实就迎刃而解。你在手工操作中怎么做事?你会先掏出手机发短信,然后如果发不出去,你就会换其它手机发短信,再不行,你就会再换另外一个方式......你会千方百计把这个事儿给办了——而不是退回给用户。而对于扣费方法,你会先扣费,如果失败你就会重试,重试n次的同时你还会投诉并且找人解决,实在不行你会借用更高层的关系,如果最终实在还不行(连最高法院都拿对方没办法了)你会在自己的小黑本本上记一笔帐、以后再算。 软件的设计模式也是一样的。架构师会设计一个系统,确保发短信一定可以成功,扣费也一定可以成功,成功的人永远都是一样的,它用业务流程来做事。一些幼稚的学生才会用什么单纯而“总是为了自己省事儿”的技术借口来解释为什么失败的问题。
不断学习的ITer
2015-08-21
打赏
举报
回复
如果你是短信公司的,可以用事务。如果不是,只能记录日志,靠监控程序了。
娃都会打酱油了
2015-08-21
打赏
举报
回复
记日志,通过相应的修复程序来修正-1的行为
【漫谈】
跨
库
事务
控制
方案
首先,我们知道
跨
库的话,数据库层级是做不到
事务
控制
的,只能通过逻辑层实现
事务
控制
,那么本篇文章就给大家提供一种方案:利用中间表实现
跨
库
事务
控制
。 先大致讲述下方案: 新建中间库,在用户调用转账逻辑时...
事务
跨
库
事务
分布式
事务
及解决方案
什么是
事务
? 本地
事务
事务
传播行为:
事务
的四大特性 ACID 并发
事务
产生的问题可以分为4类
事务
的隔离级别 什么是分布式
事务
分布式涉及到的原理: CAP原理: BASE理论 柔性
事务
和刚性
事务
柔性
事务
分为:...
spring service层方法调用同类中的方法
事务
不生效?
有这样的一道面试题:在service层调用别的service层的方法,他们的
事务
能否生效;如果是在同一个类中调用带有@Transactional注解的方法,此时,他们的
事务
能否生效? 看了许多大神的blog,今天来做一下总结: 先给...
SpringCloud-8-
事务
控制
事务
控制
必须保证同一个连接,spring打个注解就解决了,但分布式里
控制
不住,可能是在自己微服务里同时调用三个微服务,不同数据库不同虚拟机不同ip地址,肯定
控制
不住。 解决方法: 1. 把关联性比较强的几个表放在...
微服务
跨
服务
事务
的实现
首先,实现主要
业务
的服务,必须保证具有
事务
一致性的特性,比如依赖于普通的RDMS。这时候如果发生
业务
,则同时向消息队列发布一条事件消息,这样其他的服务可以订阅这个消息,并对这个消息进行处理,并产生自己
业务
...
C#
110,534
社区成员
642,575
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章