quarkus - 如何增加 Quarkus 中的事务超时?
问题描述
我的 application.properties 文件中有一些配置:
...
quarkus.datasource.url=jdbc:postgresql://...:5432/....
quarkus.datasource.driver=org.postgresql.Driver
quarkus.datasource.username=user
quarkus.datasource.password=password
quarkus.hibernate-orm.database.generation=update
...
我有一个带有 @Transactional 方法的调度程序,它需要很长时间才能完成执行:
@ApplicationScoped
class MyScheduler {
...
@Transactional
@Scheduled(every = "7200s")
open fun process() {
... my slow proccess goes here...
entityManager.persist(myObject)
}
}
然后,事务方法收到一个超时错误,如下所示:
2019-06-24 20:11:59,874 WARN [com.arj.ats.arjuna] (Transaction Reaper) ARJUNA012117: TransactionReaper::check timeout for TX 0:ffff0a000020:d58d:5cdad26e:81 in state RUN
2019-06-24 20:12:47,198 WARN [com.arj.ats.arjuna] (DefaultQuartzScheduler_Worker-3) ARJUNA012077: Abort called on already aborted atomic action 0:ffff0a000020:d58d:5cdad26e:81
Caused by: javax.transaction.RollbackException: ARJUNA016102: The transaction is not active! Uid is 0:ffff0a000020:d58d:5cdad26e:81
我相信我必须增加我的事务方法的超时时间。但我不知道我该怎么做。
有人可以帮助我吗?
谢谢!
解决方案
似乎这已经改变了 -> 现在可以设置事务超时:
https://quarkus.io/guides/transaction
您可以通过以下属性配置默认事务超时,即适用于事务管理器管理的所有事务的超时:
quarkus.transaction-manager.default-transaction-timeout = 240s
-> 指定为持续时间(java.time.Duration 格式)。默认为 60 秒
推荐阅读
- reactjs - ScrollView 位置在子组件重新渲染时重新启动(更新)
- vue.js - 使用 v-dialog 时超出最大调用堆栈大小
- python - Python Request Post 在韩国网站中没有正确响应
- json - 在 Zapier 中取消编码 json
- qt - 为什么 Qt Entity 类型不支持 states 属性?
- drake - 如何在 Drake 中获取物体的几何属性?
- c++ - 使用预编译头文件时自动在智能感知中包含头文件与 vscode
- python - 在 python 中,每个 URL 只得到 1 个结果(最后一个结果),而不是每个 URL 得到 60 个结果
- c# - Visual Studio 错误 CS0433:类型存在于两者中... (Unity-Accord.net)
- c - 将整数添加到字符的 ASCII 值