我正在构建一个Web服务,该服务处理来自嵌入式数据库的请求,该数据库本质上是一个文件。该文件定期被另一个进程替换。
服务必须检测此更改并更新文件引用。是否更好地驱动该请求,即每个请求检查是否有更新的版本或有后台线程这样做?
答案 0 :(得分:0)
我不会在每个请求上做任何与IO相关的事情。事实上,我认为服务本身不应该负责检查数据的新鲜度。所有它应该关心的是从源查找数据(执行一些非cpu密集的业务逻辑)并将其发出以便在实时Web应用程序的SLA安全范围内(我假设?)。您可以考虑以下可能性:
答案 1 :(得分:0)
我认为应该像后台进程一样通知订阅者注册事件。你可以使用文件监听器来实现这个目的。下面的例子是一个基于轮询的模型。
WatchService watcher = FileSystems.getDefault().newWatchService();
Path dir = Paths.get("Path/To/Watched/Directory");
dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);