【问题标题】:Caching based on Cache-Control Headers with Feign Client基于 Cache-Control Headers 和 Feign 客户端的缓存
【发布时间】:2020-03-26 17:53:01
【问题描述】:

我们正在从 HttpClient 转移到现在使用 RestTemplate,甚至更好的 FeignClient。但看看https://github.com/OpenFeign/feign,似乎响应缓存在 feign 11 的路线图中。

我正在研究编写自定义机制以支持基于缓存控制标头的缓存的可能性。我将尝试通过示例来解释这一点

服务 A 公开了一个 API /greet/{name}。此 API 发送 max-age 响应头,以便客户端可以缓存响应。

服务 B 使用 FeignClient 调用此 API

下面是 Feign 接口示例。

@FeignClient(name="app/app", contextId="AppService", configuration=AppConfig.class)
public interface AppFeignService {

    @GET
    @Path(value = "/api/greet/{name}")
    public String greet(@PathParam("name") String name);
}

支持缓存的一种方式是,在feign客户端之上添加一个中间层,根据需要缓存响应。但这会将缓存逻辑带到客户端,我想确保缓存多少(max-age 标头)的决定应该留给服务器,而客户端不应该驱动它。

这里的问题是——我们知道什么时候可以期待 Feign 中的缓存支持吗?有没有我们可以采用的临时解决方案来仍然支持缓存?考虑到 Feign 的抽象性,它确实很棒,我们真的不想编写代码来使用 RestTemplate 调用它。

我们非常感谢您的建议。

【问题讨论】:

    标签: java rest caching resttemplate feign


    【解决方案1】:

    我实际上正在构建自己的爱好应用程序,并且正在考虑完全相同的事情,然后我遇到了您的问题。到目前为止,我决定使用okhttpClient 作为我的微服务的代理(这个具有非常好的缓存支持)。我正在使用弹簧靴。我正在寻找一种方法来做到这一点。 因此,来自 Fiegn 客户端的每个请求都将首先通过缓存支持访问我的 okhttp 客户端,然后它将发挥所有作用,将请求转发到 eureka 服务器 微服务。 我的微服务使用一个非常特定的 http 客户端来执行请求,我不想触及那部分。

    【讨论】:

      猜你喜欢
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-02
      • 1970-01-01
      • 2018-04-19
      • 2019-12-03
      • 2013-01-04
      相关资源
      最近更新 更多