P3a*_*arl 5 spring spring-data-jpa spring-boot project-reactor spring-webflux
我正在使用spring-data-jpa和spring webflux。当我使用ReactiveCrudRepository. 我收到以下错误:
org.springframework.dao.InvalidDataAccessApiUsageException: Reactive Repositories are not supported by DynamoDB. Offending repository is com.poc.crud.repository.EmployeeRepository!
Run Code Online (Sandbox Code Playgroud)
如果我延长 CrudRepository,并将响应与Mono.just(data-from-db)和Flux.just(data-from-db)然后每一件事情是罚款。
我的问题是,如何创建自定义泛型,ReactiveCrudRepository<T,ID>以便所有 crud 方法都返回 Mono 和 Flux 对象。
如果我使用 CrudRepository 扩展并使用 Mono.just(data-from-db) 和 Flux.just(data-from-db) 发送响应,那么一切都很好。
哇哦 - 不,不是。您可能认为这一切都很好,但这会将阻塞网络调用引入到反应链中,一旦您有几个并行运行的调用,速度就会严重减慢。更糟糕的是,您创建了一种“看起来”是反应性的方法,但实际上并非如此——通常称为“冒名顶替反应性方法”。
简而言之,不可能采用阻塞代码并使其具有反应性——将其包装起来Mono.just()是行不通的。该库必须从头开始异步构建。
坏消息是,据我所知,目前(2019 年 11 月)没有ReactiveCrudRepository对 DynamoDB 的存储库支持,所以如果你必须使用它,你会有点陷入困境。
好消息是,Amazon 现在确实为 DynamoDB 提供了一个异步客户端,您可以通过调用轻松地将 a 包装CompleteableFuture起来- 这样您就可以使用它来保持响应性并仍然拥有 DynamoDB 支持。MonoMono.fromFuture()
| 归档时间: |
|
| 查看次数: |
1032 次 |
| 最近记录: |