如何解决如果geode具有部分数据并且外部数据源中存在其他数据,我如何从apache geode获取完整数据
我有一个 apache geode 设置。我已将 geode 与外部数据源 postgres 连接。有一种情况,我在 apache geode 中几乎没有数据,其余的都在 postgres 中。我正在使用查询服务来获取数据,当我触发查询时,我希望 apache geode 应该向我提供存在于其服务器和 postgres 中的数据(对于 apache geode 中不存在的数据)。我该如何继续?
我已加载缓存,如果 Apache Geode 中不存在数据,则会加载该缓存。
'''
@服务
公共类 QuoteLoader 实现 CacheLoader
private static Logger logger = LoggerFactory.getLogger(QuoteLoader.class);
@Autowired
EmployeeImpl employeeImpl;
@Autowired
EmployeeRepository employeeRepository;
public QuoteLoader() {
}
@Override
public void init(Properties props) {
}
@Override
public void close() {
}
@Override
public Employee load(LoaderHelper<String,Employee> helper) throws CacheLoaderException {
Employee value = null;
try {
value = employeeImpl.getEmployeeById(Long.valueOf(helper.getKey()));
} catch (Exception e) {
e.printstacktrace();
logger.error("Error Occured",e);
}
return value;
}
} '''
解决方法
查询引擎只执行 OQL
并返回结果,在查询执行期间不会调用任何 CacheLoader
。 CacheLoader
仅在执行 Region.get(key)
操作时出现缓存未命中时才会调用。
如果你仔细想想,这是完全有道理的......查询是一个可以返回任何结果(包括无)的任意字符串,因此查询引擎无法知道一个条目是否应该是其一部分如果 Geode 区域中不存在实际条目,则返回结果与否。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。