2

In einer Spring-Boot-Anwendung, die Netflix's Feign verwendet, um HTTP-Anforderungen an einen Dienst zu stellen, gibt es eine einfache Möglichkeit, diese zwischengespeicherten Werte automatisch zwischenzuspeichern und zurückzugeben. Der Cache sollte auf den Parametern basieren, die an die Anfrage übergeben wurden (ähnlich dem Memoisieren einer Funktion für X Minuten).So cachen Sie HTTP-Anfragen mit Netflix 'Feign-Bibliothek in einer Java Spring-App

Ich bin auf der Suche nach so etwas wie die @Cache Anmerkung unten:

@Component 
@FeignClient(value = "facebook", url = "${auth.facebook.url}") 
public interface FacebookClient { 
    @Cache(600) // Something like this. 
    @RequestMapping(method = RequestMethod.GET, value = "/debug_token?input_token={input_token}&access_token={access_token}") 
    Map debugToken(@PathVariable("input_token") String inputToken, @PathVariable("access_token") String appToken); 
} 

Natürlich habe ich es zwischenspeichern konnte mich um die FacebookClient einen Dekorateur verwenden, ich frage mich, ob es ein schneller war/weniger Code Art und Weise.

Antwort

0

Federn @Cacheable macht, was Sie brauchen.

enter link description here

+0

Danke für Tipp. Für andere, die dies lesen können, fand ich diese hilfreich: [1] (http://stackoverflow.com/questions/8181768/can-i-set-a-tll-for-cacheable) [2] (https: //github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-cache) – Alejandro

2

Feign nicht unterstützt Caching. Ich würde die JCache (JSR-107) bevorzugen und es vielleicht über die spring-boot-starter-cache described in the spring guide

JCache zu verwenden ist eine Abstraktion für die proprietäre Implementierung von ehcache, Hazelcast, ... so ist es möglich, die Umsetzung mit sehr geringer Auswirkung auf die Anwendung zu ändern . Zuerst würde ich lieber EhCache 3.