欢迎来到 榆林市某某餐饮管理培训学校
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
管理订单状态,该用上状态机吗?
  来源:榆林市某某餐饮管理培训学校  更新时间:2024-04-29 05:07:36

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

技术之路不迷路~

前言

在平常的管理该用后端项目开发中,状态机模式的订单使用其实没有大家想象中那么常见,笔者之前由于不在电商领域工作,状态很少在业务代码中用状态机来管理各种状态  ,上状一般都是态机手动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


友情链接wow不寻常的指南针有什么用 不寻常的指南针怎么获取摩尔庄园游戏中如何去放置家具? 摩尔庄园怎么换房子外观DNF全职业乱入LOL系列续 他们会有什么技能呢404 Page Not Found心悦麻将鞍山下载安装炸金花网页游戏,炸金花怎么完英雄联盟手游劫玩法攻略 劫天赋出装推荐原神三个匣子收集位置及方法介绍布里茨最强套路解析最新奇迹新开服发布网大全手游模拟器软件推荐:免费畅玩手机游戏仙剑奇侠传七破解版最新下载炉石传说新手礼包在哪领取 告诉你炉石里隐藏的新手福利阴阳师逢魔密信最新答案汇总2021云顶之弈新版裁决劫攻略:出装、羁绊、阵容搭配推荐仙剑奇侠传单机免费游戏最新下载防御阵型下载-防御阵型(98.55MB)绿色版猛男3D格斗破解版下载英雄联盟波比糖果工厂皮肤多少钱?2023274期3D记录适合一个人的网游叫什么 2023趣味性高的单机手游推荐《仙剑奇侠传6》激活教程 仙剑奇侠传6怎么激活dnf混沌魔灵怎么玩 2022混沌魔灵连招思路及职业详解密室逃脱1~19攻略(转载)万花攻略 从各方面看万花《火炬之光2》双持魔杖平A漂泊build攻略暗夜使者拼多多砍价攻略有哪些?怎么去砍价呢?王者荣耀火炮千金海报(孙尚香火炮千金什么时候返场)18c.mic王者荣耀北北北砂禁慢天堂天天即时看!ctm考古学所有奖励大全 wow考古学所有奖励大全魔兽世界怀旧服,武器战的PVE天赋怎么点比较好?lol皎月出装(lol皎月出装s12)Blue Alchemist(蓝色炼金术)技术为Blue Origin的月球未来提供动力猫和老鼠兑换商城有什么值得兑换的 S4限定礼盒怎么获得魔兽世界掉落怎么查询?掉落查询方法介绍金铲铲之战1.21极地寒冰阵容推荐:6北地阵容装备羁绊搭配攻略[多图]DNF泰波尔斯史诗制作多少材料阴阳师斗技排名在哪里看 斗技排名显示设置流程分享lol手游卢锡安怎么玩吉安娜的吊坠怎么获得(魔兽带传送功能的道具解析)
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.1766

Copyright © 2024 Powered by 榆林市某某餐饮管理培训学校   sitemap