gpt4 book ai didi

java - 按顺序使用 REST API,多线程环境中每次调用之间至少间隔 100 毫秒。 (带 RestTemplate)

转载 作者:行者123 更新时间:2023-12-02 02:26:49 25 4
gpt4 key购买 nike

我有一个使用 REST Web 服务的高度并发环境。 REST 服务文档表示,每次调用 API 时应至少间隔 100 毫秒(每秒 10 次调用)。此外,REST API 不支持并发调用。它们应该一个接一个地进行,在触发另一个请求之前等待响应。我采用的方法是:

private static RestTemplate restTemplate; // Rest template configured and working.

public ResponseEntity<T> consume() {
...
try {
synchronized (restTemplate) { // Locking on static RestTemplate.
response = restTemplate.exchange(endpointUrl, httpMethod, request, classType, uriData);

try {
restTemplate.wait(100); // Is this OK?
} catch (final InterruptedException e) {
e.printStackTrace();
}
}

return response;
} catch (final HttpStatusCodeException e) {
throw new RuntimeException(e.getResponseBodyAsString(), e);
}
}

正确吗?谢谢!

最佳答案

这在很大程度上取决于您想要实现的目标。您发布的代码很可能不完整,因此很难给出准确的解决方案。此外,它也执行相同的请求 我的猜测是每次都应该有所不同(uriData 或请求)。

您需要调用多少个电话?如果答案是固定数字,则很可能使用 forThread.sleep(100); 可能就足够了。否则,如果您有不同的事件触发对此服务的调用并且参数不同,我将有一个阻塞队列和一个将消耗并 sleep 100 毫秒的线程。生产者将添加到队列中,并且将有一个消费者,如果队列中有东西,它将以 100 毫秒的间隔进行调用,否则,它将只是等待。

关于java - 按顺序使用 REST API,多线程环境中每次调用之间至少间隔 100 毫秒。 (带 RestTemplate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57248077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com