gpt4 book ai didi

java - Feign 客户端是否有瓶颈的本地实现?

转载 作者:行者123 更新时间:2023-12-02 11:21:50 27 4
gpt4 key购买 nike

我面临以下情况,令我惊讶的是,我找不到太多文档:有一项服务仅通过一一获取项目详细信息来提供休息调用。总共有 1000 多个项目。

出于响应能力的原因,我想将这些数据保留在我的一端,而不是懒惰地获取它。

为了使我的 API key 不被锁定,我想将我的调用限制为 X 次调用/秒。

我在 Feign 文档中找不到对此的任何支持。有人知道有吗?或者您对如何实现此实现有任何建议吗?

最佳答案

Feign 中没有内置的节流功能,而是委托(delegate)给底层的 Client 实现。话虽如此,您可以定义自己的客户端,从提供的客户端之一扩展,Apache HttpOkHttpRibbon

一种解决方案是扩展Client以使用ScheduledThreadPoolExecutor,如本答案中所述。 Apache HttpClient: Limit total calls per second

要将其与 Feign 中提供的 ApacheHttpClient 一起使用,您可以扩展它,提供您自己的 execute 方法的实现以使用执行者。

public class ThrottledHttpClient extends ApacheHttpClient {
// create a pool with one thread, you'll control the flow later.
private final ExecutorService throttledQueue = Executors.newScheduledThreadPool(1);

@Override
public Response execute(Request request, Request.Options options) throws IOException {
// use the executor
ScheduledFuture<Response> future = throttledQueue.scheduleAtFixedRate(super.execute(), ....);
return future.get()
}

设置适当的线程池大小、延迟和固定等待以获得您想要的吞吐量。

关于java - Feign 客户端是否有瓶颈的本地实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49855210/

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