欢迎来到 汕尾市某某生物科技维修网点
全国咨询热线:020-123456789
联系我们

地址:联系地址联系地址联系地址

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
管理订单状态,该用上状态机吗?
  来源:汕尾市某某生物科技维修网点  更新时间:2024-05-08 23:53:47

管理订单状态,该用上状态机吗?

技术之路不迷路~

前言

在平常的管理该用后端项目开发中,状态机模式的订单使用其实没有大家想象中那么常见 ,笔者之前由于不在电商领域工作,状态很少在业务代码中用状态机来管理各种状态,上状一般都是态机手动get/set状态值 。去年笔者进入了电商领域从事后端开发 。管理该用电商领域,订单状态又多又复杂,状态如果仍然在业务代码中东一块西一块维护状态值,上状很容易陷入出了问题难于Debug,态机难于追责的管理该用窘境 。

碰巧有个新启动的订单项目需要进行订单状态的管理,我着手将Spring StateMachine接入了进来 ,状态管理购物订单状态,上状不得不说  ,态机Spring StateMachine全家桶的文档写的是不错,并且Spring StateMachine也是有官方背书的。但是,它实在是太”重“了,想要简单修改一个订单的状态,需要十分复杂的代码来实现。具体就不在这里展开了 ,不然我感觉可以吐槽一整天 。

说到底Spring StateMachine上手难度非常大,如果没有用来做重型状态机的需求,十分不推荐普通的小项目进行接入 。

最最重要的是 ,由于Spring StateMachine状态机实例不是无状态的 ,无法做到线程安全 ,所以代码要么需要使用锁同步 ,要么需要用Threadlocal,非常的痛苦和难用 。例如下面的Spring StateMachine代码就用了重量级锁保证线程安全 ,在高并发的互联网应用中 ,这种频繁的获取释放锁会造成严重的性能问题 。

private synchronized boolean sendEvent(Message<PurchaseOrderEvent> message, OrderEntity orderEntity) {
boolean result = false;
try {
stateMachine.start;
// 尝试恢复状态机状态
persister.restore(stateMachine, orderEntity);
// 执行事件
result = stateMachine.sendEvent(message);
// 持久化状态机状态
persister.persist(stateMachine, (OrderEntity) message.getHeaders.get("purchaseOrder"));
} catch (Exception e) {
log.error("sendEvent error


友情链接《最强蜗牛》乌龟剧情怎么过 乌龟剧情通关流程攻略《生化危机0HD重制版》图文攻略 全剧情收集图文攻略皇帝成长计划2:刘湛 :先帝非容易创立基业,今一旦弃之,吾宁死不辱也(上)【命运方舟】黑牙,尼亚,妮娜芙好感度送礼区间汇总三国志英杰传 攻略(三国志英杰传威力加强攻略)智代后记:美丽的生活官居几品剧情版破解版 v1.2 安卓属性修改版三国志战略版攻略战法怎么搭古墓丽影崛起攻略2021年双十一有哪些省心攻略?弓箭传说刷装备/刷卷轴/刷金币操作教程:附抽宝箱VS黑市对比[视频][多图]《哔哩哔哩》2023年硬核会员题库答案大全UNI地图小百科——《伏魔战记beta》【攻略】最强蜗牛天使形态全方位攻略!《红楼梦》全人物文字流程攻略三国志9攻略三国志7详细攻略321世纪初香港历年票房榜TOP10盘点,刘德华和周星驰各领风骚【基德游戏】怪物猎人崛起攻略-速射放散弹弹轻弩毕业配装推荐《延禧攻略》大结局:魏璎珞能笑到最后靠的是这13项技能三国志英杰传攻略?三国英杰传全攻略三国志战略版爆仓升7本详细攻略 爆仓七本怎么操作旅游攻略,自由行,自助游攻略,旅游社交分享网站最终幻想7核心危机 魔晶石配装/合成旅游攻略APP全面H5 蚂蜂窝扩大移动布局口袋妖怪三神兽金银水晶捕获经验攻略三国志9刘备联动组合(三国志9刘备剧本攻略)王国保卫战前线怎么快速升级 王国保卫战前线快速升级攻略梦幻新诛仙四大输出门派PVP天书路线选择攻略密室逃脱7环游世界全部关卡攻略(密室逃脱7全关卡通关攻略大全)口袋白金光汉化版攻略,口袋妖怪白金光攻略用什么技能可以推箱子上古传说刀剑封魔录修改器攻略吞食天地攻略(三国志之吞食天地完全版攻略)最强蜗牛地图2048怎么玩 教你如何快速拼出2048攻略三国志10威力加强版攻略:战史模式剧情攻略2048游戏通关攻略,数字游戏2048怎么玩超详细规则玩法攻略说明战就战(462.9M)下载:战就战礼包大全 礼包和激活码领取攻略贪婪洞窟2大剑攻略汇总 暴击战魂流vs追击报复流新剑侠情缘攻略之烹饪玩法(什么等级可以开启烹饪系统)
联系我们

地址:联系地址联系地址联系地址

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.2307

Copyright © 2024 Powered by 汕尾市某某生物科技维修网点   sitemap