我正在开发 Spring Boot 微服务,该微服务与另一个微服务通信以使用 REST 接收一些数据。类似这样的事情:
public class PdfClient {
private ErternMicr externMicr;
@Autowired
public PdfClient(ErternMicr externMicr) {
this.externMicr = externMicr;
}
public String getData(String pdfId) {
String pdf = "0";
pdf = externMicr.getPdfData(pdfId);
return pdf;
}
}
因此,当调用这个 externMicr.getPdfData(pdfId)
时,我使用 REST 从另一个微服务获取一些数据。我需要做的是我不想等待很长时间才能接收数据,我想调用这个方法3次,每次10秒,如果这段时间没有数据到来,返回将是“0”。我怎样才能做到这一点?任何反馈将不胜感激!谢谢你!
最佳答案
有多种方法可以做到这一点,您可以尝试使用并发包中的执行器:
final ExecutorService restService = Executors.newSingleThreadExecutor();
try {
final Future<String> pdfFuture = restService.submit(() -> {
// PUT YOUR PDF CODE HERE
return pdf;
});
String pdfFile = pdfFuture.get(10, TimeUnit.SECONDS);
} catch (final TimeoutException e) {
// TIMEOUT!
return "0";
} finally {
restService.shutdown();
}
您可以将此作为您想要实现的目标的基础。
关于java - 如何使用 Java 和 Spring 在 REST Web 服务中 wait()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59936732/