Java 外国客户机是否有本机瓶颈实现?

Java 外国客户机是否有本机瓶颈实现?,java,spring-boot,netflix-feign,feign,Java,Spring Boot,Netflix Feign,Feign,我面临以下情况,令我惊讶的是,我找不到太多的文档: 有一个服务,它只通过逐个获取项目详细信息来提供rest调用。 总共有1k+个项目 出于响应性方面的原因,我希望将这些数据持久化,而不是懒洋洋地获取它们 为了使我的API密钥不被锁定,我想将我的调用限制为每秒X次调用 我在外文文档中找不到对此的任何支持。 有人知道有没有?或者您对如何执行此实现有什么建议吗?在Feign中没有内置的节流功能,该功能委托给底层客户端实现。也就是说,您可以定义自己的客户机,从所提供的客户机扩展而来,apachehttp

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

出于响应性方面的原因,我希望将这些数据持久化,而不是懒洋洋地获取它们

为了使我的API密钥不被锁定,我想将我的调用限制为每秒X次调用

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

Feign
中没有内置的节流功能,该功能委托给底层
客户端
实现。也就是说,您可以定义自己的客户机,从所提供的客户机扩展而来,
apachehttp
OkHttp
,以及
Ribbon

一种解决方案是扩展
客户机
以使用
ScheduledThreadPoolExecutor
,如本回答中所述。

要将它与
Feign
中提供的
ApacheHttpClient
一起使用,您可以扩展它,提供自己的
execute
方法实现来使用executor

public类ThrottledHttpClient扩展了ApacheHttpClient{
//创建一个只有一个线程的池,稍后您将控制流。
private final Executor Service throttledQueue=Executors.newScheduledThreadPool(1);
@凌驾
公共响应执行(请求、请求、请求、选项)抛出IOException{
//使用执行者
ScheduledFuture future=throttledQueue.scheduleAtFixedRate(super.execute(),…);
返回future.get()
}

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

Feign
中没有内置的节流功能,该功能被委托给底层
客户机
实现。因此,您可以定义自己的客户机,从提供的
Apache Ht扩展tp
OkHttp
功能区

一种解决方案是扩展
客户机
以使用
ScheduledThreadPoolExecutor
,如本回答中所述。

要将它与
Feign
中提供的
ApacheHttpClient
一起使用,您可以扩展它,提供自己的
execute
方法实现来使用executor

public类ThrottledHttpClient扩展了ApacheHttpClient{
//创建一个只有一个线程的池,稍后您将控制流。
private final Executor Service throttledQueue=Executors.newScheduledThreadPool(1);
@凌驾
公共响应执行(请求、请求、请求、选项)抛出IOException{
//使用执行者
ScheduledFuture future=throttledQueue.scheduleAtFixedRate(super.execute(),…);
返回future.get()
}

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

谢谢,我会检查它,并将其标记为正确答案,一旦我对所提到的资源进行了研究,我会检查它,并将其标记为正确答案,一旦我对所提到的资源进行了研究