微服务模式订单支付系统
应用技术: SpringBoot
Mybatis
Dubbo
RocketMQ
Zookeeper
MySQL
应用工具: Twitter-Snowflake
RestTemplate
注意事项:
1. mybatis 逆向工程数据表名字不能太通用,容易引起于系统表名冲突
正例: shop_user
反例: user
2. mybatis 逆向工程 *.xml文件生成是追加式添加,在重新生成 *.xml 时,建议删除原 *.xml
xml内容重复,会抛出异常:java.lang.IllegalArgumentException: Result Maps collection already contains
3. pojo类 需要继承Serializable,才可以使用dubboRPC通信
4. mapper接口 需要添加注解 @Mapper
5. service.impl 服务需要添加:
@Component :添加注解 'spring @Service' , 使用原因: 避免与dubbo @Service冲突
@Service(interfaceClass = xxxxxxService.class) :该 service 为dubbo service
6. application 需要添加Dubbo配置 @EnableDubboConfiguration
7. 微服务模式下 dubbo.protocol端口不能重复,否则启动报错
8. 库存回退和扣减均存在并发问题,解决:
方案1: 数据库乐观锁
方案2: MQ+数据库乐观锁
方案3: 引入分布式锁(Redis Zookeeper) (未使用)
9. 8中解决方案2存在库存不足时,需要通过MQ异步通知订单服务问题
10. RocketMQ分布式事务:
方案1: rocketmq-client (推荐)
方案2: rocketmq-spring-boot-starter(2.0.3) (事务有问题,未解决..)
方案2问题测试:
rocketMQTemplate.sendMessageInTransaction 方法发送的消息,
在继承RocketMQLocalTransactionListener的类下方法
executeLocalTransaction中的,RocketMQLocalTransactionState.ROLLBACK 状态回滚无效,
消息仍然会被投递到方法 checkLocalTransaction,经过测试
在checkLocalTransaction 执行RocketMQLocalTransactionState.ROLLBACK也不能回滚消息,
消息被发送到队列,导致消费者消费了回滚消息.
同类方案1中测试:
TransactionMQProducer 的继承 TransactionListener的类下方法
executeLocalTransaction中的,LocalTransactionState.ROLLBACK_MESSAGE 回滚消息,
并不会将消息投递到方法 checkLocalTransaction,
在消费者端消费不到回滚消息
![avatar](https://profile-avatar.csdnimg.cn/5e18b54ba0f643e4947e42b1ba993bf5_rubys007.jpg!1)
白如意i
- 粉丝: 1w+
- 资源: 3209
最新资源
- (源码)基于Arduino的摩托车倾角计-Leanometer.zip
- 光伏三相并网技术:实现高效功率输出与稳定直流母线电压的逆变与滤波方案,光伏三相并网技术:实现高效功率输出与稳定直流母线电压的逆变策略探究,光伏三相并网: 1.光伏10kw+MPPT控制+两级式并网逆变
- (源码)基于ESP8266和WS2812B LED的LED矩阵魔法.zip
- 基于Matlab Simulink与Carsim联合仿真的分布式驱动电动汽车最优规则扭矩分配控制策略研究:直接横摆力矩控制与稳定性控制效果对比,分布式驱动电动汽车的最优直接横摆力矩控制与规则扭矩分配控
- 基于STM32F103的LED环境监测显示屏设计源码
- (源码)基于C语言的STM32F7xx TCPUDP网络编程示例.zip
- 基于电动汽车充放电灵活性的光伏出力利用率优化策略:一种能量调度方法与主要贡献,基于光伏出力利用率的电动汽车充电站能量调度策略:评估充放电灵活度,动态制定电价以提升光伏利用率并减少波动影响 ,考虑光伏出
- (源码)基于ESP32和Blink IoT应用的智能灌溉系统.zip
- 基于A星算法的扩展邻域路径规划策略:基于栅格地图的代码可复制性实践,基于A星算法的扩展邻域路径规划方法:基于栅格地图的代码可复制性研究,扩展邻域A* Astar astar路径规划 A星路径规划算法
- 基于5G技术的农业环境监测与智能决策支持系统设计源码
- NSSMA算法的Matlab实现:多目标优化与算法定制的综合研究,多目标黏菌优化算法(NSSMA)及其在工程应用中的实践与评价-基于Matlab的代码实现与优化研究,非支配排序多目标黏菌优化算法(N
- 基于Vue框架的校园论坛系统前端设计源码
- (源码)基于Arduino的TinyWebServer.zip
- 基于Java开发的rpsm_admin后台管理设计源码
- 基于傅里叶展开的岩土颗粒粗糙度计算方法及Matlab源代码实现,基于傅里叶展开的岩土颗粒粗糙度计算方法及Matlab源代码实现,岩土颗粒粗糙度计算,采用傅里叶展开 matlab源代码 生成颗粒均方根
- 基于Vue、JavaScript、CSS、HTML、TypeScript的机场楼打卡功能设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)