哪个java框架或lib用于首先检查db或cache中的数据

时间:2015-11-27 08:51:22

标签: java database spring caching

我有一个java应用程序。我的应用程序调用外部服务,然后将数据存储到数据库中。我想首先在db中检查记录,如果没有找到,则调用外部服务。我不想为此使用手工制作的解决方案,我希望有一个库或框架可以做到这一点。我使用spring和hibernate 4.我能做些什么来尽可能优雅地做到这一点?

1 个答案:

答案 0 :(得分:0)

除非您对可以对外部系统进行的呼叫数量有严格限制,否则您可能需要考虑同时执行两个呼叫并使用先响应的任何一个。

// Create futures for the two tasks to run concurrently
CompletableFuture<MyObject> checkCache = CompletableFuture.supplyAsync(() -> cache.lookup(key));
CompletableFuture<MyObject> callExternal = CompletableFuture.supplyAsync(() -> externalService.lookup(key));
// run the two operations, and react to the first to complete
checkCache.applyToEither(callExternal, 
                         result -> {
                             cache.store(key, result);
                             return result;
                         })
           .applyTo(result -> // do something with the returned value);

这是使用Java 8,但如果您使用的是早期版本的Java,则可以使用Guava等。