Lagom:缓存外部服务电话

时间:2017-05-30 08:07:58

标签: caching lagom

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

final = join table1 by id, table2 by id;
dump final;

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

@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();

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

private SplResultsCache cache;

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

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