java - 如何在使用 Java 和 Spring 的 REST Web 服务中等待()?
问题描述
我正在开发一个 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”。我怎样才能做到这一点?任何反馈将不胜感激!谢谢!
解决方案
有几种方法可以做到这一点,您可以尝试使用并发包中的 Executor:
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();
}
您可以将此作为您要实现的目标的基础。
推荐阅读
- mysql - “交叉表”查询仅显示最近的结果
- regex - 三个字母和四个数字的正则表达式?
- cors - Akamai 是否可以将传入请求的 Origin 标头用作变量(用于填充 CORS Access-Control-Allow-Origin 标头)?
- mysql - 如何使用mysql中的两列对表数据进行分组
- c# - 将没有分隔符和 100 多列的 4 GB 固定列宽文本文件转换为修剪后的制表符分隔文件
- javascript - 我有办法在不影响 Javascript 滚动事件的情况下将 overflow-x: hidden 添加到 html 和 body 吗?
- python - 如何在django rest框架中根据Queryset返回结果?
- material-ui - 如何在 Material-UI 中为带有间距属性的按钮添加边距?
- java - Spring内部组件类不能使用外部类自动装配bean
- c - 'sprintf' 输出 9 到 12 个字节到大小为 9 的目标