by Guest » 03 Jan 2025, 14:04
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
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]public Flux verifyStuff(){
return client.getSomeData1(query)
.doOnNext(
result1 -> log.info("Retrieved '{}' ", result1.size()))
.flatMapMany(result1 -> Flux.fromStream(result1.stream())
.concatMap(this::verifyresult1()));
}
[/code]
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]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());
});;
}
[/code]
Damit ist das Protokoll jedoch abgeschlossen, bevor der gesamte Fluss unter „verifyresult1“ aufgelöst ist