我正在使用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从另一个微服务获取了一些数据。我需要做的是我不想等待很长时间才能接收到数据,我想每次10秒调用3次此方法,如果这段时间内没有收到数据,则返回值为“ 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();
}
您可以以此为基础来实现目标。