我有一个目前看起来像这样的方法:
protected void doHealthCheck(Health.Builder builder) {
try {
VaultHealth vaultHealth = this.webClient
.get()
.exchange()
.block()
.bodyToMono(VaultHealth.class)
.block();
if (vaultHealth.isInitialized() && !vaultHealth.isSealed() && !vaultHealth.isStandby()) {
builder.up();
return;
}
}
catch (Exception e) {
builder.down();
return;
}
builder.down();
}
我的理解是这是错误的。所以现在我正在考虑修复它,它应该是这样的:
this.webClient
.get()
.exchange()
.doOnSuccess(???)
.doOnError(Health.Builder::down);
. doOn成功将返回一个客户响应,我需要在调用Health之前实际检查响应中的内容。构建器::。
如果我调用. fletMap()而不是doOn成功,它会出现错误吗?或者我需要把它放在doOn成功中吗?如果我把它放在doOn成功中,似乎我需要做一个双重doOn成功(这不可能是正确的,是吗?):
.doOnSuccess(x -> x.bodyToMono(VaultHealth.class).doOnSuccess(y -> if (y...) builder.up())
此外,我假设如果我这样重组它,我不需要try/catch,因为doOnError会处理它?
虽然这个特殊的方法在操作完成后执行操作是有意义的,但是在我需要返回对象的情况下呢?我的另一个理解是,我永远不应该使用。布洛克,对吗?
Mono::flatMap
用于异步
操作。对WebClient的调用是一种“异步”操作,因此您通常需要在WebClient::exchange
方法之后使用Mono: flMap
。不,您永远不应该在“WebFlux”应用程序中使用Mono::block
。与其使用您拥有的,不如使用反应式方式:
public void run(ApplicationArguments args) throws Exception {
Health.Builder healthBuilder = new Health.Builder();
healthBuilder.down();
doHealthCheck(healthBuilder).onErrorReturn(healthBuilder).map(Health.Builder::build).subscribe(System.out::println);
}
protected Mono<Health.Builder> doHealthCheck( Health.Builder builder) {
return webClient
.get()
.retrieve()
.bodyToMono(VaultHealth.class)
.map(vaultHealth->{
if (vaultHealth.isInitialized() && !vaultHealth.isSealed() && !vaultHealth.isStandby())
builder.up();
else
builder.down();
return builder;
});
}
说我有以下课程 和 当我调用超级构造函数时,如何保证子构造函数调用“正确”的构造函数?更具体地说,我希望100%确保我传入的三个字符串值确实设置为父级中的正确字段,而不是设置为item1 in的字段。 我知道我可以,例如: 显式创建我自己的所有参数构造函数 在子构造函数中,调用父构造函数的所有setter 但是我只是好奇Lombok是否足够聪明,以某种方式,将子类中的字段设置为父类中正确的字段?
我使用cakephp2.3,并试图分页查询检索我的所有'工作'在一定的英里半径内。幸运的是,我找到了我认为我需要的查询,但是我在获取正确的数据时遇到了问题。 编辑,使每个“作业”记录都有一个lat和lng字段,另一个用户通过在搜索表单中输入自己的lat和lng值以及英里半径来执行搜索。在下面的代码中,php变量$lat$lng和$miles在我的分页器中是用户输入的搜索参数。 我在这里找到的查询h
我正在尝试使用JSoup获取此URL http://betatruebaonline.com/img/parte/330/ciguen%c3%91al.jpg 相反,正确的 http://betatruebaonline.com/img/parte/330/ciguen%cc%83al.jpg 我该怎么解决这个?多谢了。
很抱歉,如果这是我忽略的非常简单的事情,但我正在尝试制作一个组件,它基本上只将某些react路由器路由限制为具有活动令牌的用户。 看起来(正如预期的那样)只有“console.log(result)”执行了挂起的promise,但在最终结果中,我试图将一些逻辑编码到从后端给出的响应中(true或false),然后这些逻辑应该发送到privaterout组件,以确定是否应该将用户发送回登录,等等。。
所以这就是我试过的。有更好的方法吗?
问题内容: 我需要能够构建go应用程序的不同版本;“调试”版本和普通版本。 这很容易做到;我只是有一个const DEBUG,它控制应用程序的行为,但是每次我需要在构建类型之间进行交换时,都必须编辑配置文件,这很烦人。 我正在阅读有关go build(http://golang.org/pkg/go/build/)和标签的信息,我想也许我可以这样做: config.go: config.debug