java - 如何使用 Java 和 Spring 在 REST Web 服务中 wait()?

标签 java spring rest spring-boot wait

我正在开发 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/

相关文章:

java - 在 Springboot 应用程序中使用 Rest Template 调用使用 @Async 注解的方法

java - Vert.x 如何将消息从 REST 传递/获取到消息总线?

javascript - 从 angularjs 调用 RESTful 服务的正确方法

java - 如何在MainActivity之外的另一个类中调用findViewById(R.id.textView)?

java - 如何将 JLabel 文本放在 JTextField 上

java - 如何使用 OutOfMemory 或 Stack Overflow 错误创建自己的 Controller 方法

spring - 从JSP发送参数到spring Controller

java - 当仅设置 id 而不是首先从数据库获取对象时,一对多不会在没有引用的情况下更新

java - REST:@autowired heavenService 上的 java.lang.NullPointerException

无需使用 byte[] 即可立即从流中提取 Java zip 文件