So berechnen Sie die gesamte Prozesszeit in Java Reactive
Posted: 03 Jan 2025, 11:38
Ich habe eine reaktive Java-Spring-Boot-App, in der ich die folgende Logik ausführe: Ich möchte protokollieren, wie viel Zeit es dauert, diese gesamte Methode abzuschließen. Ich kann die Methodensignatur ändern, möchte sie aber beibehalten.
Die Methode ruft also tatsächlich reaktiv eine Ergebnisliste ab und ruft nacheinander einen anderen Dienst auf.
Ich habe versucht, elapsed() zu verwenden, komme mir aber nicht aus der Fassung herum, wie es funktioniert.
Auch die folgende Version ausprobiert.
Damit ist das Protokoll jedoch abgeschlossen, bevor der gesamte Fluss unter „verifyresult1“ aufgelöst ist
Code: Select all
public Flux verifyStuff(){
return client.getSomeData1(query)
.doOnNext(
result1 -> log.info("Retrieved '{}' ", result1.size()))
.flatMapMany(result1 -> Flux.fromStream(result1.stream())
.concatMap(this::verifyresult1()));
}
Ich habe versucht, elapsed() zu verwenden, komme mir aber nicht aus der Fassung herum, wie es funktioniert.
Auch die folgende Version ausprobiert.
Code: Select all
public Flux verifyStuff(){
StopWatch stopWatch = new StopWatch();
stopWatch.start();
return client.getSomeData1(query)
.doOnNext(
result1 -> log.info("Retrieved '{}' ", result1.size()))
.flatMapMany(result1 -> Flux.fromStream(result1.stream())
.concatMap(this::verifyresult1())
.doFinally(signalType -> {
stopWatch.stop();
log.info("To execution time for verifying marketplace partners is {}ms",
stopWatch.getTotalTimeMillis());
});;
}