当使用Schedulers.boundedElastic()时,如何在webflux中正确登录? &g



我有下面的代码,没有一个日志记录器被打印出来。

  • 我尝试没有Schedulers.boundedElastic(),然后它工作得很好。
  • 我也尝试了Schedulers.boundedElastic()和Thread。睡在订阅外面,然后它工作。

不工作:

class Foo1 {
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(Foo1.class);
@Test
public void test1() throws InterruptedException {
Mono.just("Input Data").flatMap(msg -> {
try {
logger.info("Message input in logger");
// Some functionality
return Mono.just("Message processed");
} catch (Exception e) {
logger.error(e.toString());
return Mono.just("Message not processed");
}
}).doOnNext(res -> logger.info(res)).subscribeOn(Schedulers.boundedElastic())
.subscribe(c -> logger.info("subscribe completed"));
}
}

class Foo1 {
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(Foo1.class);

@Test
public void test1() throws InterruptedException {
Mono.just("Input Data").flatMap(msg -> {
try {
logger.info("Message input in logger");
// Some functionality
return Mono.just("Message processed");
} catch (Exception e) {
logger.error(e.toString());
return Mono.just("Message not processed");
}
}).subscribe(c -> logger.info("subscribe completed"));
}
}

我想异步执行逻辑,但是应该打印日志。

如何在不丢失异步功能和不使用线程的情况下实现这一点。显式地睡觉?

使用block,不使用subscribe,也可以订阅.doFinally(sig -> latch.countDown())

相关内容

  • 没有找到相关文章

最新更新