I am calling a post endpoint that returns a Void
. I am trying to get the time elapsed.
It seems it is not calling an endpoint. doOnSuccess
is also not getting called.
public void createTask(CreateTaskDTO task) {
client
.post()
.uri(path)
.body(BodyInserters.fromValue(task))
.exchangeToMono(response -> response.bodyToMono(Void.class))
.elapsed()
.doOnSuccess(
tuple -> {
Status.incrementTaskCreationCount(task.getLoginIds().size());
Status.incrementWriteCount();
log.info(
"time taken by the ServiceImpl createTask=[{}] for {}",
tuple.getT1(),
task);
})
.map(Tuple2::getT2)
.subscribe();
}
CodePudding user response:
elapsed()
measures the time between when the Mono
is subscribed to and the moment the Mono
emits an item. But, Mono<Void>
response doesn't emit any value.
You can use thenReturn
to continue the sequence:
.exchangeToMono(response -> response.bodyToMono(Void.class))
.thenReturn(true)
.elapsed()