@zhou333666
2017-08-11T10:33:15.000000Z
字数 1069
阅读 580
未分类
类型 | 顺序 | 回滚 | 说明 |
---|---|---|---|
事务(串行) | 有 | 无 | 事务启动时先检查预留资源,确保必然成功 |
事务(并行) | 无 | 有 | 无顺序的原因:有依赖的事务job先串行做好,再并行 |
并行任务 | 无 | 无 | job之间相互无影响 |
事务:
1. 服务能否提供(必然周日阿姨没有了)【实时确认成功】
并行任务:
1. 注册发优惠券【必然成功】
1. log
事务【转账】,2个job【A扣钱,B加钱】
1. 转账worker(串行):A-100,B+100【账户不存在】,A+100。
1. 转账worker(并行):B+100,A-100。最终一致,任意一个失败都回滚。每个job都有回滚逻辑。
事务【下单】,3个job【创建订单,创建工单,使用优惠券(修改状态)】
接口实现步骤
1. 根据业务字典生成业务示例
1. 通知业务执行
1. object.wait object.notify
通知业务执行:
1. MQ通知执行
1. jobList执行成功(如果执行失败,通知接口监听器执行失败)
1. 检查其他job有没有执行成功,全部执行成功,通知接口的监听器执行成功
接口实现步骤
1. 根据业务字典生成业务示例
1. 通知业务执行
1. 返回前端数据
通知业务执行
1. MQ通知执行
1. jobList执行成功,执行失败
1. 定时器检查,未成功执行的重新执行一次
列名 | 字段 | 类型 | NULL | 说明 |
---|---|---|---|---|
编号 | id | LONG | N | |
业务code | code | VARCHAR(50) | N | 业务。比如下单,发货。代表一个整体的业务 |
业务listCode | list_code | VARCHAR(50) | N | 业务明细编码 |
业务分类 | category | VARCHAR(50) | N | 并行事务,并行任务 |
规则 | regular | text | Y | json格式。比如{expiretime:0.5}代表过期时间30分钟 |
状态 | status | int | N |
列名 | 字段 | 类型 | NULL | 说明 |
---|---|---|---|---|
编号 | id | LONG | N | |
业务字典Id | check_list_id | LONG | N | |
业务分类 | category | VARCHAR(50) | N | 并行事务,并行任务 。 |
参数 | params | text | Y | 存放参数,json格式 |
执行结果 | result | int | N | 未执行,执行失败,执行成功 |
过期时间 | expiretime | Date | Y | null代表无过期时间 |
创建时间 | createtime | Date | N | |
状态 | status | int | N |