Page 1 of 1

So berechnen Sie die gesamte Prozesszeit in Java Reactive

Posted: 03 Jan 2025, 11:38
by Guest
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.

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()));
}
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.

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());
});;
}
Damit ist das Protokoll jedoch abgeschlossen, bevor der gesamte Fluss unter „verifyresult1“ aufgelöst ist