关于Spring事务的一个问题
2018-01-18 00:00
399 查看
使用HttpClient 调取一个微服务的接口,返回json格式,数据量较大,我拿到数据后做格式化处理。
调用时报出 一个超时,还有一个 JTA transaction unexpectedly rolled back,后来一步一步debug看,微服务的接口返回时要达到九秒多才返回,而我这边没有等到它返回数据,就直接结束事务往下执行了
由此我想到可能是事务超时,
1·于是我加大了HttpClient的超时时间,---不好使
2·加大我事务的时间----也不行
后来想到我只是一个读的操作,根本不需要事务,而我的项目里面是开启了全局事务,我不能去把全局的事务时间改了而影响到别的操作,就用了@Transactional这个注解
而这个注解里面的参数比较多,具体用到哪一个,我认为我的这个接口只是调取数据然后做显示,并没有去操作数据库,并不需要加入Spring的事务中,而数据库的事务根本不涉及更无可谈
看了这篇帖子 https://www.cnblogs.com/yepei/p/4716112.html 里面有这么一个描述
TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则把当前事务挂起。
首先我确定不需要事务,其次我的接口里是有事务的,能够符合我需求的,我看到只有这个,于是加在业务层接口上这一句
后来看到说可以加上只读,但是只读事务用于客户代码只读但不修改数据的情形,只读事务用于特定情景下的优化,我是有拿到数据做处理,所以此处不适用加只读
总结:
归根结底其实就是事务超时的原因,其实并不是一个大的Bug,只是这里面很多小细节自己没有留意到,记一下长个记性
调用时报出 一个超时,还有一个 JTA transaction unexpectedly rolled back,后来一步一步debug看,微服务的接口返回时要达到九秒多才返回,而我这边没有等到它返回数据,就直接结束事务往下执行了
由此我想到可能是事务超时,
1·于是我加大了HttpClient的超时时间,---不好使
2·加大我事务的时间----也不行
后来想到我只是一个读的操作,根本不需要事务,而我的项目里面是开启了全局事务,我不能去把全局的事务时间改了而影响到别的操作,就用了@Transactional这个注解
@Transactional
而这个注解里面的参数比较多,具体用到哪一个,我认为我的这个接口只是调取数据然后做显示,并没有去操作数据库,并不需要加入Spring的事务中,而数据库的事务根本不涉及更无可谈
看了这篇帖子 https://www.cnblogs.com/yepei/p/4716112.html 里面有这么一个描述
TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则把当前事务挂起。
首先我确定不需要事务,其次我的接口里是有事务的,能够符合我需求的,我看到只有这个,于是加在业务层接口上这一句
@Transactional(propagation= Propagation.NOT_SUPPORTED)
后来看到说可以加上只读,但是只读事务用于客户代码只读但不修改数据的情形,只读事务用于特定情景下的优化,我是有拿到数据做处理,所以此处不适用加只读
@Transactional(propagation= Propagation.NOT_SUPPORTED,readOnly = true)
总结:
归根结底其实就是事务超时的原因,其实并不是一个大的Bug,只是这里面很多小细节自己没有留意到,记一下长个记性
相关文章推荐
- 关于Spring事务代理类型转换问题($ProxyXX cannot be cast to 类型)(一)
- Spring中事务管理与Hibernate自带事务管理冲突的一个问题
- Spring中关于classpath:和classpath*:前缀的一个小问题
- 关于Spring事务回滚的问题
- 关于Spring 声明式事务处理时,throws exception不回滚的问题
- 关于Spring事务回滚的问题
- 今天用spring 事务出了一个很郁闷的问题
- 关于Spring事务回滚的问题
- 关于Spring boot打war包部署在tomcat上的一个问题
- 关于Spring配置事务传播属性时的一个小技巧
- Javaweb-------mybatis+springmvc关于实体类使用注解的一个问题
- 一些关于hibernate 与 spring 事务管理的问题
- 关于Spring事务的问题
- 一个关于Mysql事务的罕见问题
- 关于Spring事务代理类型转换问题($ProxyXX cannot be cast to 类型)(二)
- 关于spring3.0 后的 事务注解管理指定数据源问题
- 关于spring管理下的事务不起作用的问题。
- 关于spring restful使用中遇到的一个性能问题
- 关于mule中Spring使用中的一个问题
- 关于Spring事务回滚的问题