【发布时间】:2021-12-08 13:24:31
【问题描述】:
我有两个相互依赖的方法。
Flux<DataBuffer> flux = service1.get();
Mono<String> s = service2.store(flux);
service1.get() 返回 Flux<DataBuffer> 或 Flux.error 以防获取操作不成功。
service2.store(Flux<DataBuffer> flux)返回Mono<String>或Mono.error以防存储操作不成功。
Service2 是响应式 feign 客户端,它将数据存储到文件并返回引用。
我需要让 service2 调用依赖于 service1,但我想保留参数 Flux 并只调用每个方法一次。
目的是打电话给service2.store,以防service1.get成功回复。
例如
public Mono<String> mainMethod() {
return service1.get()
.unknownOperator(flux -> service2.store(flux))
.doOnError(e -> log.error(e.getMessage));
}
你能告诉我正确的运营商,而不是unknownOperator。
错误应该这样处理:
-
service1.get中的错误应被记录并从 mainMethod 返回。无法调用service2.store。 - 应该记录
service2.store中的错误并从mainMethod 返回。
【问题讨论】:
-
您的问题不清楚,您谈论的是
service1.get和service2.store,但稍后在最后一个示例中,您将调用service1.get和service.get(flux)。请更新您的问题以获得正确的代码示例,包括函数的所有返回类型。他们返回error还是返回empty,如果不同部分出错,您希望如何处理错误。 -
抱歉,我修复了示例,并添加了有关错误处理的详细信息。现在应该很清楚了。
标签: java spring-webflux project-reactor