我目前正在与micronaut和kotlin一起工作。我有JPA查询,它产生大约一百万个结果。 我想将这些结果从一项微服务传输到另一项。
我的查询返回类型为allQuery.resultStream
的{{1}}。
发送服务的控制器:
java.util.stream
接收服务的客户
@Get("/test{value1,value2,value3}")
fun getTestObjects(
value1: String,
value2: String,
value3: String
): Stream<TestObject> {
val entries = testRepository.findAllWhere(value1, value2, value3)
return entries
}
JPA查询如下:
@Get("/data/test{value1,value2,value3}")
override fun getTestObjects(alue1: String,
value2: String,
value3: String) : Stream<TestObject>
我的预期输出将是一种具有推后调节功能的Flowable,并且由于没有足够的内存而没有发送服务先将所有对象都放入内存的情况。
答案 0 :(得分:3)
基本上,您只需要创建一个Flowable
并发出可用的项目即可。
return Flowable.create(emitter -> {
//loop through result set
//for each item
emitter.onNext(item);
//If you encounter an error
emitter.onError(...);
//When you're done
emitter.onComplete();
})