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

问题描述 投票:0回答:1

我正在使用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”。我怎样才能做到这一点?任何反馈将不胜感激!谢谢!

java spring rest spring-boot wait
1个回答
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();
}

您可以以此为基础来实现目标。

© www.soinside.com 2019 - 2024. All rights reserved.