我想使用 Micrometer 记录异步方法最终发生时的执行时间。有推荐的方法吗?
示例:Kafka 回复模板。我想记录实际执行 sendAndReceive 调用所需的时间(发送关于请求主题的消息并接收关于回复主题的响应)。
public Mono<String> sendRequest(Mono<String> request) {
return request
.map(r -> new ProducerRecord<String, String>(requestsTopic, r))
.map(pr -> {
pr.headers()
.add(new RecordHeader(KafkaHeaders.REPLY_TOPIC,
"reply-topic".getBytes()));
return pr;
})
.map(pr -> replyingKafkaTemplate.sendAndReceive(pr))
... // further maps, filters, etc.
就像是
responseGenerationTimer.record(() -> replyingKafkaTemplate.sendAndReceive(pr)))
不会在这里工作;它只记录创建 的时间Supplier
,而不是实际的执行时间。