0

我正在实现一个 Lagom 服务,该服务使用 Swift Stack 的 Joss 客户端调用外部服务。如何缓存此信息以便在每次调用我的服务时不调用外部服务?

4

2 回答 2

0

像这样使用 smth 来缓存 A 类的对象:

@Singleton
public class ACache {

    public final Cache<String, A> cache;

    public SplResultsCache() {
        this.cache = CacheBuilder.newBuilder().expireAfterWrite(60, TimeUnit.MINUTES).build();
    }

    public Cache<String, A> get(){
        return this.cache;
    }
}

您必须在您的模块中注册该服务:

bind(ACache.class).asEagerSingleton();

然后将其注入您的服务:

private SplResultsCache cache;

public AService(ACache cache) {
    this.cache = cache;
}

最后,您可以在 AService 的方法中使用它,如下所示:

A a = this.cache.get().getIfPresent(cacheKey);

您当然可以重载缓存的方法以直接访问它们。

于 2018-04-09T20:14:50.703 回答
0

您可以使用任何缓存库,例如 ehcache/guava。当您第一次调用外部服务时,您会将数据放入缓存中,下次您会在缓存中找到数据并从那里填充响应。

于 2017-12-19T17:56:46.140 回答