我正在尝试编写一个简单的代码,它需要一些日期并使用响应式(Reactive) Elasticsearch 来处理它 这是代码片段 -
Mono<LastSuccessTime> lastSuccessTime = getLastSuccessTimeMono(brand);
lastSuccessTime.subscribe(x -> {
String lastTime = x.getLastSuccessTime();
log.info("*******test********** : " + lastTime);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String lastTimeStr = formatter.format(LocalDateTime.parse(lastTime, formatter).minusSeconds(10));
Flux<Player> savedPlayers = savePlayersFromDbService.savePlayersFromSpecificBrand(brand, lastTimeStr);
log.debug(":migrateForBrand: saved players for brand = " + brand + " are = " + savedPlayers);
});
lastSuccessTime 包含“1970-01-01”,我正在尝试将其打印出来,但似乎它没有这样做,看不到我丢失的内容
感谢您的帮助!
最佳答案
我认为您的代码中有一个错误: 订阅你创建了一个通量但不做任何事情 如果你想获得所有savedPayers,你应该订阅flux,然后打印每个元素。 你可以这样做。 Flux 具有惰性评估功能,因此如果您不订阅它,您将不会收到任何结果。
Mono<LastSuccessTime> lastSuccessTime = getLastSuccessTimeMono(brand);
lastSuccessTime.flatMapMany(x -> {
String lastTime = x.getLastSuccessTime();
log.info("*******test********** : " + lastTime);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String lastTimeStr = formatter.format(LocalDateTime.parse(lastTime, formatter).minusSeconds(10));
Flux<Player> savedPlayers = savePlayersFromDbService.savePlayersFromSpecificBrand(brand, lastTimeStr);
return savedPlayers;
})
.collectList()
.subscribe(players -> log.debug(":migrateForBrand: saved players for brand = " + brand + " are = " + players));
关于java - 无法订阅 Mono<XXX> spring webflux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60028907/