@Transaction(timeout = 2) 不适用于 R2DBC

问题描述 投票:0回答:1

我有连接到 Postgres DB 的 Spring Boot 应用程序 3.2.5 应用程序,我正在使用 Spring Reactor 和 R2DBCRepository。

我有一个扩展 R2dbcRepository 的 Dao 类

interface ListDao extends R2dbcRepository<ListEntity, UUID> {

}

一个存储库,其中我有一个带有

@Transaction
注释的方法

@Repository
class GeneralListRepository {

 @Autowired
 private ListDao dao;

 @Transactional(timeout = 1)
    public Mono<GeneralList> createGeneralList(GeneralList list) {
        return dao.save(new ListEntity(list))
                .delayElement(Duration.ofSeconds(3));
     }

}

这是从服务层调用的

@Service
class GeneralListRepository {

    public Mono<GeneralList> createList(GeneralList list) {
        return repository.createGeneralList(list);
     }
}

我的代码比这个更复杂,但重点是我期望看到由于 .delayElement 而导致的超时,我没有看到......在我当前的代码中,有一组插入可以需要比 15 秒更长的时间...所以我有 10 秒的超时,但它不起作用...

我也使用 ToxyProxy 对此进行了测试以添加延迟,但仍然不会超时...

另一方面,使用R2DBC时是否有默认的事务超时?我已经测试过延迟响应大约5分钟...但仍然没有超时,我预计30秒...

spring-webflux spring-transactions r2dbc
1个回答
0
投票

您使用哪个版本?检查您在项目中使用的最后一个版本

© www.soinside.com 2019 - 2024. All rights reserved.