繁体   English   中英

Spring 启动应用程序卡在事务 requried_new

[英]Spring boot application stuck with Transaction requried_new

我在 spring 启动应用程序中有一个调度程序,如果我在调度程序方法上使用 @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) 那么它只适用于一个数据库 session 但如果我使用 @Transactional.Transaction. REQUIRES_NEW, rollbackFor = Exception.class) 在 DAO 级别或服务 class 级别,基于数据的四个 DAO/服务将 go 到其中一个 DAO,它达到 maxConnection 限制 16,正如我们在数据库会话中看到的那样,它没有卡住/挂起在 java 中处理。 会有什么问题。?

这实际上取决于您调用方法的方式。

我会要求你做的一项测试是:

schedule方法中添加:

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)

然后,在Service方法中,这个:

@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)

这样,当服务方法结束时,它会提交事务,但是还有另一个事务 scope 在更高级别运行。

基本上,调度程序方法中的所有处理都应该在一个事务中进行管理,因此注释应该在它上面(第一种方法)。

如果您在服务/DAO 方法中添加此注释,那么对于在您内部调用的每个方法,都会创建一个新事务,这可以解释您所面临的问题。

最后不需要添加“rollbackFor = Exception.class”,因为这是默认行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM