工作小记:异步线程中事务不生效的问题

在日常的开发中经常会遇到在线程池或者异常异步中执行自己的业务代码,lz最近在开发业务代码的时候也遇到一个类型的需求,因为请求处理的时间比较长,在设计接口的时候要求异步完成

直接上业务代码:

 

executeOccupyStock()方法也添加了事务 

在运行是抛了异常 数据库未回滚,作为有多年开发的经验的Lz同学,此时心里一万句CNM。。

 分析问题原因:

1.Spring的事务不支持跨线程 主要原因是spring的事务依赖当前线程的Connection对象 新建一个线程获取到的conection对象改变了 所以就不能支持进行提交或者回滚

2.虽然executeOccupyStock和sencodmentStockNotify在同一个spring bean中 但是不通过bean方式调用的话 apo不会进行拦截 

综上所述 解决方案 

1.将异步线程池操作 提到controller操作层

2.新建一个bean类 通过bean.method()的方式调用

 

 

 

 

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]的描述,当修改了nginx配置后,执行`nginx -s reload`命令时,发现配置文件没有生效。这可能是因为nginx的reload命令只会重新加载配置文件,但不会关闭已有的工作进程。因此,如果之前的工作进程仍在运行,新的配置可能不会生效。在这种情况下,需要通过执行`nginx -s stop`命令停止nginx,然后再执行`nginx`命令启动nginx,这样新的配置才会生效。 另外,根据引用\[2\]的描述,nginx的配置文件位于`/etc/nginx/nginx.conf`,在该文件,通过配置`upstream app{}`来定义后端服务的负载均衡。请确保在配置文件正确定义了后端服务的地址和端口,并且在`location`块配置了正确的请求路由。 如果以上方法仍然无法解决问题,建议参考引用\[3\]提供的官方文档或使用系统包管理工具(如yum)安装nginx,以确保安装的版本和配置正确。 #### 引用[.reference_title] - *1* [nginx -s reload没生效的问题](https://blog.csdn.net/qq_36715271/article/details/118339017)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [nginx 使用小记](https://blog.csdn.net/qingquanyingyue/article/details/109365544)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值