关于Mono用法的小问题。反应管道中出现错误(new MyCustomException())
我有一个非常简单的业务用例:使用Spring Webflow
因此,我写了以下内容:
@PostMapping(path = "/question")
public Mono<MyPojo> question(String key) {
return WebClient.create("http://first-service.com/get" + key).get().exchangeToMono(clientResponse -> clientResponse.bodyToMono(String.class)) //Mono<String>
.map(oneString -> convertOneStringToMyPojoIfStringIsEligible(oneString));
}
private MyPojo convertOneStringToMyPojoIfStringIsEligible(String oneString) {
if (oneString.startsWith("eligible")) {
return new MyPojo(oneString);
} else {
return Mono.error(new MyCustomException("oneString is not eligible.")); //This is not possible
}
}
请问正确的方法是什么?
如果可能,不要抛出RuntimeException,也不要使用flatMap Mono。就(新的MyPojo(一串))好吗?
谢谢你
除了@Toerktomlare在评论中建议的之外,另一个选择是将过滤器
与SwitchIf空
结合使用
WebClient.create("http://first-service.com/get" + key)
.get()
.exchangeToMono(clientResponse -> clientResponse.bodyToMono(String.class))
.filter(s -> s.startsWith("eligible"))
.map(s -> new MyPojo(s))
.switchIfEmpty(Mono.error(new RuntimeException("oneString is not eligible.")));
就个人而言,除非您需要访问除正文之外的响应的其他部分,否则我将默认使用ExchangeTomonio上的检索。虽然这只是个人喜好
WebClient.create("http://first-service.com/get" + key)
.get()
.retrieve()
.bodyToMono(String.class)
.filter(s -> s.startsWith("eligible"))
.map(s -> new MyPojo(s))
.switchIfEmpty(Mono.error(new RuntimeException("oneString is not eligible.")))
我正在处理一个反应式quarkus后端服务,它执行以下操作。 使用与postgres交互的Hibernate反应式Panache从后端获取记录列表 使用记录的标识符,从另一个远程服务获取数据 我正在使用Mutiny来执行反应式管道。远程服务和数据库集成都以非阻塞方式单独工作。我只是需要帮助写一个连接这些的管道。例如:下面的例子 我被困在处理统一包装列表,然后试图处理列表中的单个项目。要么是Uni
我觉得问这个有点尴尬,但我肯定我错过了什么。花了很长时间寻找/研究,但只想出复杂而错综复杂的解决方案,需要主题或行为主题或通过合并地图等管道。 在组件超文本标记语言模板中,我将从命令式HTTP可观察方法(手动订阅)转移到反应式HTTP可观察方法(可观察$|async)。 当页面初始化时,使用异步管道工作没有问题。 但是,什么是“动态”刷新模板的最佳方式,即我知道我已将一条记录插入基础数据库,并希望
当设置组件的初始状态时,使用通过道具传入的数据,我是否应该创建一个新的对象,执行类似于... 或者这样做是安全的...
悬而未决...
传递参数 链接管道 我们可以将多个管道连接在一起,以便在一个表达式中使用多个管道。
问题内容: 我在dsl作业中使用Active Choices反应参考参数插件,此处代码 我现在想要的是如何在jenkinsFile中使用activeChoiceReactiveParam进行管道作业,这很好,我做到了: 但是我怎么能添加choice2参数! 问题答案: 而不是我在下面做的使用 主动选择反应式参考参数 ,它工作正常!